[关闭]
@zhangsiming65965 2019-02-14T03:22:38.000000Z 字数 15308 阅读 215

Redis主从复制及Sentinel高可用哨兵

云计算

---Author:张思明 ZhangSiming

---Mail:1151004164@cnu.edu.cn

---QQ:1030728296

如果有梦想,就放开的去追;
因为只有奋斗,才能改变命运。


一、Redis主从复制

1.1实验环境

主机名 IP 用途
Redis01 192.168.17.250 Redis-Master
Redis02 192.168.17.251 Redis-Slave1
Redis03 192.168.17.252 Redis-Slave2
  1. [root@ZhangSiming ~]# cat /etc/redhat-release
  2. CentOS Linux release 7.5.1804 (Core)
  3. [root@ZhangSiming ~]# uname -r
  4. 3.10.0-862.el7.x86_64
  5. [root@ZhangSiming ~]# systemctl stop firewalld
  6. [root@ZhangSiming ~]# systemctl disable firewalld
  7. [root@ZhangSiming ~]# getenforce 0
  8. Disabled

1.2利用ansible-playbook一键给redis集群部署redis服务

入口触发配置文件

  1. [root@Zhangsiming zhangsiming]# cat redis.yaml
  2. ---
  3. - hosts: Nginx
  4. remote_user: root
  5. gather_facts: True
  6. roles:
  7. - redis

tasks主.yaml文件

  1. [root@Zhangsiming zhangsiming]# cat roles/redis/tasks/main.yaml
  2. ---
  3. - name: transfer
  4. copy: src=redis-4.0.11.tar.gz dest=/tmp/
  5. - name: install
  6. script: redis.sh
  7. - name: config
  8. copy: src=redis.conf dest=/usr/local/redis/conf/redis.conf
  9. - name: data dir
  10. file: path=/data/redis/ state=directory owner=root group=root
  11. - name: youhua
  12. copy: src=limits.conf dest=/etc/security/limits.conf
  13. - name: youhua1
  14. shell: echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf
  15. - name: youhua2
  16. shell: echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
  17. - name: youhua3
  18. shell: echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local ; echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local ; echo never > /sys/kernel/mm/transparent_hugepage/enabled ; echo never > /sys/kernel/mm/transparent_hugepage/defrag

安装剧本tree

  1. .
  2. ├── redis.yaml
  3. └── roles
  4. └── redis
  5. ├── files
  6.    ├── limits.conf
  7.    ├── redis-4.0.11.tar.gz
  8.    ├── redis.conf
  9.    └── redis.sh
  10. └── tasks
  11. └── main.yaml
  12. 4 directories, 6 files

部署过程

  1. [root@Zhangsiming zhangsiming]# ansible-playbook redis.yaml
  2. PLAY [Nginx] ***********************************************************************
  3. TASK [Gathering Facts] *************************************************************
  4. ok: [web01]
  5. ok: [web02]
  6. ok: [web03]
  7. TASK [redis : transfer] ************************************************************
  8. changed: [web02]
  9. changed: [web03]
  10. changed: [web01]
  11. TASK [redis : install] *************************************************************
  12. changed: [web02]
  13. changed: [web01]
  14. changed: [web03]
  15. TASK [redis : config] **************************************************************
  16. changed: [web03]
  17. changed: [web01]
  18. changed: [web02]
  19. TASK [redis : data dir] ************************************************************
  20. changed: [web02]
  21. changed: [web03]
  22. changed: [web01]
  23. TASK [redis : youhua] **************************************************************
  24. changed: [web01]
  25. changed: [web02]
  26. changed: [web03]
  27. TASK [redis : youhua1] *************************************************************
  28. changed: [web02]
  29. changed: [web03]
  30. changed: [web01]
  31. TASK [redis : youhua2] *************************************************************
  32. changed: [web01]
  33. changed: [web02]
  34. changed: [web03]
  35. TASK [redis : youhua3] *************************************************************
  36. changed: [web02]
  37. changed: [web03]
  38. changed: [web01]
  39. TASK [redis : youhua4] *************************************************************
  40. changed: [web01]
  41. changed: [web02]
  42. changed: [web03]
  43. TASK [redis : youhua5] *************************************************************
  44. changed: [web02]
  45. changed: [web03]
  46. changed: [web01]
  47. PLAY RECAP *************************************************************************
  48. web01 : ok=11 changed=10 unreachable=0 failed=0
  49. web02 : ok=11 changed=10 unreachable=0 failed=0
  50. web03 : ok=11 changed=10 unreachable=0 failed=0
  51. #成功部署

