web-dev-qa-db-ja.com

Amazon ElastiCacheRedisクラスターへのredis-cli接続がハングアップする

ソースからRedisをインストールしてコンパイルし、Amazon ElastiCache(Redis)クラスターに接続しようとしています。

デフォルトのローカルホストに問題なく接続できますが、AWSエンドポイントに接続しようとすると、無限のハングアップのように見えます。

デフォルトの場合:

$ redis-server /etc/redis.conf  # daemonized, uses localhost
$ redis-cli ping
PONG
$ Sudo service redis_6379 status
Redis is running (12919)
$ redis-cli shutdown  # or Sudo service redis_6379 stop

さて、これがエンドポイントに接続する試みです、 トピックに関するAWSドキュメント からコピーします:

redis-cli -c -h my_example_endpoint_name.eaogs8.ng.0001.use1.cache.amazonaws.com -p 6379 ping

これは、stderr/stdoutに何も発行されずに無限にハングアップします。

(これはエンドポイント名の例であることに注意してください。AWSコンソールにリストされているプラ​​イマリエンドポイントを使用していることを確認しました。)

これはAWS側のクラスターのセキュリティグループ設定に関連している可能性があると思いますが、具体的に何を変更できるか、または変更する必要があるかはわかりません。接続をブロックしている可能性のあるものの提案に感謝し、必要に応じてクラスター自体に関する情報を提供できます。

4
Brad Solomon

EC2インスタンスのセキュリティグループと接続しようとしたElastiCacheクラスターによって接続が禁止されていましたが、正しく調整されていませんでした。

AWSから docs

すべてのElastiCacheクラスターは、AmazonEC2インスタンスからアクセスするように設計されています。最も一般的なシナリオは、同じAmazon Virtual Private Cloud(Amazon VPC)内のAmazonEC2インスタンスからElastiCacheクラスターにアクセスすることです。

これを修正するために私が取った手順は次のとおりです。

  1. ElastiCacheダッシュボード > Redisに移動し、問題のクラスター名をクリックします。これにより、値がsg-x8xxxxxxなどのグループIDであるセキュリティグループフィールドが表示されます。
  2. https://console.aws.Amazon.com/ec2 >ネットワークとセキュリティ>セキュリティグループの下のセキュリティグループテーブルに移動します。手順1からグループIDを見つけ、対応するグループ名をメモします。
  3. EC2管理コンソールに移動します https://console.aws.Amazon.com/ec2 >インスタンス>インスタンス。 Redisクラスターへの接続を試行するために使用しているサーバーについては、[セキュリティグループ]フィールドに注意してください。これには、ステップ2のグループ名が含まれている必要があります。含まれていない場合は、このセキュリティグループを追加する必要があります。サーバー名の横にあるチェックボックスをオンにします。[アクション]> [ネットワーク]> [セキュリティグループの変更]。 2つのコンポーネントが同じVPCを共有するように、セキュリティグループ名を追加します。

これで、(例)のようなものに接続できるようになります。

redis-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379 ping
4
Brad Solomon

また、redis-cliの呼び出しが無限にハングアップするのを見ていましたが、私の場合は、セキュリティグループが正しく構成されていないことが原因ではありませんでした。

代わりに、「暗号化転送中」オプションを「はい」に設定してRedisクラスターを作成したために発生しました。これは、私のデータベースエンドポイントにSSLトンネルを介してアクセスする必要があることを意味しましたが、redis-cliはアクセスしません。

私のアプリケーションでは、転送中の暗号化は実際には必要なかったので、そのオプションを選択せず​​に新しいRedisクラスターを作成しました。転送中の暗号化を使用するときに別の方法で行う必要があることの詳細については、こちらをご覧ください: https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/ ==

6
Liam Hession