web-dev-qa-db-ja.com

エラー:スタンナルメソッドを使用してElasticキャッシュに接続しているときに、ピアによって接続がリセットされました

ElasticCacheシングルノードシャードRedis4.0以降のバージョンを使用しています。

転送中の暗号化を有効にして、redis認証トークンを指定しました。

このリンクを使用して、驚異的な要塞ホストを1つ作成しました

https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

次の方法でElasticCacheRedisノードに接続できます

redis-cli -h hostname -p 6379 -a mypassword

telnetもできます。 [〜#〜] but [〜#〜]接続後にredis-cliでping(予期される応答 "PONG")を実行すると

"エラー:ピアによって接続がリセットされました"

双方のセキュリティグループを確認しました。何か案が ?要塞ホストubuntu16.04マシン

3
Shree Prakash

問題で述べたように、私は次のようなコマンドを実行していました。

redis-cli -h hostname -p 6379 -a mypassword

Stunnelを介してElastiCacheクラスターに接続する正しい方法は、次のように、ホストアドレスとして「localhost」を使用することです。

redis-cli -h localhost -p 6379 -a mypassword

ローカルホストアドレスの使用についての説明があります。

スタンネルを介して要塞サーバーとElastiCacheホストの間にトンネルを作成すると、プログラムはローカルTCPポート(6379)をリッスンし、SSLプロトコルを使用して通信をカプセル化し、ローカルサーバーとリモートホスト間でデータを転送します。

stunnelを起動し、サービスがローカルホストアドレス(127.0.0.1)でリッスンしているかどうかを確認し、宛先アドレスとして「localhost」を使用して接続する必要があります。

  1. Stunnelを開始します。 (このリンクを使用してstunnelをインストールしたことを確認してください https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

    $ Sudo stunnel /etc/stunnel/redis-cli.conf

  2. Netstatコマンドを使用して、トンネルが開始されたことを確認します。

    $ netstat -tulnp | grep -i stunnel

  3. これで、redis-cliを使用して、トンネルのローカルエンドポイントを使用して暗号化されたRedisノードに接続できます。

    $ redis-cli -h localhost -p 6379 -a MySecretPassword

    localhost:6379> set foo "bar"

    OK

    localhost:6379> get foo

    "バー"

4
Shree Prakash

「エラー:ピアによって接続がリセットされました」は、Redisが応答を送信せずに接続を強制終了していることを示します。

考えられる原因の1つは、SSLを使用せずにRedisノードに接続しようとしていることです。これは、接続が応答なしでRedisサーバーによって拒否されるためです[1]。トンネルプロキシの正しいポートを介して接続していることを確認してください。要塞ホストから直接接続している場合は、ローカルホストを使用する必要があります。

もう1つのオプションは、RedisでサポートされているバージョンのSSLを含まないようにstunnelを誤って構成したことです。設定ファイルがサポートドキュメントで提供されているものとまったく同じであることを再確認する必要があります。

問題が解決しない場合は、AWSオープンソースコントリビューションに含まれているCLIの構築を試みることができます。[2]リポジトリをチェックアウトし、readmeの指示に従ってから、make BUILD_SSL = yes makeredis-cliを実行する必要があります。

[1] https://github.com/madolson/redis/blob/unstable/src/ssl.c#L464 [2] https://github.com/madolson/ redis/blob/unstable/SSL_README.md

1
reconditeRose

おそらくElastiCacheRedisインスタンスは、転送中の暗号化と保存中の暗号化を使用しており、設計上、RedisCLIは暗号化と互換性がありません。

Redisクラスターに接続するにはstunnelをセットアップする必要があります

https://datanextsolutions.com/blog/how-to-fix-redis-cli-error-connection-reset-by-peer/

1
Manoj Bhagwat