Я использую redisson с ratpack. Ниже представлена конфигурация, которую я установил для повторного использования.
Config redissionConfig = new Config();
redissionConfig.setTransportMode(TransportMode.EPOLL);
redissionConfig.useClusterServers()
.addNodeAddress(System.getenv("redis_url"))
.addNodeAddress("redis://XXX.XX.XXX.X:6379","redis://XXX.XX.XXX.X:6379","redis://XXX.XX.XXX.X:6379",
"redis://XXX.XX.XXX.X:6379","redis://XXX.XX.XXX.X:6379",
"redis://XXX.XX.XXX.X:6379","redis://XXX.XX.XXX.X:6379",
"redis://XXX.XX.XXX.X:6379","redis://XXX.XX.XXX.X:6379")
.setPassword(System.getenv("redis_password"))
.setKeepAlive(config.keepAlive)
.setPingTimeout(1000)
.setConnectTimeout((int) config.getConnectTimeoutMillis())
.setFailedSlaveReconnectionInterval(30000)
.setReadMode(ReadMode.MASTER_SLAVE)
.setMasterConnectionPoolSize(100)
.setIdleConnectionTimeout(60000)
.setSlaveConnectionPoolSize(100)
.setRetryAttempts(2);
RedissonClient redclient = Redisson.create(redissionConfig);
redclient.getKeys();
redclient.getLock("").delete();
Я добавил все главные и подчиненные IP-адреса в качестве адресов узлов в конфигурации, а добавленные выше IP-адреса являются плавающими IP-адресами. Redisson может устанавливать соединения со всеми, кроме одного главного узла. Но в сообщении об ошибке для этого же отображается внутренний IP-адрес главного узла, а не плавающий IP-адрес, который я добавил в конфигурацию redisson. Я получаю следующее сообщение об ошибке
{"timeMillis":1522752497107,"thread":"redisson-netty-9-8","level":"ERROR","loggerName":"org.redisson.cluster.ClusterConnectionManager","message":"Can't connect to master: redis://192.168.197.2:6379 with slot ranges: [[0-5460]]","endOfBatch":true,"loggerFqcn":"org.apache.logging.slf4j.Log4jLogger","contextMap":{},"threadId":48,"threadPriority":5}
За ним следует исключение RedisConnectionException:
org.redisson.client.RedisConnectionException: Not all slots are covered! Only 10923 slots are avaliable
Мы очень ценим любое понимание этого вопроса.