Redisson пытается подключиться к внутреннему IP-адресу Redis вместо плавающего IP-адреса Redis, указанного в конфигурации

Я использую 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

Мы очень ценим любое понимание этого вопроса.


person hisdudeness    schedule 03.04.2018    source источник


Ответы (1)


В режиме кластера вам не нужно указывать все узлы Redis. Требуется только один узел. Redisson извлекает информацию о кластере, полученную с первого доступного узла Redis. Проверьте конфигурацию кластера Redis. Он содержит неправильный IP-адрес Redis.

person Nikita Koksharov    schedule 01.05.2018