Redis5.0.8集群搭建与说明

1. 环境说明

RedisCluster要求至少3个主节点,因此我们需要启动6个Redis实例(3主3从)

准备3台虚拟机,分别安装Redis,步骤可以参考之前的文章:Linux安装Redis步骤

实例 主/从
192.168.25.132:6379 master
192.168.25.132:6380 slave
192.168.25.133:6379 master
192.168.25.133:6380 slave
192.168.25.134:6379 master
192.168.25.134:6380 slave

2. 修改集群配置

cluster-enabled yes:开启集群

cluster-config-file nodes-6379.conf:集群节点信息的配置文件(同一台Linux运行多个实例记得名称不要重复)

cluster-node-timeout 15000:节点超时时间

3. 创建集群

方式一:直接批量创建,每个主节点带1个从节点。前面3个MASTER,后面3个SLAVE,但是不能指定具体的主从关系

redis-cli --cluster create 192.168.25.132:6379 192.168.25.133:6379 192.168.25.134:6379 192.168.25.132:6380 192.168.25.133:6380 192.168.25.134:6380 --cluster-replicas 1

方式二:先创建主节点,再添加从节点

添加主节点

redis-cli --cluster create 192.168.25.132:6379 192.168.25.133:6379 192.168.25.134:6379

添加从节点

redis-cli --cluster add-node 192.168.25.132:6380 192.168.25.132:6379 --cluster-slave --cluster-master-id ef201d6460ff6fcbb0ebda02dba4df118f3b876d
redis-cli --cluster add-node 192.168.25.133:6380 192.168.25.133:6379 --cluster-slave --cluster-master-id 1e78d19c63ca0c16d8c9449f72bd24baebb73b1f
redis-cli --cluster add-node 192.168.25.134:6380 192.168.25.134:6379 --cluster-slave --cluster-master-id bfb7815da6b96b030a35483698967e60b79c59cd

最后一个参数是主节点的ID,查看方式就是先redis-cli连上随便一台主节点集群,然后运行cluster nodes命令:

192.168.25.132:6379> CLUSTER NODES
bfb7815da6b96b030a35483698967e60b79c59cd 192.168.25.134:6379@16379 master - 0 1611058741637 3 connected 10923-16383
1e78d19c63ca0c16d8c9449f72bd24baebb73b1f 192.168.25.133:6379@16379 master - 0 1611058739624 2 connected 5461-10922
ef201d6460ff6fcbb0ebda02dba4df118f3b876d 192.168.25.132:6379@16379 myself,master - 0 1611058740000 1 connected 0-5460

操作完毕后,再次查看集群状态,3主3从,搭建完毕:

在这里插入图片描述

4. 集群槽位

Redis集群有16384个槽位,每个主节点管理互不重复的槽位。

当操作某个KEY时,通过CRC16算法进行哈希计算,得出该KEY所对应的槽位,从而确定应该连接哪个节点进行操作。

基本流程如下:

在这里插入图片描述

5. 主节点故障问题

集群解决的就是高可用问题,思考:当其中一台主节点挂掉之后,集群还能正常使用吗?

redis-cli -h 192.168.25.132 -p 6379 连接成功后,执行shutdown进行关闭

此时连接其他节点,查看集群状态:

  • master 132:6379 先是处于disconnected状态
  • 过一段时间后,master 进入fail状态
  • 此时,slave 132:6380 升级成 master 节点,并继承原先的0-5460槽位

在这里插入图片描述

打开132:6380的节点日志,可以更清晰地看到整个过程:
在这里插入图片描述

拓展:如果原主节点 132:6379 重新运行后,会怎么样?

说做就做,直接启动:

redis-server /usr/local/redis-5.0.8/conf/redis.conf

查看集群状态:
在这里插入图片描述
由此可见,此时 132:6379 大哥变小弟了,状态是 slave 从节点

猜你喜欢

转载自blog.csdn.net/qq_28834355/article/details/112642563
今日推荐