क्या आप Amazon के बाहर Amazon Elasti youache Redis से जुड़ सकते हैं?


90

मैं EC2 उदाहरणों से VPC में ElastiCache Redis उदाहरण से कनेक्ट करने में सक्षम हूं । लेकिन मैं यह जानना चाहूंगा कि क्या अमेज़ॅन ईसी 2 उदाहरणों के बाहर एक इलास्टीचे रेडिस नोड से जुड़ने का एक तरीका है, जैसे कि मेरे स्थानीय देव सेटअप या अन्य विक्रेताओं द्वारा प्रदान किए गए वीपीएस उदाहरणों से।

वर्तमान में मेरे स्थानीय सेट से प्रयास करते समय:

redis-cli -h my-node-endpoint -p 6379

मुझे केवल कुछ समय के बाद टाइमआउट मिलता है।

जवाबों:


75

नहीं, आप बिना सुरंग के 'ट्रिक्स' का सहारा लिए बिना नहीं रह सकते, जो शायद परीक्षण के लिए ठीक है, लेकिन अतिरिक्त विलंबता / ओवरहेड के साथ सुपर-फास्ट कैश का उपयोग करने के किसी भी वास्तविक लाभ को मार देगा।

... VPC के अंदर या बाहर एक Amazon ElastiCache क्लस्टर, को इंटरनेट से एक्सेस करने की अनुमति नहीं है

यहाँ से: http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

EDIT 2018: ऊपर लिखित में यह उत्तर सटीक था, हालांकि अब इस पृष्ठ पर लगभग 1/2 रास्ता नीचे दिशाओं का उपयोग करके बाहर से रेडिस कैश तक पहुंचने के लिए कुछ कॉन्फ़िगरेशन के साथ संभव है: https://docs.aws.amazon.com/AmazonElastiCache /latest/red-ug/accessing-elasticache.html#access-from-outside-aws


1
क्या अभी भी यही मामला है? डॉक्स अब यह नहीं कहते हैं - वे दावा करते हैं कि रेडिस मानक सुरक्षा समूह नीतियों द्वारा शासित है, लेकिन मैं इसके बावजूद अपने रेडिस नोड तक पहुंच प्राप्त नहीं कर सकता। उस पर प्रहार करो। Ref बस चले गए: VPC के भीतर तैनात Amazon ElastiCache नोड्स को VPC के बाहर कभी भी इंटरनेट या EC2 इंस्टेंसेस से एक्सेस नहीं किया जा सकता है।
मेटलौरिएट

7
मुझे लगता है कि 'मारना' थोड़ा मजबूत है। उदाहरण के लिए, AWS (ऐसी सुरंग के माध्यम से) के बाहर अपने ऐप चलाने पर हमें कोई सराहनीय प्रदर्शन नहीं मिलता है। सुरंग के ओवरहेड्स डीबी संचालन, ब्राउज़र लोड, डिस्क I / O और इसी तरह की तुलना में शून्य से अधिक हैं।
मुस्कुराते हुए


94

SSH पोर्ट अग्रेषण को चाल करना चाहिए। इसे आप क्लाइंट से चलाने का प्रयास करें।

ssh -f -N -L 6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>

फिर अपने ग्राहक से

redis-cli -h 127.0.0.1 -p 6379

इससे मेरा काम बनता है।

कृपया ध्यान दें कि रेडिस के लिए डिफ़ॉल्ट पोर्ट 6379नहीं है 6739। यह भी सुनिश्चित करें कि आप EC2 नोड के सुरक्षा समूह को अनुमति दें जो आप अपने CIS सुरक्षा समूह में अपने रेडिस उदाहरण से कनेक्ट करने के लिए उपयोग कर रहे हैं।

इसके अलावा, AWS अब आपके क्लस्टर को अधिक जानकारी तक पहुँचाने का समर्थन करता है


पोर्ट को इंगित करने के लिए धन्यवाद, बस एक टाइपो। तो, क्या आप कह रहे हैं कि EC2 के माध्यम से SSH सुरंग बनाना अमेज़ॅन के बाहर एक इलास्टैच नोड तक पहुंच प्राप्त करने का एकमात्र तरीका है? धन्यवाद,
Loic Duros

यह अन्य उत्तर में उल्लिखित @EJBrennan की तरह ही सही है।
रिको

हम ssh पोर्ट को कैसे अग्रेषित कर सकते हैं ...?
मुथुकुमार के

आप ssh प्रक्रिया को मार सकते हैं। लिनक्स पर: kill -9 <pid>
रीको

27

ये उत्तर पुराने हैं।

आप इन चरणों का पालन करके AWS के बाहर इलास्टिक-कैश का उपयोग कर सकते हैं:

  1. अपने कैश क्लस्टर के समान VPC में लेकिन सार्वजनिक सबनेट में NAT उदाहरण बनाएँ।
  2. कैश क्लस्टर और NAT उदाहरण के लिए सुरक्षा समूह नियम बनाएँ।
  3. नियमों को मान्य करें।
  4. NAT उदाहरण के लिए एक iptables नियम जोड़ें।
  5. पुष्टि करें कि विश्वसनीय क्लाइंट क्लस्टर से कनेक्ट करने में सक्षम है।
  6. IPtables कॉन्फ़िगरेशन को सहेजें।

