个人博客
- 这里并非使用原生方式来搭建集群。
- Redis5.x版本使用
redis-cli
工具搭建集群,不再像Redis4.x版本使用Ruby搭建,会更方便一些。 - 如果有特殊的搭建要求,则需要按照原始方式搭建,原生方式采用各个节点先meet再指派槽最后分配主从来完成集群的搭建。
1、各节点加入集群
- 3机6节点的主从拓扑,上下对应主从关系且主从节点错开在不同机器上。
1 2
| 172.16.122.101:6379(主) 172.16.122.102:6379(主) 172.16.122.103:6379(主) 172.16.122.102:6380(从) 172.16.122.103:6380(从) 172.16.122.101:6380(从)
|
- 在任意一台机器上执行以下命令,前3台为主机,后3台为从机,顺序一一对应。根据实际情况需要把ip地址和端口替换一下。
--cluster-replicas 1
参数表示主从节点是1:1关系。
1
| /usr/local/redis/bin/redis-cli --cluster create 172.16.122.101:6379 172.16.122.102:6379 172.16.122.103:6379 172.16.122.102:6380 172.16.122.103:6380 172.16.122.101:6380 --cluster-replicas 1
|
- 手动确认yes
然后会看到下图,表示搭建OK。原生方式的先meet再指派槽最后分配主从的3个步骤现在仅用一行命令就已经完成了。
2、查看集群信息
- 进入客户端。
1
| /usr/local/redis/bin/redis-cli -p 6379
|
- 查看集群信息,状态已经OK。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 127.0.0.1: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:6 cluster_size:3 cluster_current_epoch:7 cluster_my_epoch:7 cluster_stats_messages_ping_sent:11979 cluster_stats_messages_pong_sent:12091 cluster_stats_messages_sent:24070 cluster_stats_messages_ping_received:12091 cluster_stats_messages_pong_received:11832 cluster_stats_messages_received:23923
|
- 查看集群各节点信息,可以看到每个节点的主从关系以及槽点的分配。
1 2 3 4 5 6 7
| 127.0.0.1:6379> cluster nodes e1e369014d2ffd33f3548cc75d64789048a9b2bf 172.16.122.101:6379@16379 myself,master - 0 1588327299000 9 connected 0-5460 642b908e7c225daf7fa606201b938507cd33393d 172.16.122.101:6380@16380 slave 1d1ffb6589d25040c3f5d2bbea7d6503dd6a39dc 0 1588327300414 6 connected 7b639ed82eae9ee6e4b17dfd25b09be1604f280d 172.16.122.102:6380@16380 slave e1e369014d2ffd33f3548cc75d64789048a9b2bf 0 1588327299000 9 connected 639af5949611f931584a7dfc72f8841ff09d9ffd 172.16.122.103:6380@16380 slave 85f496b8891263e334bd6a43816d4ea465fbe8cf 0 1588327300000 5 connected 1d1ffb6589d25040c3f5d2bbea7d6503dd6a39dc 172.16.122.103:6379@16379 master - 0 1588327300000 3 connected 10923-16383 85f496b8891263e334bd6a43816d4ea465fbe8cf 172.16.122.102:6379@16379 master - 0 1588327301419 2 connected 5461-10922
|
3、简单操作
- set key
1 2
| 127.0.0.1:6379> set hello world (error) MOVED 866 172.16.122.101:6379
|
- 可能成功也有可能会报错,报错是因为redis根据crc16算法算出存储该key的槽位不属于当前节点。
exit
或quit
命令退出客户端,我们需要以下命令重新进入客户端。(如果需要支持中文则要再加上--raw
参数)
1
| /usr/local/redis/bin/redis-cli -p 6379 -c
|
- 再执行就OK了,并且会提示重定向到槽位所属的节点。
1 2 3 4
| 127.0.0.1:6379> set hello world -> Redirected to slot [866] located at 172.16.122.101:6379 OK 172.16.122.101:6379>
|
- get key
1 2
| 172.16.122.101:6379> get hello "world"
|
- del key
1 2
| 172.16.122.101:6379> del hello (integer) 1
|
4、启停集群
- 关闭1台机器的所有实例。
- 挨个关闭1台机器的实例。
1 2
| /usr/local/redis/bin/redis-cli -p 6379 shutdown /usr/local/redis/bin/redis-cli -p 6380 shutdown
|
- 再次重启时不需要再搭起集群,redis会读取保留集群信息的文件恢复集群关系。
1 2
| /usr/local/redis/nodes-6379.conf /usr/local/redis/nodes-6380.conf
|
参考链接