Amazon ElastiCache无法从EC2进行连接 → 原因是正在进行的加密传输
我想做的事情
-
- 毎アクセス実行され、かつ同じ結果を返すクエリを発見
-
- 結果をredisでキャッシュしたろ
FuelPHPのアプリケーションだから、Redis_Db クラスを使ってredisを操作しよ
redisはElastiCacheで用意しよ
出了问题
-
- 完成ElastiCache的配置
-
- 從應用程式連接→出錯
- 為了找出原因,從正在運行應用程式的EC2上使用redis-cli嘗試連接
$ redis-cli -h (ElastiCacheエンドポイント) -p 6379
(ElastiCacheエンドポイント)> ping
Error: Connection reset by peer
尽管连接可以建立,但当尝试执行命令时会出现错误。
(当然,在无法连接时,比如在不同的VPC中,从最初的”redis-cli -h -p”命令开始就会出现错误。)
查明了原因
如果在创建ElastiCache集群的选项中勾选了“传输中加密”,似乎只能通过SDK进行操作。
参考链接:
https://forums.aws.amazon.com/thread.jspa?threadID=160851#jive-message-832075
Please could you confirm if redis encryption in-transit is not enabled for your cluster. If it is enabled, then you would be unable to connect using redis-cli as it does not support SSL encryption. The only way to connect in redis with in-transit encyption enabled is using a SDK.
创建了一个取消了「发送中的加密」检查的集群,然后就可以连接了。
如果想通过redis-cli进行连接,只需通过stunnel即可。
▼参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/elasticache-connect-redis-node/