अधिक विस्तृत विवरण के लिए aws गाइड देखें:

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws


मुझे एक NAT उदाहरण नहीं चाहिए, मैं एक मिनट के लिए उस पर जांच करना चाहता हूं। रीको का जवाब वही है जो मैं चाहता था।
पिसिस

6

इतना पुराना सवाल नहीं है, मैं खुद उसी मुद्दे पर गया और इसे हल किया:

कभी-कभी, विकासशील कारणों से आपको बाहर से एक्सेस करने की आवश्यकता होती है (बस एक साधारण बग फिक्स के लिए बहु-तैनाती से बचने के लिए?)

अमेज़ॅन ने एक नया गाइड प्रकाशित किया है जो बाहरी दुनिया के लिए EC2 को प्रॉक्सी के रूप में उपयोग करता है:

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws

सौभाग्य!


3
संदर्भ के लिए दृष्टिकोण अमेज़न उल्लेख एक NAT उदाहरण है।
रसेलपिएर्स

FYI करें, डॉक्स से: "इस दृष्टिकोण का उपयोग केवल परीक्षण और विकास उद्देश्यों के लिए किया जाना चाहिए। यह उत्पादन उपयोग के लिए अनुशंसित नहीं है"
jasonjonesutah

1
हां, यह सही है @ajonjonesutah मैंने अपने उत्तर में भी इसका उल्लेख किया है। उत्पादन के लिए एक बहुत बुरा विचार लेकिन विकास के लिए उत्कृष्ट।
शाए एल्कयम

4

हम HAProxy को एक आरक्षित प्रॉक्सी सर्वर के रूप में उपयोग कर रहे हैं।

AWS के बाहर आपका सिस्टम ---> इंटरनेट -> सार्वजनिक IP के साथ HAProxy -> Amazon Redis (Elasticache)

ध्यान दें कि ऐसा करने का एक और अच्छा कारण है (उस समय)

जैसा कि हम नोड.जेएस क्लाइंट का उपयोग करते हैं, जो अमेज़ॅन डीएनएस विफल होने का समर्थन नहीं करते हैं, क्लाइंट ड्राइवर डीएनएस को फिर से देखने का समर्थन नहीं करता है। यदि रेडिस विफल हो जाते हैं, तो क्लाइंट ड्राइवर पुराने मास्टर से कनेक्ट रखेगा, जो असफल होने के बाद गुलाम है।

HAProxy का उपयोग करके, उस समस्या को हल किया।

अब नवीनतम ioredis ड्राइवर का उपयोग करते हुए, यह amazon dns failover का समर्थन करता है।


1
नोड.जेएस के लिए अद्यतन, अब ioredis समर्थन DNS पर विफल। यदि आप DNS होस्टनाम का उपयोग करते हैं, तो यह HAProxy के बिना ऑटो विफल हो सकता है।
टेड्डीचन

4

BTW अगर किसी को भी विंडोज़ EC2 समाधान चाहिए, तो डॉस प्रॉम्प्ट में ये कोशिश करें (उक्त विंडोज़ ईसी 2 मशीन पर):

पोर्ट-फ़ॉरवर्डिंग जोड़ने के लिए

C: \ उपयोगकर्ता \ प्रशासक>netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com

पोर्ट-फ़ॉरवर्ड किए गए पोर्ट को सूचीबद्ध करने के लिए

C: \ उपयोगकर्ता \ प्रशासक>netsh interface portproxy show all

IPv4 पर सुनें: ipv4 से कनेक्ट करें:

पता पोर्ट पता पोर्ट


10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379

पोर्ट-फ़ॉरवर्डिंग को हटाने के लिए

C: \ उपयोगकर्ता \ प्रशासक>netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx


3

यह एक ठोस नोड स्क्रिप्ट है जो आपके लिए सभी गंदे काम करेगा। परीक्षण किया और सत्यापित यह काम किया।

https://www.npmjs.com/package/uzys-elasticache-tunnel

उपयोग कैसे करें: uzys-flexache- सुरंग [विकल्प] [कमांड]

आदेश:

start [filename]  start tunneling with configuration file (default: config.json)
stop              stop tunneling
status            show tunneling status

विकल्प:

-h, --help     output usage information
-V, --version  output the version number

उपयोग उदाहरण

  • start - uzys-flexache-tunnel start ./config.json
  • रोक - uzys- प्रत्यास्थ-सुरंग स्टॉप
  • स्थिति - uzys-flexache- सुरंग की स्थिति

1

वीपीसी उदाहरण से क्लासिक-क्लस्टर को सीधे एक्सेस करना संभव नहीं है। वर्कअराउंड एनएटी को क्लासिक उदाहरण पर कॉन्फ़िगर किया जाएगा।

NAT के लिए एक साधारण tcp प्रॉक्सी का होना आवश्यक है

YourIP=1.2.3.4
YourPort=80
TargetIP=2.3.4.5
TargetPort=22

iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort
iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT \
--to-source $YourIP
iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort

आपने नीचे दी गई पोस्ट में भी वही उत्तर दिया, जिसकी अलग आवश्यकता है। यह दिए गए परिदृश्य में भी कैसे काम कर सकता है ?? stackoverflow.com/questions/38066908/…
abby37

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.