EC2インスタンスからVPCのElastiCacheRedisインスタンスに接続できます。ただし、ローカルの開発セットアップや他のベンダーが提供するVPSインスタンスなど、AmazonEC2インスタンスの外部でElastiCacheRedisノードに接続する方法があるかどうかを知りたいです。
現在、私のローカル設定から試してみると:
redis-cli -h my-node-endpoint -p 6379
しばらくするとタイムアウトになります。
EC2インスタンスからVPCのElastiCacheRedisインスタンスに接続できます。ただし、ローカルの開発セットアップや他のベンダーが提供するVPSインスタンスなど、AmazonEC2インスタンスの外部でElastiCacheRedisノードに接続する方法があるかどうかを知りたいです。
現在、私のローカル設定から試してみると:
redis-cli -h my-node-endpoint -p 6379
しばらくするとタイムアウトになります。
回答:
いいえ、トンネルなどの「トリック」に頼らなければなりません。これはテストには問題ないかもしれませんが、レイテンシー/オーバーヘッドが追加された超高速キャッシュを使用することの本当のメリットはありません。
... VPCの内外を問わずAmazonElastiCacheクラスターにインターネットからアクセスすることは許可されていません。
ここから:http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
編集2018:上記の回答は書かれた時点で正確でしたが、このページの約1/2の方向を使用して、外部からredisキャッシュにアクセスするように設定することで可能になりました:https://docs.aws.amazon.com/AmazonElastiCache /latest/red-ug/accessing-elasticache.html#access-from-outside-aws
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
わたしにはできる。
redisのデフォルトポートはでは6379
ないことに注意してください6739
。また、Redisインスタンスへの接続に使用しているEC2ノードのセキュリティグループをキャッシュセキュリティグループに許可することを許可していることを確認してください。
また、AWSはクラスターへのアクセスをサポートするようになりました。詳細はこちら
kill -9 <pid>
これらの回答は古くなっています。
次の手順に従って、AWSの外部でelastic-cacheにアクセスできます。
詳細な説明については、awsガイドを参照してください。
それほど古い質問ではありませんが、私は自分で同じ問題に遭遇し、それを解決しました:
場合によっては、開発上の理由から、外部からアクセスする必要があります(単純なバグ修正のためだけに複数の展開を回避するためですか?)
Amazonは、EC2を外界のプロキシとして使用する新しいガイドを公開しました。
幸運を!
予約済みのプロキシサーバーとしてHAProxyを使用しています。
AWS外のシステム--->インターネット->パブリックIPを使用したHAProxy-> Amazon Redis(Elasticache)
それを行う別の正当な理由があることに注意してください(その時点で)
Amazon DNSフェイルオーバーをサポートしていないnode.jsクライアントを使用しているため、クライアントドライバーはdnsルックアップを再度サポートしていません。redisが失敗した場合、クライアントドライバーは、フェイルオーバー後にスレーブである古いマスターに接続し続けます。
HAProxyを使用することで、その問題を解決しました。
現在、最新のioredisドライバーを使用して、amazondnsフェイルオーバーをサポートしています。
ところで、誰かが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インスタンスからclassic-clusterに直接アクセスすることはできません。回避策は、クラシックインスタンスで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/