Создаём REDIS кластер
[192.168.1.47]# uname -v
FreeBSD 10.3-RELEASE-p11
На нодах в файлах /usr/local/etc/redis.conf
заменяем:
bind 127.0.0.1 на bind 192.168.1.47
ВАЖНО, чтобы не было 127.0.0.1, иначе нода будет через кластер распространять свой IP как 127.0.0.1 и как следствие кластер не заработает, так как ноды друг-друга видеть не будут.
Добавить:
cluster-enabled yes
При установке из портов /usr/port/database/redis не забыть опцию “Install redis-trib.rb”
[192.168.1.47]# /usr/local/bin/redis-trib.rb create 192.168.1.34:6379 192.168.1.36:6379 192.168.1.47:6379
Премещаем все слоты с нод 192.168.1.34 192.168.1.36 на 192.168.1.47, она будем master, а все остальные slave
[192.168.1.47]# /usr/local/bin/redis-trib.rb reshard 192.168.1.47:6379
Удаляем ноды из кластера
[192.168.1.36]# redis-cli -h 192.168.1.47 cluster nodes
[192.168.1.36]# /usr/local/bin/redis-trib.rb del-node 192.168.1.36:6379 72cfa887ee5b66b9c97668354233c7435bac1f72
[192.168.1.36]# rm /var/db/redis/*
[192.168.1.36]# /usr/local/etc/rc.d/redis start
[192.168.1.34]# /usr/local/bin/redis-trib.rb del-node 192.168.1.34:6379 57e74975d708c4396abc13788ff58288e2b2505d
[192.168.1.34]# rm /var/db/redis/*
[192.168.1.34]# /usr/local/etc/rc.d/redis start
Добавляем удаленные ноды, но как slave
[192.168.1.34]# /usr/local/bin/redis-trib.rb add-node –slave 192.168.1.36:6379 192.168.1.47:6379
[192.168.1.34]# /usr/local/bin/redis-trib.rb add-node –slave 192.168.1.34:6379 192.168.1.47:6379
Информация по кластеру
[192.168.1.34]# /usr/local/bin/redis-trib.rb info 192.168.1.47:6379
192.168.1.47:6379 (f3d16bfc…) -> 497 keys | 16384 slots | 2 slaves.
[OK] 497 keys in 1 masters.
0.03 keys per slot on average.
Отказ master ноды
[192.168.1.47]# /usr/local/etc/rc.d/redis stop
[192.168.1.47]# redis-cli -h 192.168.1.34 cluster nodes
3d4999f737bb397b7719c694ebb6792500d719f4 192.168.1.36:6379 slave f3d16bfc58718d7e89556f84490dd768c6c51d52 0 1480070974161 5 connected
f3d16bfc58718d7e89556f84490dd768c6c51d52 192.168.1.47:6379 master,fail? – 1480070953480 1480070951898 5 connected 0-16383
21d722c10e6d7c530de1bee9b2ec0702ae61ce59 192.168.1.34:6379 myself,slave f3d16bfc58718d7e89556f84490dd768c6c51d52 0 0 0 connected
Включаем обратно
[192.168.1.47]# /usr/local/etc/rc.d/redis start
Узнать статус кластера
[192.168.1.34]# /usr/local/bin/redis-trib.rb check 192.168.1.47:6379
>>> Performing Cluster Check (using node 192.168.1.47:6379)
M: f3d16bfc58718d7e89556f84490dd768c6c51d52 192.168.1.47:6379
slots:0-16383 (16384 slots) master
2 additional replica(s)
S: 3d4999f737bb397b7719c694ebb6792500d719f4 192.168.1.36:6379
slots: (0 slots) slave
replicates f3d16bfc58718d7e89556f84490dd768c6c51d52
S: 21d722c10e6d7c530de1bee9b2ec0702ae61ce59 192.168.1.34:6379
slots: (0 slots) slave
replicates f3d16bfc58718d7e89556f84490dd768c6c51d52
[OK] All nodes agree about slots configuration.
>>> Check for open slots…
>>> Check slots coverage…
[OK] All 16384 slots covered.