是什么
主从模式下,主机宕机,需要手动提升从机为主机,主机恢复后,也需要手动设置。比较麻烦,容易出错
哨兵模式:给集群分配一个站岗的
哨兵的作用:是对Redis系统的运行情况监控
它是一个独立进程,它的功能:
- 监控主数据库和从数据库是否运行正常
- 主数据出现故障后自动将从数据库转化为主数据库
- 如果主机宕,开启选举工作,选择一个从做主机
怎么做
虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的
Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel)。
环境准备:一主两从,启动任一从机时,启动哨兵模式
添加哨兵
1、配置哨兵
一主两从,启动任一从机时,启动哨兵模式
哨兵主要是用来监听主服务器的,所以一般把哨兵部署在从服务器上监听。
在从机的bin目录下添加配置文件:sentinel.conf
vim sentinel.conf
在配置中输入:
# sentinel monitor mastername 内网IP(127.0.0.1) 6379 1
sentinel monitor mastername 192.168.77.130 6379 1
参数:
- mastername 监控主数据的名称,自定义
- 127.0.0.1:监控主数据库的IP
- 6379:端口
- 1:最低通过票数
2、启动主从机
哨兵是一个单独的进程,启动之前确保主从服务是正常的。先启动主服务,后启动从服务
日志写入指定的文件:
[root@xj0927 bin]# ./redis-sentinel ./sentinel.conf >sent.log &
[1] 3045
启动redis:
# 主机启动:
[root@xj0927 redis]# ./bin/redis-server ./redis.conf
# 从机启动:
[root@xj0927 redis3]# ./bin/redis-server ./redis.conf
启动后,会自动配置sentinel.conf,并生成内容:若下次再启动redis需要删除下生成的内容
sentinel myid 1f9750f7d952cee9048fcd4c7c8abb20b1ba3961
# Generated by CONFIG REWRITE
port 26379
dir "/home/admin/myapps/redis3/bin"
protected-mode no
sentinel deny-scripts-reconfig yes
sentinel monitor mastername 192.168.77.130 6379 1
sentinel config-epoch mastername 0
sentinel leader-epoch mastername 1
sentinel known-replica mastername 192.168.77.130 6380
sentinel current-epoch 1
3、启动哨兵
注意:若再次启动哨兵,需要删除myid唯一标识(最好启动一次,就新配置一次)
[root@xj0927 redis3]# ./bin/redis-server redis.conf --sentinel
4、使用哨兵
假如此时:断电了,硬盘故障,坏了等等
# 杀死主机pid:kill -9 2773
[root@xj0927 redis]# kill -9 2773
哨兵工作之前的从机:
192.168.77.130:6380> info replication
# Replication
role:slave
master_host:192.168.77.130
master_port:6379
哨兵工作之后: (从机自动提升为主机)
192.168.77.130:6380> info replication
# Replication
role:master
connected_slaves:0
同时也会自动修改redis.conf
的主从机配置文件:(指向了新主机)
replicaof 192.168.77.130 6380
再次启动原有的主机,原有的主机会变成从机
主从复制与哨兵模式对比
主从复制
主机有写入权限。从机没有,只有可读。
意外宕机方案: 手动恢复:人为重启服务器,主机宕,把从机设置为主机。
哨兵模式
意外宕机方案: 自动恢复。使用哨兵监控。自动切换主从。