注意:由于sysctl -p ,exit等命令不能在剧本中执行,所以需要到每个节点手动执行

  1. [root@ZhangSiming ~]# sysctl -p
  2. net.core.somaxconn = 10240
  3. vm.overcommit_memory = 1
  4. [root@ZhangSiming ~]# exit
  5. logout
  6. #执行完毕启动redis-server,查看日志文件
  7. [root@ZhangSiming ~]# redis-server /usr/local/redis/conf/redis.conf
  8. [root@ZhangSiming ~]# netstat -antup | grep redis
  9. tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 15888/redis-server
  10. [root@ZhangSiming ~]# cat /data/redis/redis.log
  11. 15887:C 10 Feb 13:01:32.314 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
  12. 15887:C 10 Feb 13:01:32.314 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=15887, just started
  13. 15887:C 10 Feb 13:01:32.314 # Configuration loaded
  14. _._
  15. _.-``__ ''-._
  16. _.-`` `. `_. ''-._ Redis 4.0.11 (00000000/0) 64 bit
  17. .-`` .-```. ```\/ _.,_ ''-._
  18. ( ' , .-` | `, ) Running in standalone mode
  19. |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
  20. | `-._ `._ / _.-' | PID: 15888
  21. `-._ `-._ `-./ _.-' _.-'
  22. |`-._`-._ `-.__.-' _.-'_.-'|
  23. | `-._`-._ _.-'_.-' | http://redis.io
  24. `-._ `-._`-.__.-'_.-' _.-'
  25. |`-._`-._ `-.__.-' _.-'_.-'|
  26. | `-._`-._ _.-'_.-' |
  27. `-._ `-._`-.__.-'_.-' _.-'
  28. `-._ `-.__.-' _.-'
  29. `-._ _.-'
  30. `-.__.-'
  31. 15888:M 10 Feb 13:01:32.317 # Server initialized
  32. 15888:M 10 Feb 13:01:32.318 * Ready to accept connections
  33. #启动成功,日志没有警告(已经优化完毕)

1.3开启主从同步

开启方法很简单,只需在从库指定主库的IP和端口即可。

  1. [root@ZhangSiming ~]# tail -1 /usr/local/redis/conf/redis.conf
  2. SLAVEOF 192.168.17.250 6379
  3. #指定完主库IP端口,重启Redis
  4. [root@ZhangSiming ~]# redis-cli shutdown
  5. [root@ZhangSiming ~]# redis-server /usr/local/redis/conf/redis.conf

交互界面开启主从复制(无需重启Redis)

  1. [root@ZhangSiming ~]# redis-cli slaveof 192.168.17.134 6379
  2. OK
  3. #开启主从复制
  4. [root@ZhangSiming ~]# cat /data/redis/redis.log
  5. ...省略...
  6. 16103:S 10 Feb 14:57:40.045 * Full resync from master: 196da898afbb5c81683dcb7b8e6bc29a1dbcb570:1069
  7. 16103:S 10 Feb 14:57:40.045 * Discarding previously cached master state.
  8. 16103:S 10 Feb 14:57:40.076 * MASTER <-> SLAVE sync: receiving 197 bytes from master
  9. 16103:S 10 Feb 14:57:40.076 * MASTER <-> SLAVE sync: Flushing old data
  10. 16103:S 10 Feb 14:57:40.077 * MASTER <-> SLAVE sync: Loading DB in memory
  11. 16103:S 10 Feb 14:57:40.077 * MASTER <-> SLAVE sync: Finished with success
  12. #开启主从复制且为全部模式

如果从来没有同步过数据,会完整地把主库的所有数据同步过来,这种方式叫主从全部同步
如果曾经同步过一些数据,就会有一些主库数据的缓存,就可以增量同步新增加的部分过来到从库,这种方式叫主从部分同步

日志分析

  1. [root@ZhangSiming ~]# cat /data/redis/redis.log
  2. ...省略...
  3. 16088:S 10 Feb 14:44:15.127 * Connecting to MASTER 192.168.17.250:6379
  4. 16088:S 10 Feb 14:44:15.127 * MASTER <-> SLAVE sync started
  5. 16088:S 10 Feb 14:44:15.128 * Non blocking connect for SYNC fired the event.
  6. 16088:S 10 Feb 14:44:15.128 * Master replied to PING, replication can continue...
  7. 16088:S 10 Feb 14:44:15.129 * Partial resynchronization not possible (no cached master)
  8. 16088:S 10 Feb 14:44:15.129 * Full resync from master: 196da898afbb5c81683dcb7b8e6bc29a1dbcb570:644
  9. ...省略...
  10. #这种日志显示表示是一个主从全部同步,即从库没有缓存
  11. [root@ZhangSiming ~]# cat /data/redis/redis.log
  12. ...省略...
  13. 16103:S 10 Feb 14:45:13.859 * Trying a partial resynchronization (request 196da898afbb5c81683dcb7b8e6bc29a1dbcb570:776).
  14. 16103:S 10 Feb 14:45:13.860 * Successful partial resynchronization with master.
  15. 16103:S 10 Feb 14:45:13.860 * MASTER <-> SLAVE sync: Master accepted a Partial Resynchronization.
  16. ...省略...
  17. #这种日志显示表示是一个主从部分同步,即从库有缓存

1.4Redis主从同步的停止

关闭主从复制只需要交互界面输入:redis-cli slaveof no one。

  1. [root@ZhangSiming ~]# redis-cli slaveof no one
  2. OK
  3. #关闭主从复制
  4. [root@ZhangSiming ~]# cat /data/redis/redis.log
  5. ...省略...
  6. 16103:M 10 Feb 14:56:36.385 * MASTER MODE enabled (user request from 'id=4 addr=127.0.0.1:35242 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=slaveof')
  7. #启动了主动模式

1.5给主从同步加密

MySQL主从复制从库找主库连接都需要验证账户,Redis同样可以设置。

1.5.1为Redis-master平滑设置链接密码

  1. [root@ZhangSiming ~]# redis-cli config set requirepass 666666
  2. OK
  3. [root@ZhangSiming ~]# redis-cli -a 666666 config rewrite
  4. Warning: Using a password with '-a' option on the command line interface may not be safe.
  5. OK
  6. #设置密码为666666

1.5.2为从库提供主从同步密码验证

  1. [root@ZhangSiming ~]# redis-cli config set masterauth "666666"
  2. OK
  3. [root@ZhangSiming ~]# redis-cli config rewrite
  4. OK
  5. #添加验证成功
  6. #看一下从库日志
  7. [root@ZhangSiming ~]# cat /data/redis/redis.log
  8. ...省略...
  9. 16028:S 10 Feb 15:07:33.540 # Error condition on socket for SYNC: No route to host
  10. 16028:S 10 Feb 15:07:33.642 * Connecting to MASTER 192.168.17.250:6379
  11. 16028:S 10 Feb 15:07:33.642 * MASTER <-> SLAVE sync started
  12. 16028:S 10 Feb 15:07:36.546 # Error condition on socket for SYNC: No route to host
  13. 16028:S 10 Feb 15:07:36.660 * Connecting to MASTER 192.168.17.250:6379
  14. 16028:S 10 Feb 15:07:36.660 * MASTER <-> SLAVE sync started
  15. #之前因为没有auth验证找主库一直返回"No route to host",验证之后才开始主从同步

二、Redis-Sentinel高可用哨兵

2.1Redis-Sentinel高可用哨兵应用场景,及原理剖析

应用场景图

Redis-sentinel高可用哨兵.png-84.7kB

原理剖析

当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行;
于是我们架构Redis主从复制架构,进行数据备份,保证了安全性。

自动故障转移机制:

主从复制的Redis虽然有备份冗余,但是一旦主Redis宕机的话,就会使整个主从复制体系因为没有主Redis而崩溃;
Redis-Sentinel就是当主Redis挂了,让从Redis升级成为主Redis的一种高可用方案

Redis-Sentinel的主要功能

监控---->通知---->选举,自动切换

2.2部署三台Redis主从复制

  1. #利用ansible-playbook一键部署
  2. [root@Zhangsiming zhangsiming]# ansible-playbook redis.yaml
  3. PLAY [Nginx] ***********************************************************************
  4. TASK [Gathering Facts] *************************************************************
  5. ok: [web01]
  6. ok: [web02]
  7. ok: [web03]
  8. TASK [redis : transfer] ************************************************************
  9. changed: [web02]
  10. changed: [web03]
  11. changed: [web01]
  12. TASK [redis : install] *************************************************************
  13. changed: [web02]
  14. changed: [web01]
  15. changed: [web03]
  16. TASK [redis : config] **************************************************************
  17. changed: [web03]
  18. changed: [web01]
  19. changed: [web02]
  20. TASK [redis : data dir] ************************************************************
  21. changed: [web02]
  22. changed: [web03]
  23. changed: [web01]
  24. TASK [redis : youhua] **************************************************************
  25. changed: [web01]
  26. changed: [web02]
  27. changed: [web03]
  28. TASK [redis : youhua1] *************************************************************
  29. changed: [web02]
  30. changed: [web03]
  31. changed: [web01]
  32. TASK [redis : youhua2] *************************************************************
  33. changed: [web01]
  34. changed: [web02]
  35. changed: [web03]
  36. TASK [redis : youhua3] *************************************************************
  37. changed: [web02]
  38. changed: [web03]
  39. changed: [web01]
  40. TASK [redis : youhua4] *************************************************************
  41. changed: [web01]
  42. changed: [web02]
  43. changed: [web03]
  44. TASK [redis : youhua5] *************************************************************
  45. changed: [web02]
  46. changed: [web03]
  47. changed: [web01]
  48. PLAY RECAP *************************************************************************
  49. web01 : ok=11 changed=10 unreachable=0 failed=0
  50. web02 : ok=11 changed=10 unreachable=0 failed=0
  51. web03 : ok=11 changed=10 unreachable=0 failed=0
  52. #成功部署

开启主从复制,查看主从复制状态

  1. [root@ZhangSiming ~]# redis-cli slaveof 192.168.17.134 6379
  2. OK Already connected to specified master
  3. [root@ZhangSiming ~]# redis-cli config set masterauth "666666"
  4. OK
  5. [root@ZhangSiming ~]# redis-cli config rewrite
  6. OK
  7. #从库添加验证密码,开启主从复制
  8. #主库查看主从复制信息
  9. [root@ZhangSiming ~]# redis-cli -a 666666 info replication
  10. Warning: Using a password with '-a' option on the command line interface may not be safe.
  11. # Replication
  12. role:master
  13. #自身是master
  14. connected_slaves:2
  15. #连接到两个从库
  16. slave0:ip=192.168.17.253,port=6379,state=online,offset=1895,lag=0
  17. slave1:ip=192.168.17.148,port=6379,state=online,offset=1895,lag=0
  18. #这两条是从库的IP端口
  19. master_replid:196da898afbb5c81683dcb7b8e6bc29a1dbcb570
  20. master_replid2:0000000000000000000000000000000000000000
  21. master_repl_offset:1895
  22. second_repl_offset:-1
  23. repl_backlog_active:1
  24. repl_backlog_size:1048576
  25. repl_backlog_first_byte_offset:1
  26. repl_backlog_histlen:1895

2.3redis主从辅助主库的高可用部署(redis-sentinel)

2.3.1修改配置三台Redis服务器的sentinel.conf配置文件(安装的时候从源码包拷贝到conf目录下的)

  1. [root@ZhangSiming ~]# cd /usr/local/redis/conf/
  2. [root@ZhangSiming conf]# ls
  3. redis.conf sentinel.conf
  4. [root@ZhangSiming conf]# vim sentinel.conf
  5. [root@ZhangSiming conf]# sed -n "21p;69p;98p;106p;131p;206p;207p;208p;209p" sentinel.conf
  6. port 6800
  7. #sentinel监听6800端口
  8. sentinel monitor mymaster 192.168.17.134 6379 2
  9. #监听主从复制master为192.168.17.134机器,6379端口,2表示同时两台sentinel发现问题就进行故障转移
  10. sentinel down-after-milliseconds mymaster 5000
  11. #master节点宕机多少时间后检查
  12. sentinel parallel-syncs mymaster 1
  13. #减轻master压力
  14. sentinel failover-timeout mymaster 15000
  15. #故障转移超时时间
  16. daemonize yes
  17. #守护进程模式
  18. logfile "/var/log/redis/sentinel.log"
  19. #Sentinel日志文件,记得提前创建/var/log/redis/目录
  20. pidfile "/var/run/sentinel.pid"
  21. #SentinelPID文件
  22. protected-mode no
  23. #禁止保护模式

尤其注意:每个sentinel的ID不能相同!

2.3.1启动三台的redis-sentinel服务

  1. [root@ZhangSiming conf]# redis-sentinel /usr/local/redis/conf/sentinel.conf
  2. [root@ZhangSiming conf]# redis-cli -p 6800 info sentinel
  3. # Sentinel
  4. sentinel_masters:1
  5. sentinel_tilt:0
  6. sentinel_running_scripts:0
  7. sentinel_scripts_queue_length:0
  8. sentinel_simulate_failure_flags:0
  9. master0:name=mymaster,status=ok,address=192.168.17.134:6379,slaves=2,sentinels=3
  10. #master下有两个从库,三个哨兵监控master节点存活
  11. #注意,主从复制必须开

测试

  1. [root@ZhangSiming conf]# redis-cli -p 6379 shutdown
  2. #停掉redis主从复制master节点
  3. [root@ZhangSiming conf]# cat /var/log/redis/sentinel.log
  4. 23233:X 10 Feb 16:29:13.113 # +sdown master mymaster 192.168.17.134 6379
  5. 23233:X 10 Feb 16:29:13.187 # +new-epoch 1
  6. 23233:X 10 Feb 16:29:13.187 # +vote-for-leader c2f28b2bfbfdf33253e0731bdef987fcd0af077d 1
  7. 23233:X 10 Feb 16:29:13.980 # +config-update-from sentinel c2f28b2bfbfdf33253e0731bdef987fcd0af077d 192.168.17.253 6800 @ mymaster 192.168.17.134 6379
  8. 23233:X 10 Feb 16:29:13.980 # +switch-master mymaster 192.168.17.134 6379 192.168.17.148 6379
  9. #观察sentinel日志,发现自动转移master为192.168.17.148
  10. 23233:X 10 Feb 16:29:13.981 * +slave slave 192.168.17.253:6379 192.168.17.253 6379 @ mymaster 192.168.17.148 6379
  11. 23233:X 10 Feb 16:29:13.981 * +slave slave 192.168.17.134:6379 192.168.17.134 6379 @ mymaster 192.168.17.148 6379
  12. [root@ZhangSiming conf]# redis-cli -p 6800 info sentinel
  13. # Sentinel
  14. sentinel_masters:1
  15. sentinel_tilt:0
  16. sentinel_running_scripts:0
  17. sentinel_scripts_queue_length:0
  18. sentinel_simulate_failure_flags:0
  19. master0:name=mymaster,status=ok,address=192.168.17.148:6379,slaves=2,sentinels=3
  20. #info sentinel中查看果然192.168.17.148变为了新的主从复制master,被继续监控
  21. [root@ZhangSiming conf]# redis-server /usr/local/redis/conf/redis.conf
  22. [root@ZhangSiming ~]# redis-cli -p 6379 shutdown
  23. #启动原来的主机,把新的master宕掉
  24. [root@ZhangSiming conf]# redis-cli -p 6800 info sentinel
  25. # Sentinel
  26. sentinel_masters:1
  27. sentinel_tilt:0
  28. sentinel_running_scripts:0
  29. sentinel_scripts_queue_length:0
  30. sentinel_simulate_failure_flags:0
  31. master0:name=mymaster,status=ok,address=192.168.17.134:6379,slaves=2,sentinels=3
  32. #Redis主从复制master又变回来了

2.3Redis-Sentinel的VIP机制

上述方式已经实现了Redis主从复制master节点的高可用,可以在master节点宕机的时候自动提升一个从节点为master主节点;
但是这总方法会改变开发连接的IP地址,事实上Redis虽然高可用了,但是IP地址来回变,这也是麻烦的;
所以可以写一个VIP漂移脚本,使得即使Redismaster宕机了,用户或者开发访问的VIP始终不变。

修改配置文件

  1. [root@ZhangSiming conf]# tail -1 /usr/local/redis/conf/sentinel.conf
  2. sentinel client-reconfig-script mymaster /usr/local/redis/mymaster.sh
  3. #指定漂移VIP脚本的路径
  4. [root@ZhangSiming conf]# cat /usr/local/redis/mymaster.sh
  5. #!/bin/bash
  6. MASTER_IP=$6
  7. #$6为Sentinel检测到需要切换master时候传入的参数,为新的masterIP地址
  8. LOCAL_IP="192.168.17.134"
  9. #服务器自身的IP,每个Sentinel服务器不同
  10. VIP="192.168.17.177"
  11. #自己设置的VIP
  12. NETMASK="24"
  13. INTERFACE="ens32"
  14. if [ "${MASTER_IP}" == "${LOCAL_IP}" ];then
  15. /usr/sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
  16. #上VIP
  17. /usr/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
  18. #使网卡配置立即生效
  19. exit 0
  20. else
  21. /usr/sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
  22. #下VIP
  23. exit 0
  24. fi
  25. exit1

重启所有Redis-Sentinel,测试VIP漂移

  1. [root@ZhangSiming conf]# redis-cli -p 6800 shutdown
  2. [root@ZhangSiming conf]# redis-sentinel /usr/local/redis/conf/sentinel.conf
  3. #重启Redis-Sentinel
  4. [root@ZhangSiming conf]# redis-cli -p 6800 info sentinel
  5. # Sentinel
  6. sentinel_masters:1
  7. sentinel_tilt:0
  8. sentinel_running_scripts:0
  9. sentinel_scripts_queue_length:0
  10. sentinel_simulate_failure_flags:0
  11. master0:name=mymaster,status=ok,address=192.168.17.134:6379,slaves=2,sentinels=3
  12. #查看info sentinel
  13. [root@ZhangSiming conf]# ip addr add 192.168.17.177/24 dev ens32
  14. [root@ZhangSiming conf]# arping -q -c 3 -A 192.168.17.177 -I ens32
  15. #第一次先在master上添加VIP,并立即生效
  16. [root@ZhangSiming conf]# ip addr show ens32 | grep 192.168.17
  17. inet 192.168.17.134/24 brd 192.168.17.255 scope global noprefixroute dynamic ens32
  18. inet 192.168.17.177/24 scope global secondary ens32
  19. #停止Redis-server的服务
  20. [root@ZhangSiming ~]# redis-cli -p 6379 shutdown
  21. [root@ZhangSiming ~]# redis-cli -p 6800 info sentinel
  22. # Sentinel
  23. sentinel_masters:1
  24. sentinel_tilt:0
  25. sentinel_running_scripts:0
  26. sentinel_scripts_queue_length:0
  27. sentinel_simulate_failure_flags:0
  28. master0:name=mymaster,status=ok,address=192.168.17.253:6379,slaves=2,sentinels=3
  29. [root@ZhangSiming ~]# ip addr show ens32 | grep 192.168
  30. inet 192.168.17.134/24 brd 192.168.17.255 scope global noprefixroute dynamic ens32
  31. #master切换为192.168.17.253,VIP也在这里消失了
  32. #切换为192.168.17.253查看
  33. [root@ZhangSiming ~]# ip addr show ens32 | grep 192.168
  34. inet 192.168.17.253/24 brd 192.168.17.255 scope global noprefixroute dynamic ens32
  35. inet 192.168.17.177/24 scope global secondary ens32
  36. #出现VIP,VIP漂移成功

最后的最后,一定要注意每个Sentinel哨兵的ID不能相同,否则info Sentinel检测不出来,也不能实现Redis高可用故障转移!!!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注