发布时间:2024-03-03 13:30:01
在 Redis 主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性较低,不适用于线上生产环境。PING
命令,并通过 Redis 节点的回复来判断其运行状态。PING
命令,在规定时间内没收到主服务器PONG
回复,则 Sentinel1 判定主服务器为“主观下线”。sudo apt install redis-sentinel
启动6379的redis服务器作为master主机: sudo /etc/init.d/redis-server start 启动6380的redis服务器,设置为6379的slave: redis-server --port 6380 $ redis-cli -p 6380 127.0.0.1:6380> slaveof 127.0.0.1 6379 OK 启动6381的redis服务器,设置为6379的salve redis-server --port 6381 $ redis-cli -p 6381 127.0.0.1:6381> slaveof 127.0.0.1 6379
port 26379 Sentinel monitor biancheng 127.0.0.1 6379 1配置文件说明如下:
port 26379 #sentinel监听端口,默认是26379,可以更改 sentinel monitor第二个配置项表示:让 sentinel 去监控一个地址为 ip:port 的主服务器,这里的 master-name 可以自定义;
方式一: redis-sentinel sentinel.conf 方式二: redis-server sentinel.conf --sentinel
#终止master的redis服务 sudo /etc/init.d/redis-server stop执行完上述命令,您会发现 6381 称为了新的 master,而其余节点变成了它的从机,执行命令验证:
127.0.0.1:6381> set webname www.biancheng.net OK哨兵的配置文件 sentinel.conf 也发生了变化:
#port 26379 #sentinel myid 4c626b6ff25dca5e757afdae2bd26a881a61a2b2 # Generated by CONFIG REWRITE dir "/home/biancheng" maxclients 4064 sentinel myid 4c626b6ff25dca5e757afdae2bd26a881a61a2b2 sentinel monitor biancheng 127.0.0.1 6379 1 sentinel config-epoch biancheng 2 sentinel leader-epoch biancheng 2 sentinel known-slave biancheng 127.0.0.1 6379 sentinel known-slave biancheng 127.0.0.1 6380 sentinel known-slave biancheng 127.0.0.1 6381 port 26379 sentinel current-epoch 2如果您想开启多个哨兵,只需配置要多个 sentinel.conf 文件即可,一个配置文件开启一个。
配置项 | 参数类型 | 说明 |
---|---|---|
dir | 文件目录 | 哨兵进程服务的文件存放目录,默认为 /tmp。 |
port | 端口号 | 启动哨兵的进程端口号,默认为 26379。 |
sentinel down-after-milliseconds | 在指定的毫秒数内,若主节点没有应答哨兵的 PING 命令,此时哨兵认为服务器主观下线,默认时间为 30 秒。 | |
sentinel parallel-syncs | 指定可以有多少个 Redis 服务同步新的主机,一般而言,这个数字越小同步时间越长,而越大,则对网络资源要求就越高。 | |
sentinel failover-timeout | 指定故障转移允许的毫秒数,若超过这个时间,就认为故障转移执行失败,默认为 3 分钟。 | |
sentinel notification-script | 脚本通知,配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。 | |
sentinel auth-pass |
若主服务器设置了密码,则哨兵必须也配置密码,否则哨兵无法对主从服务器进行监控。该密码与主服务器密码相同。 |