Redisson подключается к удаленному кластеру

Я создал кластер Redis, который сам по себе работает, но я не могу подключить к нему своего клиента.

Я использую redisson для подключения к нему со следующим кодом

Config config = new Config();
config.setUseLinuxNativeEpoll(false);
config.useClusterServers().addNodeAddress(redisURL.split(","));
RedissonClient redisson = Redisson.create(config);

Где redisURL - это csv в формате: redis://<external-ip>:7000,redis://<external-ip>:7001, но со всеми 6 узлами в кластере.

Интересно то, что кластер подключен к самому себе, используя их локальные адреса (они находятся в одной подсети), но они не могут найти друг друга с соответствующими внешними IP-адресами.

Это, в свою очередь, создает проблему, когда redisson пытается получить конфигурации кластера.

15:53:51,035 INFO  [org.redisson.cluster.ClusterConnectionManager] (ServerService Thread Pool -- 31) Redis cluster nodes configuration got from /<external-ip>:7001:
6df5ebaf45cbbd36213f482a26e99e14e3e86fa5 <internal-ip>:7000@17000 master - 0 1516632829096 2 connected 5461-10922
7724d373393edf7f38ae6253ce248f75f398a1c6 <internal-ip>:7001@17001 slave e5dc7e472410e575a0dc672ead79b54828897ce3 0 1516632830099 6 connected
649582188b2c22b472388c27550467fe97522e3f <internal-ip>:7001@17001 myself,master - 0 1516632828000 1 connected 0-5460
792d30f7c2eedd80d99af5cc49d7797d6b29bdf3 <internal-ip>:7002@17002 slave 6df5ebaf45cbbd36213f482a26e99e14e3e86fa5 0 1516632828093 4 connected
349d846c493fcc709d31c657321a48e01ae0b34e <internal-ip>:7001@17001 slave 649582188b2c22b472388c27550467fe97522e3f 0 1516632827000 5 connected
e5dc7e472410e575a0dc672ead79b54828897ce3 <internal-ip>:7000@17000 master - 0 1516632828000 3 connected 10923-16383

15:54:01,113 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-5) Can't connect to master: redis://<internal-ip>:7000 with slot ranges: [[10923-16383]]
15:54:01,121 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-6) Can't connect to master: redis://<internal-ip>:7001 with slot ranges: [[0-5460]]
15:54:01,127 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-1) Can't connect to master: redis://<internal-ip>:7000 with slot ranges: [[5461-10922]]

Итак, есть ли способ указать redisson сопоставить внутренний IP-адрес с предварительно настроенным внешним IP-адресом? или что-то еще, что решило бы эту проблему? желательно без изменения конфигурации сети.


person munHunger    schedule 22.01.2018    source источник


Ответы (1)


Я столкнулся с той же проблемой при создании кластера Redis. Я использовал redisson для подключения кластера redis, клиентские программы redis, такие как (redis desktop manager), для подключения к моему кластеру redis, все могут подключаться нормально, но когда программа redisson была инициализирована, она запросила время ожидания подключения: 172.18.202.111/172.18 .202.111: 7000.

После ознакомления с документами я обнаружил, что для связи моего кластера Redis требуются другие порты 17000 17001 17002, (+10000)

Возможно, вам потребуется открыть соответствующие ограничения доступа к портам. Если вы используете IP-адрес узла, возвращаемый при выполнении команды CLUSTER nodes, чтобы содержать IP-адрес интрасети, вам необходимо изменить файл nodes.conf, автоматически сгенерированный кластером redis, чтобы изменить IP-адрес интрасети на IP-адрес экстрасети.

Например: 053420032000043aa9983d5b30e09c83258b3186 IP-адрес интрасети: 6379 я, мастер - 001 подключен 0-5460 053420032000043aa9983d5b30e09258b3186 IP-адрес вашей общедоступной сети: 6379 я, мастер - 001 подключен 0-5460

Поскольку в файле конфигурации redis уже указано, что кластер - это файл автоматической конфигурации, который обычно не нужно изменять сам по себе. Но иногда, например, в моем случае, у меня есть только карта интрасети, и IP-адрес общедоступной сети оценивается как преобразованный в частный адрес с помощью NAT.

person sky    schedule 11.01.2019