Redis主从自动切换(无密码认证)(centos8)

服务器IP
Redis服务器(主)192.168.1.210
Redis服务器(从)192.168.1.220
Redis服务器(哨兵)192.168.1.230

一、服务器安装redis服务

参考博客:https://blog.csdn.net/renfeigui0/article/details/103182585

二、服务器210、220配置主从,使主从复制工作正常运行

参考博客:https://blog.csdn.net/renfeigui0/article/details/103182516

1、服务器220查找并编辑redis.conf,在下图位置**“JUST COMMENT THE FOLLOWING LINE.”**下方,增加redis服务器本机IP(192.168.1.220),设置后其他主机也可以远程访问本机的redis服务,未设置则只能本机127.0.0.1才可访问redis服务。
在这里插入图片描述
2、确保服务器210、220,开放防火墙6379端口。

firewall-cmd --zone=public --add-port=6379/tcp --permanent  
firewall-cmd --reload
firewall-cmd --zone=public --query-port=6379/tcp

三、服务器230开启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.210  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

在这里插入图片描述

四、测试210、220服务器主从自动切换

1、关闭210服务器redis服务。

/usr/local/redis/src/redis-cli -p 6379 shutdown
netstat -anp |grep redis

2、服务器220打开客户端,查看redis身份信息,自动的切换成master(需等待30秒才会自动切换)。
在这里插入图片描述
3、服务器230,打开端口26379客户端,查看sentinel信息,也可看到master的IP变化。

在这里插入图片描述
4、再次启动210服务器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,重启哨兵,重启客户端应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。   本课程主要讲解以下内容:1. Redis的基本使用2. Redis数据库的数据类型3. Redis数据库数据管理4. Redis主从复制5. Redis数据库的持久性6. Redis的高可靠性和集群7. Redis的优化和性能测试8. Redis服务器的维护和管理9. Redis服务器的常见问题排错 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值