web-dev-qa-db-ja.com

Javaアプリケーションがレタスライブラリを使用してAWS elasticache Redisクラスターに到達できますが、redis-cliを使用して直接到達できないのはなぜですか?

JavaアプリがEC2インスタンスで実行され、レタス( https://lettuce.io/ )を使用してAWS ElasticCacheのredisクラスターと通信する)があります。

Javaアプリは問題なく接続できます。netstatの出力は次のとおりです。

tcp6       0      0 10.0.56.94:45846        10.0.34.61:6379         ESTABLISHED
tcp6       0      0 10.0.56.94:33198        10.0.33.125:6379        ESTABLISHED
tcp6       0      0 10.0.56.94:57526        10.0.32.189:6379        ESTABLISHED

同じec2インスタンスにログオンし、redis-cliを使用して同じクラスターを接続しようとしました。ただし、redis-cliでは成功しません。

Redis uri Javaアプリケーションは次のようなものです:

rediss://my-project-0001-001.my-project.abczy.use1.cache.amazonaws.com:6379,my-project-0002-001.my-project.abczy.use1.cache.amazonaws.com:6379,my-project-0003-001.my-project.abczy.use1.cache.amazonaws.com:6379

ただし、このURIをredis-cliに適用すると、「無効なURIスキーム」というエラーがスローされます。

URIでredissredisに置き換えると、エラーが抑制されます。しかし、まだクラスターに接続できません。

私が試した代替案があります(そして、それらは単に「何もしない」:エラーメッセージをまったく表示しません。単に何も表示しません)。

ノードに直接接続する

redis-cli -c -h my-project-0001-001.my-project.abczy.use1.cache.amazonaws.com -p 6379 -a auth_token

構成エンドポイントに接続します

redis-cli -c -h  clustercfg.my-project.abczy.use1.cache.amazonaws.com -p 6379 -a auth_token

IPを直接使用

# Use netstat to find out the IPs
redis-cli -c -h 10.0.34.61 -p 6379 -a auth_token

-cフラグなしでIPを直接使用する

redis-cli -h 10.0.34.61 -p 6379 -a auth_token

Redis-cliが接続しない理由を知るにはどうすればよいですか?とにかくルートをたどることはできますか?

1
Anthony Kong

ドキュメントによると、redis-cliはSSLまたはTLSをサポートしていません。

転送中の暗号化が有効になっているRedisノードのElastiCacheからデータにアクセスするには、Secure Socket Layer(SSL)で動作するクライアントを使用します。ただし、redis-cliはSSLまたはTLS(Transport Layer Security)をサポートしていません。

https://docs.aws.Amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls

回避策としてstunnelを使用できます。

setuid = root
setgid = root
pid = /var/run/stunnel.pid
debug = 7 
delay = yes
options = NO_SSLv2
options = NO_SSLv3
[redis-cli]
   client = yes
   accept = 127.0.0.1:6379
   connect = my-project-0001-001.my-project.abczy.use1.cache.amazonaws.com:6379
[redis-cli-replica1]
   client = yes
   accept = 127.0.0.1:6380
   connect = my-project-0002-001.my-project.abczy.use1.cache.amazonaws.com:6379
[redis-cli-replica2]
   client = yes
   accept = 127.0.0.1:6381
   connect = my-project-0003-001.my-project.abczy.use1.cache.amazonaws.com:6379

スタネルを開始

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

redis-cliを使用して接続します。

 redis-cli -c -h localhost-p 6379 -a auth_token
1
Tom H