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でrediss
をredis
に置き換えると、エラーが抑制されます。しかし、まだクラスターに接続できません。
私が試した代替案があります(そして、それらは単に「何もしない」:エラーメッセージをまったく表示しません。単に何も表示しません)。
ノードに直接接続する
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が接続しない理由を知るにはどうすればよいですか?とにかくルートをたどることはできますか?
ドキュメントによると、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