Redis集群管理:在线伸缩扩展、故障转移

柔光的暖阳◎ 2023-06-23 08:55 103阅读 0赞

实验环境

  1. 主机名 IP 端口
  2. node1 192.168.14.210 70018001
  3. node2 192.168.14.211 70028002
  4. node3 192.168.14.212 70038003

前提:已经部署集群,查看https://blog.csdn.net/tladagio/article/details/103580641

一、增加节点

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70

1、根据上篇文章在node4新增一个节点,然后启动redis

  1. [root@node4 ~]# redis-server /usr/local/redis/cluster/redis_7004.conf
  2. [root@node4 ~]# redis-server /usr/local/redis/cluster/redis_8004.conf

2、新增一个master节点7004(add-node new_host:new_port existing_host:existing_port)

  1. [root@node4 ~]# redis-cli -a 123456 --cluster add-node 192.168.14.216:7004 192.168.14.210:7001

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70 1

3、node1查看集群状态,

20191218143324621.png

当添加节点成功以后,新增的节点不会有任何数据,因为它没有分配任何的slot(hash槽)。我们需要为新节点手工分配slot。

4、给node4分配slot槽

  1. [root@node1 ~]# redis-cli -a 123456 --cluster reshard 192.168.14.216:7004

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70 2

5、node1节点再次查看集群状态

20191218150935144.png

6、新增一个slave节点8004

  1. [root@node1 ~]# redis-cli -a 123456 --cluster add-node 192.168.14.216:8004 192.168.14.210:7001 --cluster-slave

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70 3

7、查看集群状态

20191218151515837.png

二、删除节点

不能直接删除有数据的master节点,因为主节点的里面分配了slot 槽,所以我们这里必须先把7004里的slot 槽放入到其他的可用主节点中去,然后再进行移除节点操作才行,不然会出现数据丢失问题

1、在删除node4的master节点之前,先把数据移走

  1. [root@node1 ~]# redis-cli -a 123456 --cluster reshard 192.168.14.216:7004

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70 4

2、查看集群状态

20191218153424333.png

3、可以删除节点

  1. [root@node1 ~]# redis-cli -a 123456 --cluster del-node 192.168.14.216:7004 f0664536e57a84ea93c5550fe7c7328aa741dbf4

20191218153703467.png

原7004的slave节点自动变为7001的slave节点

2019121815391046.png

三、故障自动转移

20191218154748662.png

1、手动停掉node1的master节点7001,模拟故障

  1. [root@node1 ~]# redis-cli -c -h 192.168.14.210 -p 7001 -a 123456 shutdown

2、查看集群状态,7001已经故障。8004自动切换为master节点,8002变为8004的slave节点

20191218155058575.png

四、恢复故障

1、启动7001节点

  1. [root@node1 ~]# redis-server /usr/local/redis/cluster/redis_7001.conf

2、原master7001节点恢复之后,不会抢占master节点,而是变为slave节点。

20191218155754281.png

3、再次查看之前设定的值依然存在

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RsYWRhZ2lv_size_16_color_FFFFFF_t_70 5

至此,集群在线伸缩扩展,故障转移完成。

发表评论

表情:
评论列表 (有 0 条评论,103人围观)

还没有评论,来说两句吧...

相关阅读