一般集群3主3备,需要6个redis示例。示例配置,
port 6379
cluster-enabled yes
dir /etc/redis/
cluster-config-file node.conf
cluster-node-timeout 10000
protected-mode no
requirepass p@ssw0rd
logfile /etc/redis/redis-server.log
io-threads 4
io-threads-do-reads yes
masterauth p@ssw0rd
然后在各个节点上启动redis示例,可以通过systemd service启动,以达到故障后自动重启的效果。启动完之后,在任意机器上通过redis-cli即可创建集群。
redis-cli --cluster create 10.24.71.154:6380 10.24.71.165:6380 10.24.71.18:6380 10.24.71.184:6380 10.24.71.188:6380 10.24.71.189:6380 --cluster-replicas 1 -a 'p@ssw0rd'
即可自动分配槽位,主备等。
$ cat /etc/redis/node.conf
01e22cb1988300540363d16b88db9f300e90e09b 10.24.71.18:6379@16379 master - 0 1723628125000 3 connected 10923-16383
4f2a252cb9e24b95543fff7e78004675bd70edeb 10.24.71.188:6379@16379 slave 7f5df9ad50649e087afc6c41a5b94479ad9b9f0a 0 1723628125090 1 connected
7f5df9ad50649e087afc6c41a5b94479ad9b9f0a 10.24.71.154:6379@16379 master - 0 1723628124083 1 connected 0-5460
354350dbd36e2302c9c59b768406c0662ad0f2c9 10.24.71.184:6379@16379 slave 01e22cb1988300540363d16b88db9f300e90e09b 0 1723628125191 3 connected
cc6a11f2705eca8e2b362feebc512c5369448ee6 10.24.71.189:6379@16379 slave 0986e476de8a7097cc1c65f279651fa22a269c3b 0 1723628125000 2 connected
0986e476de8a7097cc1c65f279651fa22a269c3b 10.24.71.165:6379@16379 myself,master - 0 1723628125000 2 connected 5461-10922
vars currentEpoch 6 lastVoteEpoch 0
同时,redis-cli连接任意集群节点,通过cluster nodes亦可查看,
$ redis-cli -a 'p@ssw0rd'
127.0.0.1:6380> CLUSTER NODES
5e26e347983060f7703a0194925455099f9d1665 10.24.71.165:6380@16380 slave 6bda7c18e4f3ccc2a9b813e6e8990d5929dad7cb 0 1755234623000 1 connected
ca6cbd9b1a6887584e5e78d30aa5097ab438d839 10.24.71.189:6380@16380 master - 0 1755234623000 3 connected 10923-16383
a275278b451e517ce703aaf125d1e825ea00806b 10.24.71.154:6380@16380 myself,slave ca6cbd9b1a6887584e5e78d30aa5097ab438d839 0 1755234620000 3 connected
6bda7c18e4f3ccc2a9b813e6e8990d5929dad7cb 10.24.71.184:6380@16380 master - 0 1755234624757 1 connected 0-5460
046e0033330f0cafe25b84734e92f1c9a4d48ad7 10.24.71.188:6380@16380 master - 0 1755234621753 2 connected 5461-10922
e88867b424ef5a10d61a59bb0d7999390d85cde3 10.24.71.18:6380@16380 slave 046e0033330f0cafe25b84734e92f1c9a4d48ad7 0 1755234623755 2 connected
127.0.0.1:6380>
虽然集群中任意节点均可进行读写,但单点流量过高可能出现瓶颈。搭配predixy-1.0.5可以做到命令级负载均衡。