我有 1 个 VPC - 在 1 个 EC2 实例(亚马逊 ami )和 1 个 Redis(已启用集群模式)集群下,具有身份验证(密码)并且安全组对所有 IP:端口开放(仅用于测试目的) - 所以设置非常简单。
telnet 在我的 EC2 实例的端口 6379 上工作 - 配置端点 - Shard>eachNode EndPoint
无法使用 Redis CLI 连接到 Redis 服务器 - 无论端点是配置端点还是节点端点;使用 v.5.0.4 的 Redis CLI ;
请注意 - AWS ElastiCache Redis 集群(已禁用集群)或单服务器节点提供主端点,工作正常。仅当启用集群并获取 ConfigEndpoint/NodeEndPoints 时,才会出现问题。
配置端点:
[root@ip-xx-xx-xx-xx src]# ./redis-cli -h clustercfg.xxxx.xxxxx.use1.cache.amazonaws.com -p 6379
Run Code Online (Sandbox Code Playgroud)
节点端点:
[root@ip-xx-xx-xx-xx src]# ./redis-cli -h xxxx-0001-0-01.xxxx.xxxxx.use1.cache.amazonaws.com -p 6379
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
谢谢
我正在尝试使用 Spring Data Redis + Jedis 组合连接到 AWS ElastiCache Redis。[Redis 集群已启用,因此它具有集群配置端点,具有 3 个分片 - 每个分片有 1 个主节点 + 2 个副本节点]
我收到读取超时错误。
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
AWS Redis 服务器版本:5.0.3 / 集群模式:已启用 / SSL:已启用 / 身份验证:已启用(通过密码)
库 -- Spring-data-redis : 2.1.6.Release / jedis : 2.9.0
Telnet 适用于 AWS Redis 所有节点和 6379 端口上的集群配置端点。
我单独尝试了Redisson,它连接到AWS Redis,没有任何问题。
因此,Redis 本身没有问题,Spring Data Redis 与 Jedis 结合使用会出现问题。
我的代码看起来像这样 -
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
redisClusterConfiguration.setClusterNodes(listOfRedisNode);
redisClusterConfiguration.setPassword(passwordString);
JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
jedisClientConfiguration.connectTimeout(Duration.ofSeconds(60));
jedisClientConfiguration.useSsl();
jedisClientConfiguration.usePooling();
JedisConnectionFactory jedisConnectionFactory …
Run Code Online (Sandbox Code Playgroud) java amazon-web-services jedis spring-data-redis redis-cluster