上次说了Redis的修改配置文件和启动问题,今天就来讲讲Redis的集群搭建。
直接进入主题,开启各个节点的redis。
redis-server $REDIS_HOME/etc/redis.conf
开启之后各个节点都不认识,不是集群模式。可以输入命令查看。这里就不查看了,直接按着步骤走就行了。
在主节点输入就行了,不行的话,各节点都来一次,
redis-cli -h 192.168.12.13 -p 6379
192.168.12.13:6379> cluster meet 192.168.12.14 6379
ok
192.168.12.13:6379> cluster meet 192.168.12.15 6379
ok
接下来就要给各节点分配slots了,slots总数为16384,我这平均分配的,送上脚本如下,在能识别命令的环境下执行。分配slots最好在各自节点进行。
cat redis_slots.sh
#!/bin/sh
start_slots=0
end_slots=5461
i=${start_slots}
while [ $i -le $end_slots ]
do
redis-cli -h 192.168.12.13 -p 6379 cluster addslots ${i} >/dev/null 2>&1 &
i=$(($i+1))
done
同理:
#!/bin/sh
start_slots=5462
end_slots=10921
i=${start_slots}
while [ $i -le $end_slots ]
do
redis-cli -h 192.168.12.14 -p 6379 cluster addslots ${i} >/dev/null 2>&1 &
i=$(($i+1))
done
还剩一个节点:
#!/bin/sh
start_slots=10922
end_slots=16383
i=${start_slots}
while [ $i -le $end_slots ]
do
redis-cli -h 192.168.12.15 -p 6379 cluster addslots ${i} >/dev/null 2>&1 &
i=$(($i+1))
done
好的,这就做完了。再检查一下:
192.168.12.13:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:2
cluster_my_epoch:2
cluster_stats_messages_sent:3035
cluster_stats_messages_received:2705
192.168.12.13:6379> cluster nodes
b2f481cecfdcf6ef13362f26761ddd60ab15eb8e 192.168.12.15:6379 master - 0 1492686120056 0 connected 10922-16383
4b2a06221408bb5a6cfea3b706f28cd0be607949 192.168.12.13:6379 myself,master - 0 0 2 connected 0-5461
3b4500a174b74561691f6023185481a93bf0a332 192.168.12.14:6379 master - 0 1492686119053 1 connected 5462-10921
大功告成!集群搭建完毕,还送个小技巧,输入key-value的时候:
192.168.12.13:6379> set zz haizeiwang
(error) MOVED 14415 192.168.12.15:6379
192.168.12.13:6379> get zz
(error) MOVED 14415 192.168.12.15:6379
192.168.12.13:6379> get o
(error) MOVED 7497 192.168.12.14:6379
注意到没?当你在192.168.12.13节点set zz 的时候,它会提示你key-value应该去192.168.12.15节点上去set,因为13分配的slots靠前(0-5461),而192.168.12.15节点分配的slots靠后(10922-16383),说明已经很明显(也不完全是这样的,一种推测而已,仅供参考)
字母顺序:a、b、,,,,、x、z。首字母(zz)排后。就直接去192.168.12.15节点,如下:
192.168.12.15:6379> set zz haizeiwang
OK
192.168.12.15:6379>
以上仅供参考哈,多多指教。