redis哨兵模式
1.了解redis主从复制原理
1.从库发送同步请求,主库收到请求后执行bgsave保存当前内存的数据到磁盘,
2.从库收到主库持久化数据,先清空自己当前内存的中的所有数据,然后持久化文件加载到内存
局限性:
1.执行主从复制之前,主库和从库数据备份一份
2.将主从复制文件写入到conf配置文件中
3.在业务低峰的时候进行主从复制
4.主从不能自动完成主从切换需要人工介入
总结:哨兵的引入依于主从复制,能够自动完成主从复制,不需要人工介入
2.哨兵的主要功能
Redis Sentinel 是一个分布式系统, Redis Sentinel为Redis提供高可用性。可以在没有人为干预的情况下阻止某种类型的故障。
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance)该系统执行以下三个任务:
1.监控(Monitoring):
Sentinel 会不断地定期检查你的主服务器和从服务器是否运作正常。
2.提醒(Notification):
当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API向管理员或者其他应用程序发送通知。
3.自动故障迁移(Automatic failover):
当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作,它会将失效主 服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器 改为 复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服 务器的地址, 使得集群可以使用新主服务器代替失效服务器
ps:它类似mysql的MHA可以自动故障转移,也可以使用中间或者代码实现读写分离
3.结构规划
角色 IP 端口
Master 10.0.0.91 6379
Sentinel-01 26379
Master 10.0.0.92 6379
Sentinel-01 26379
Master 10.0.0.93 6379
Sentinel-01 26379
4.具体配置(redis安装见我上一次发的文档)
…
mkdir -p /data/redis_cluster/redis_26379
mkdir -p /opt/redis_cluster/redis_26379/{conf,pid,logs}
ip=$(ifconfig | awk ‘NR==2{print $2}’)
cat>/opt/redis_cluster/redis_26379/conf/redis_26379.conf<<EOF
bind $ip
port 26379
daemonize yes
logfile /opt/redis_cluster/redis_26379/logs/redis_26379.log
dir /data/redis_cluster/redis_26379
#mymaster主节点别名 主节点 ip 和端口,判断主节点失败,两个 sentinel 节点同意
sentinel monitor mymaster 10.0.0.91 6379 2
#选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
sentinel down-after-milliseconds mymaster 3000
#向新的主节点发起复制操作的从节点个数,1轮询发起复制
sentinel parallel-syncs mymaster 1
#故障转移超时时间
sentinel failover-timeout mymaster 18000
EOF
…
其它配置:在redis从库conf中写入主从配置文件:
echo slaveof 10.0.0.51 6379 >> /opt/redis_cluster/redis_6379/conf/redis_6379.conf
重启服务:
pkill redis
redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
启动哨兵:
redis-sentinel /opt/redis_cluster/redis_26379/conf/redis_26379.conf
5.哨兵常用操作API
登陆: redis-cli -h 10.0.0.91 -p 26379
Sentinel masters --查看组的信息
Sentinel master --查看主的信息
Sentinel slaves --查看从的信息
Sentinel sentinels
Sentinel get-master-addr-by-name --查看主节点的信息
Sentinel failover
Sentinel flushconfig