哨兵用于实现redis集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作
参考主从配置先搭建一主二从模式
还是采用A B C D四个窗口,来配置
D:创建哨兵配置文件,并启动哨兵进程
[root@localhost bin]# cd redisConfig/ 进入配置文件夹 [root@localhost redisConfig]# vi sentinel.conf 创建名字为sentinel.conf的文件 文件内容为: sentinel monitor mymaster 127.0.0.1 6379 1 解释:sentinel monitor 主节点名字[随便起的] 主节点IP 主节点端口 哨兵投票的票数 哨兵投票宕机是否确认死亡后决定故障转移的票数 [root@localhost redisConfig]# ll 总用量 260 -rw-r--r--. 1 root root 63102 4月 24 19:39 redis-6379.conf -rw-r--r--. 1 root root 63102 4月 24 19:54 redis-6380.conf -rw-r--r--. 1 root root 63102 4月 24 19:56 redis-6381.conf -rw-r--r--. 1 root root 63089 4月 17 22:02 redis.conf -rw-r--r--. 1 root root 43 4月 24 23:17 sentinel.conf [root@localhost redisConfig]# 启动: [root@localhost bin]# redis-sentinel redisConfig/sentinel.conf 启动命令 9625:X 24 Apr 2021 23:25:06.639 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 9625:X 24 Apr 2021 23:25:06.639 # Redis version=5.0.12, bits=64, commit=00000000, modified=0, pid=9625, just started 9625:X 24 Apr 2021 23:25:06.639 # Configuration loaded 9625:X 24 Apr 2021 23:25:06.640 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 5.0.12 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode 运行一个哨兵 |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379 端口号 | `-._ `._ / _.-' | PID: 9625 pid `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 9625:X 24 Apr 2021 23:25:06.641 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 9625:X 24 Apr 2021 23:25:06.643 # Sentinel ID is bcedd6d917bb5ac16196b743632b8b7aa30c90ba 9625:X 24 Apr 2021 23:25:06.643 # +monitor master mymaster 127.0.0.1 6379 quorum 1 主机为6379 9625:X 24 Apr 2021 23:25:06.644 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379 丛机为6380 9625:X 24 Apr 2021 23:25:06.645 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 从机为 6381
测试,A将6379宕机,也就是关闭
等待一会看看哨兵的控制台
master宕机了 9625:X 24 Apr 2021 23:28:17.467 # +sdown master mymaster 127.0.0.1 6379 哨兵1票通过 9625:X 24 Apr 2021 23:28:17.467 # +odown master mymaster 127.0.0.1 6379 #quorum 1/1 9625:X 24 Apr 2021 23:28:17.467 # +new-epoch 1 开始进行故障转移 9625:X 24 Apr 2021 23:28:17.467 # +try-failover master mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:17.476 # +vote-for-leader bcedd6d917bb5ac16196b743632b8b7aa30c90ba 1 9625:X 24 Apr 2021 23:28:17.476 # +elected-leader master mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:17.476 # +failover-state-select-slave master mymaster 127.0.0.1 6379 选择81为提升Master的节点 9625:X 24 Apr 2021 23:28:17.529 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 开始执行故障转移 81 执行 slaveof no one 提升为master 9625:X 24 Apr 2021 23:28:17.529 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:17.584 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:18.154 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:18.154 # +failover-state-reconf-slaves master mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:18.202 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:19.170 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:19.170 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379 9625:X 24 Apr 2021 23:28:19.232 # +failover-end master mymaster 127.0.0.1 6379 切换master 从79->81 9625:X 24 Apr 2021 23:28:19.232 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6381 将80 的master 设置 为81 9625:X 24 Apr 2021 23:28:19.232 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381 将79 的master 设置为81 9625:X 24 Apr 2021 23:28:19.232 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381 9625:X 24 Apr 2021 23:28:49.237 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381
控制台输出完成后查看80 和 81
B:查看80
master已经切换成为81
C:查看81
已经提升成为master,并且有一个子节点80
A:重新启动79
默认为主节点,没有从节点,等待一会等哨兵扫描到
将6379 转化为slave,并将其master设置为 6381 9687:X 24 Apr 2021 23:42:32.157 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381
A:再次查看
切换成功,单哨兵 完成
关闭刚才的单哨兵控制台
D:ctrl+c
网址:https://www.cnblogs.com/joeymary/p/11492791.html
多哨兵就不写了,原理和单哨兵一样,就是多人选举决定是否宕机和slave升级票选,下面是配置参数
#sentinel 配置 #端口 port 26379 #目录 dir /tmp #日志文件 logfile /var/log/redis/redis-sentinel.log #是否在后台执行,yes:后台运行;no:不是后台运行 daemonize yes #是否开启保护模式,默认开启。开启后,只能根据配置的bind地址和密码进行访问。 protected-mode no #主节点信息,格式:sentinel <master-name> <ip> <redis-port> <quorum>; #<master-name> 自定义主节点名称; #<ip> <redis-port> 主节点的ip和端口; #<quorum> 多少个主节点检测到主节点有问题就进行故障转移 sentinel monitor mymaster 127.0.0.1 6379 2 #sentinel与master的心跳时间(毫秒),默认30秒。 sentinel down-after-milliseconds mymaster 30000 #故障转移时,最多可以有多少个slave同时对新的master进行数据同步,该值越小,完成故障转移的时间越长,但可用slave数量越多,该值越大,越多slave因为replication而不可用。建议设置为1。 sentinel parallel-syncs mymaster 1 #故障转移超时时间(毫秒),默认180秒。 sentinel failover-timeout mymaster 180000 #master和slaves密码。 #sentinel auth-pass mymaster password #当sentinel有警告级别的事件发生时执行(也有的资料说failover时触发)的脚本。 #sentinel notification-script <master-name> <script-path> #故障转移之后执行的脚本,并传递7个参数:<master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>。 #<master-name> 表示 master名字 #<role> 表示的是 每个redis实力的角色,如leader、observer #<state> 表示状态 #<from-ip> 原来的redis master #<from-port> #<to-ip> 故障迁移后的redis master #<to-port> #sentinel client-reconfig-script <master-name> <script-path>
作者:彼岸舞
时间:2021\05\05
内容关于:Redis
本文属于作者原创,未经允许,禁止转发