ソースから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側のクラスターのセキュリティグループ設定に関連している可能性があると思いますが、具体的に何を変更できるか、または変更する必要があるかはわかりません。接続をブロックしている可能性のあるものの提案に感謝し、必要に応じてクラスター自体に関する情報を提供できます。
EC2インスタンスのセキュリティグループと接続しようとしたElastiCacheクラスターによって接続が禁止されていましたが、正しく調整されていませんでした。
AWSから docs :
すべてのElastiCacheクラスターは、AmazonEC2インスタンスからアクセスするように設計されています。最も一般的なシナリオは、同じAmazon Virtual Private Cloud(Amazon VPC)内のAmazonEC2インスタンスからElastiCacheクラスターにアクセスすることです。
これを修正するために私が取った手順は次のとおりです。
これで、(例)のようなものに接続できるようになります。
redis-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379 ping
また、redis-cli
の呼び出しが無限にハングアップするのを見ていましたが、私の場合は、セキュリティグループが正しく構成されていないことが原因ではありませんでした。
代わりに、「暗号化転送中」オプションを「はい」に設定してRedisクラスターを作成したために発生しました。これは、私のデータベースエンドポイントにSSLトンネルを介してアクセスする必要があることを意味しましたが、redis-cli
はアクセスしません。
私のアプリケーションでは、転送中の暗号化は実際には必要なかったので、そのオプションを選択せずに新しいRedisクラスターを作成しました。転送中の暗号化を使用するときに別の方法で行う必要があることの詳細については、こちらをご覧ください: https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/ ==