现象
部署Amazon ElastiCache for Redis 集群后, 在AWS EC2实例上, 该Ec2实例和redis集群都在同一个VPC下, 通过redis-cli -h Primary or Configuration Endpoint -a 'your-password' -p 6379
方式连接redis集群无响应并且一直卡住, 使用telnet Primary or Configuration Endpoint 6379
测试能联通6379
端口但是还是无响应
原因
TransitEncryptionEnabled = true
, 可以检查下encryption in transit
类似的参数,有可能默认情况下被设置为true
了, 该参数设置为true
时res-li连接时需要带上--tls
参数 , 如下:
#无密码
redis-cli -h "Primary or Configuration Endpoint" --tls -p 6379
#有密码
redis-cli -h Primary or Configuration Endpoint --tls -a 'your-password' -p 6379
其他
如果redis-cli
不支持--tls
参数的话需要按照文档https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls重新编译
如下:
sudo yum -y install openssl-devel gcc
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make distclean
make redis-cli BUILD_TLS=yes
sudo install -m 755 src/redis-cli /usr/local/bin/