VPCのElasticache redisインスタンスからEC2インスタンスに接続できますが、Elasticache Redisノードに接続する方法があるかどうかを知りたいローカルの開発者セットアップや他のベンダーが提供するVPSインスタンスなど、Amazon EC2インスタンスの外部。
現在、私のローカル設定から試す場合:
redis-cli -h my-node-endpoint -p 6379
しばらくしてからタイムアウトになります。
いいえ、トンネルなどの「トリック」に頼らずに済ませることはできません。これはテストには問題ないかもしれませんが、遅延/オーバーヘッドが追加された超高速キャッシュを使用することの本当の利点は失われます。
... anVPCの内部または外部のAmazon ElastiCacheクラスターは、インターネットからのアクセスを許可されません。
ここから: http://aws.Amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
EDIT 2018:上記の回答は記述されたときは正確でしたが、いくつかの構成では、約1/2の方向を使用して外部からredisキャッシュにアクセスすることが可能になりましたこのページの方法: https://docs.aws.Amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html
SSHポート転送でうまくいくはずです。クライアントからこれを実行してみてください。
ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>
次に、クライアントから
redis-cli -h 127.0.0.1 -p 6379
わたしにはできる。
Redisのデフォルトポートは6379
ではなく6739
であることに注意してください。また、Redisインスタンスへの接続に使用しているEC2ノードのセキュリティグループがCacheセキュリティグループに許可されていることを確認してください。
また、AWSはクラスターへのアクセスをサポートするようになりました詳細 here
これらの回答は古くなっています。
次の手順に従って、AWSの外部でelastic-cacheにアクセスできます。
詳細については、awsガイドを参照してください。
それほど古い質問ではありませんが、私は同じ問題に自分で走って解決しました:
場合によっては、開発上の理由から、外部からアクセスする必要があります(単純なバグ修正のためだけにマルチデプロイメントを避けるためですか?)
AmazonはEC2を外部世界のプロキシとして使用する新しいガイドを公開しました:
http://docs.aws.Amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
幸運を!
HAProxyを予約済みプロキシサーバーとして使用しています。
AWS外のシステム--->インターネット->パブリックIPを使用したHAProxy-> Amazon Redis(Elasticache)
それを行う別の正当な理由があることに注意してください(その時点で)
Amazon DNSフェールオーバーをサポートしないnode.jsクライアントを使用するため、クライアントドライバーはdnsルックアップをサポートしません。 redisが失敗した場合、クライアントドライバーは古いマスター(フェールオーバー後のスレーブ)への接続を維持します。
HAProxyを使用することで、この問題を解決しました。
現在、最新のioredisドライバーを使用して、Amazon dnsフェイルオーバーをサポートしています。
ところで、もし誰かがWindows EC2ソリューションを望んでいるなら、DOSプロンプトでこれらを試してください(Windows EC2マシン上で):
C:\ Users\Administrator> netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com
C:\ Users\Administrator> netsh interface portproxy show all
Ipv4でリッスンします:ipv4に接続します:
アドレスポートアドレスポート
10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379
C:\ Users\Administrator> netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx
これは、すべての汚い作業を行うソリッドノードスクリプトです。動作することをテストおよび検証しました。
https://www.npmjs.com/package/uzys-elasticache-tunnel
使用方法:uzys-elasticache-tunnel [オプション] [コマンド]
コマンド:
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
使用例
VPCインスタンスからクラシッククラスターに直接アクセスすることはできません。回避策は、クラシックインスタンスでNATを構成することです。
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
このAmazonドキュメントを使用して解決したのは、別のec2マシンにstunnelをインストールする必要があるということです。
https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/