文章目录
服务器 | IP |
---|---|
Redis服务器(主) | 192.168.1.160 |
Redis服务器(从) | 192.168.1.170 |
Redis服务器(哨兵) | 192.168.1.180 |
一、服务器安装redis服务
参考博客:https://blog.csdn.net/renfeigui0/article/details/102986507
二、服务器160、170配置主从,使主从复制工作正常运行
1、服务器160、170配置主从复制。参考博客:https://blog.csdn.net/renfeigui0/article/details/102983135
2、服务器170查找并编辑redis.conf,在下图所示位置**“JUST COMMENT THE FOLLOWING LINE.”**下方,增加redis服务器本机IP(192.168.1.170),设置后其他主机(哨兵)才可以远程访问本机的redis服务,未设置则只能本机127.0.0.1才可访问redis服务。
3、确保服务器210、220,开放防火墙6379端口。
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=6379/tcp
三、服务器180开启sentinel(哨兵)服务,监控主从复制运行状态
1、编辑sentinel的配置文件,修改后如下图。
find / -name sentinel.conf
cp /usr/local/redis/sentinel.conf /usr/local/redis/sentinel26379.conf #备份sentinel配置文件
vi /usr/local/redis/sentinel26379.conf
protected-mode no #关闭保护模式,允许远程主机访问
port 26379 #sentinel端口
daemonize yes # 设置sentinel服务后台启动
sentinel monitor mymaster 192.168.1.160 6379 2 #监控主节点的IP地址端口,监控的master的名字叫做mymaster,2表示当有2个sentinel认为master已经不可用时,才可以自动进行主从切换。若只有一个sentinel实例,则设置为1。
2、启动26379端口sentinel服务。
/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel26379.conf
netstat -anp |grep redis
3、启动客户端,登录26379端口,查看sentinel信息,ok表明已正常监控,如下图。
/usr/local/redis/src/redis-cli -p 26379
info sentinel
四、测试160、170服务器主从自动切换
1、关闭160服务器redis服务。
/usr/local/redis/src/redis-cli -p 6379 shutdown
netstat -anp |grep redis
2、服务器170打开客户端,查看redis身份信息,自动的切换成master(需等待30秒才会自动切换)。
3、服务器180,打开端口26379客户端,查看sentinel信息,也可看到master的IP变化。
4、再次启动160服务器redis服务,打开客户端,查看redis身份信息,自动的切换成slave(需等待30秒才会自动切换)。
4、如果在同一服务器启动多个sentinel实例,需为每个sentinel实例单独创建配置文件,配置不同端口,除端口号外,其他配置相同。启动26379、26380、26381端口sentinel服务。启动客户端,登录26381端口,查看sentinel信息,如下图。
五、sentinel服务总结
一、sentinel的作用
一、redis的sentinel哨兵系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。
二、sentinel部署建议
1、按奇数个部署,至少要部署3个,哨兵之间、Redis实例之间物理机独立。
2、sentinel monitor master xxx.xxx.xxx.xxx xxxx 1,哨兵的这个配置最好不要配置为1。quorum的值为1意味着只要一个sentinel发现master节点无响应就可以标记为客观下线,从而发起主从切换。quorum最好设置超过sentinel个数的一半向上取整。
3、条件允许的情况下尽可能缩短这个切换间隔吧。entinel failover-timeout master 900000 //毫秒级
三、sentinel主从切换失败的原因
1、如果是因为大部分sentinel都挂了,不足以选举出leader,选择一个存活的sentinel强制执行sentinel failover,如果有备选slave成功被提升为master,客户端应用不需重启。
2、如果是因为哨兵没有选举成功,看等待时间是否还能忍,能忍就等待下次failover,否则同1步骤。
3、如果是因为没有slave通过筛选,建议停止全部哨兵,将某个slave提升为master,修改哨兵配置指向这个新的master,重启哨兵,重启客户端应用。