RedisCluster高可用集群搭建(二)
2020-05-07 本文已影响0人
砒霜拌辣椒
- 这里并非使用原生方式来搭建集群。
- Redis5.x版本使用
redis-cli
工具搭建集群,不再像Redis4.x版本使用Ruby搭建,会更方便一些。 - 如果有特殊的搭建要求,则需要按照原始方式搭建,原生方式采用各个节点先meet再指派槽最后分配主从来完成集群的搭建。
1、各节点加入集群
- 3机6节点的主从拓扑,上下对应主从关系且主从节点错开在不同机器上。
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关系。
/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
手动确认yes
然后会看到下图,表示搭建OK。原生方式的先meet再指派槽最后分配主从的3个步骤现在仅用一行命令就已经完成了。
完成搭建
2、查看集群信息
- 进入客户端。
/usr/local/redis/bin/redis-cli -p 6379
- 查看集群信息,状态已经OK。
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
- 查看集群各节点信息,可以看到每个节点的主从关系以及槽点的分配。
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
127.0.0.1:6379> set hello world
(error) MOVED 866 172.16.122.101:6379
- 可能成功也有可能会报错,报错是因为redis根据crc16算法算出存储该key的槽位不属于当前节点。
exit
或quit
命令退出客户端,我们需要以下命令重新进入客户端。(如果需要支持中文则要再加上--raw
参数)
/usr/local/redis/bin/redis-cli -p 6379 -c
- 再执行就OK了,并且会提示重定向到槽位所属的节点。
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
172.16.122.101:6379> get hello
"world"
- del key
172.16.122.101:6379> del hello
(integer) 1
4、启停集群
- 关闭1台机器的所有实例。
pkill redis
- 挨个关闭1台机器的实例。
/usr/local/redis/bin/redis-cli -p 6379 shutdown
/usr/local/redis/bin/redis-cli -p 6380 shutdown
- 再次重启时不需要再搭起集群,redis会读取保留集群信息的文件恢复集群关系。
/usr/local/redis/nodes-6379.conf
/usr/local/redis/nodes-6380.conf
Redis安装
RedisCluster高可用集群搭建(一)
Redis5.x在云服务器搭建集群