实现Redis的哨兵模式

  一、参考资料

  linux下redis的主从复制:https://www.cnblogs.com/javasl/p/12099046.html

  哨兵模式是在主从复制的基础上增加故障转移功能,简言之,当主节点宕机后,自动在从节点中选一个做主节点,无需人为干预,实现高可用。

  二、配置步骤

  【主节点配置】无任何额外配置

#bind 127.0.0.1
protected-mode no
daemonize yes

  【从节点配置】无任何额外配置

#bind 127.0.0.1
protected-mode no
daemonize yes
replicaof 192.168.43.121 6379

  【哨兵节点配置】增加sentinel配置

  1)安装哨兵节点

  哨兵节点安装在121服务器上,端口为6380,本机已经安装了redis-5.0.4,直接复制目录,修改配置即可。

[root@localhost myroom]# cp -r redis-5.0.4 redis-sentinel

  2)修改配置文件

port 6380
daemonize yes
protected-mode no
#bind 127.0.0.1
pidfile /var/run/redis_6380.pid
#指定别名 主节点ip 端口 哨兵个数(有几个哨兵监控到主节点宕机,执行转移)
sentinel monitor mymaster 192.168.43.121 6379 1
#5秒没有收到主节点的心跳,哨兵人为主节点宕机了
sentinel down-after-milliseconds mymaster 5000

  三、测试

  1)先启动redis的主节点和从节点

  2)启动哨兵节点

[root@localhost bin]# ./redis-server redis.conf --sentinel

  3)依然是主节点可以读写、从节点只能读

  4)关掉主节点,其中一个从节点也可以读写(升为主节点),另一个从节点只能读

  5)再关掉这个可以读写的节点,就剩下一个从节点了,它依然升为主节点,可以读写

  6)启动最初的那个主节点(121节点),它退为了从节点

  7)上面的任何操作都无需重启节点

  四、备注

  1)主节点变为从节点后,redis会自动回写配置文件,如下:

  

  2)哨兵节点第一次运行后,会自动回写配置文件,如下:

  

  3)多哨兵配置与单个哨兵配置一样,直接复制上面哨兵的配置文件即可

  4)生产中应该使用多哨兵,且哨兵的数量为奇数(因为半数+1的哨兵认为选主节点才会选择,1个哨兵与两个哨兵,3个哨兵与4个哨兵,5个哨兵与6个哨兵...其实作用是一样的,使用偶数会浪费一个节点)

  5)使用两个哨兵节点,假如宕掉一个哨兵,则哨兵模式失效(2的半数+1还是2,不会选择主节点,宕掉半数哨兵节点,则哨兵模式失效)

posted @ 2021-04-22 17:16  雷雨客  阅读(646)  评论(0编辑  收藏  举报