Redis-Sentinel机制主要用三个功能:
(1)监控:不停监控Redis主从节点是否安装预期运行
(2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员
(3)自动故障转移:当主节点下线之后,哨兵可以从主节点的多个从节点中选出一个为主节点,并更新配置文件和其他从节点的主节点信息。
三台机器:
192.168.133.131 | slaveof |
192.168.133.129 | master |
192.168.133.131 | slaveof |
关闭三台机器的防火墙
暂时关闭防火墙 | systemctl stop firewalld service iptables stop |
永久关闭防火墙 | systemctl disable firewalld chkconfig iptables off |
重启防火墙 | systemctl enable firewalld service iptables restart |
永久关闭后重启 | chkconfig iptables on(暂时没有试过) |
附redis配置文件连接
附sentinel配置文件连接
三台机器的redis.conf(主要是这几项):
bind 0.0.0.0注释掉,
requirepass 123456 (三台机器的密码必须相同)
# 主从配置,slave 访问 master 需要密码,三台机器必须都配置才能使用哨兵自动切换
masterauth 123456
192.168.133.129:主节点配置文件
#注释掉bind
#bind 0.0.0.0
# 如果为 yes 只能通过(127.0.0.1)访问
protected-mode no
# 用守护线程的方式启动(也就是后台启动)
daemonize yes
# pid 文件(建议放在redis启动目录)
pidfile "/var/run/redis_6379.pid"
# 日志,表示命令页面输出
logfile ""
# 数据库数量
databases 16
# 开启 rdb 并设置备份规则
save 900 1
save 300 10
save 60 10000
rdb持久化文件名称
dbfilename "dump.rdb"
# rdb 以及 aof 备份文件
dir "/usr/local/bin"
# rbd 文件名
dbfilename dump.rdb
# 密码(三台机器的密码必须相同)
requirepass 12345
# 主从配置,slave 访问 master 需要密码,三台机器必须都配置才能使用哨兵自动切换
masterauth 12345
# Sentinel 模块的配置,从Redis 5.0版本开始,slaveof配置选项被重命名为replicaof。
slave-priority 100
从节点的配置文件:
相比主节点,2个从节点的配置文件多了: replicaof 10.211.55.8 6379(因为我用的是5.0版本所以这里使用replicaof,如果是5.0版本以下,则要使用slaveof)
在redis中,默认从节点默认是只读,不可以写
下图是加在最后一行
sentinel.conf配置文件:
protected-mode no
#守护进程运行
daemonize yes
# sentinel 端口
port 26379
dir "/usr/local/bin/config"
# 注意,三个配置文件一样,检测同一个主节点
# 哨兵sentinel监控的redis主节点的 ip port
# master-name 可以自己命名的主节点名字 只能由字母A-z、数字0-9 、这三个字符".-_"组成。
# quorum 当这些quorum个数sentinel哨兵认为master主节点失联 那么这时 客观上认为主节点失联了
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 192.168.133.129 6379 1
# 当在Redis实例中开启了requirepass foobared 授权密码 这样所有连接Redis实例的客户端都要提供密码
# 设置哨兵sentinel 连接主从的密码 注意必须为主从设置一样的验证密码
# sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster 12345
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
# sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
#这个数字越小,完成failover所需的时间就越长,
#但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。
#可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves#依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 180000
#由于当前sentinel守护进程运行的,所以具体的日志内容我们设置在当前目录下的sentinel.log中查看
#这个日志打开切换时要重新进来才能看到下一步的日志内容(哈哈,我第一次打开一直切换后没退出一直在等)
logfile ./sentinel.log
redis启动相关命令
redis启动命令 | redis-server redis.conf |
sentinel启动命令 | redis-sentinel sentinel.conf |
进入redis客户端命令 | redis-cli -h host -p port |
redis进入客户端操作需要密码 | auth 12345(12345为密码) |
redis服务关闭命令 | 分为两种情况:未设置密码:reids-cli shhudown 设置密码:上面关闭的命令无效,需要加上密码: redis-cli -a [password],回车后输入:shutdown 即可关闭redis,输入exit 退出。 |
redis关闭相关命令关断(最常用) | 使用ps -ef|grep redis 可以查看redis的项目服务内容,其中包括哨兵等等,获取相关服务pid,使用kill -9 pid 快速关闭相关服务 |
切换后setinel日志内容(建议使用tac查看哈)