先看一下架构图吧~
然后我们通过理论了解一下什么是redis哨兵~
Redis Sentinel(哨兵)是一个用于高可用(HA)方案的组件,它是Redis系统的一个独立进程,能够监察运行状态并负责自动故障转移。使用Redis哨兵,能够实现Redis的自动故障恢复和切换,并提高Redis的可靠性和可用性。
Redis Sentinel有以下几个主要功能:
-
监控:哨兵会定期检查Redis的运行状况,如果检查到Redis实例出现故障,会对其进行标记,等待接下来的故障转移操作。
-
自动故障恢复:当一个Redis主节点出现故障时,哨兵会选取一个合适的从节点,将其升级为主节点,并将其他从节点切换到这个新的主节点上。
-
主节点切换:当哨兵检测到主节点不可用时,会选取一个最适合升级为主节点的从节点,并执行自动故障恢复操作。
-
配置提供者:哨兵会监控Redis的配置状态,并将配置信息广播给其他哨兵和客户端。
使用Redis哨兵,可以构建高可用性的Redis集群,提高Redis的可用性和稳定性。哨兵机制可以自动监控Redis节点,自动进行故障转移和配置管理,让Redis节点更加稳定和可靠。
最后我们看一下如何实现这个功能:
Redis复制组
[root@server51 ~]# vim /etc/redis/6379.conf
[root@server51 ~]# sed -rn '501p' /etc/redis/6379.conf
# requirepass 123456
[root@server51 ~]# /etc/init.d/redis_6379 restart
#取消server52和server53的验证密码
[root@server52 ~]# vim /etc/redis/6379.conf
[root@server52 ~]# sed -rn '289p' /etc/redis/6379.conf
# masterauth 123456
[root@server52 ~]# /etc/init.d/redis_6379 restart
[root@server53 ~]# vim /etc/redis/6379.conf
[root@server53 ~]# sed -rn '289p' /etc/redis/6379.conf
# masterauth 123456
[root@server53 ~]# /etc/init.d/redis_6379 restart
#确认Redis一主多从架构
[root@server51 ~]# redis-cli info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.88.52,port=6379,state=online,offset=98,lag=1
slave1:ip=192.168.88.53,port=6379,state=online,offset=98,lag=1
...
Redis哨兵部署
#从Yum服务器同步repo文件
[root@server54 ~]# rm -rf /etc/yum.repos.d/*
[root@server54 ~]# scp 192.168.88.240:/etc/yum.repos.d/*.repo /etc/yum.repos.d/
[root@server54 ~]# yum clean all; yum repolist
...
repolist: 10,085
[root@server54 ~]#
#编译安装Redis
[root@server54 ~]# ls redis-4.0.8.tar.gz
redis-4.0.8.tar.gz
[root@server54 ~]# yum -y install gcc
[root@server54 ~]# tar -xf redis-4.0.8.tar.gz
[root@server54 ~]# cd redis-4.0.8/
[root@server54 redis-4.0.8]# make && make install
[root@server54 redis-4.0.8]# cd
#编写哨兵主配置文件
[root@server54 ~]# vim /etc/sentinel.conf
[root@server54 ~]# cat /etc/sentinel.conf
bind 0.0.0.0
port 26379
daemonize yes
sentinel monitor mymaster 192.168.88.51 6379 1
dir "/var/lib/redis/"
logfile "/var/log/sentinel.log"
loglevel notice
[root@server54 ~]# mkdir /var/lib/redis
#启动哨兵服务
[root@server54 ~]# redis-sentinel /etc/sentinel.conf
[root@server54 ~]# ss -pantul | grep 26379
tcp LISTEN 0 128 *:26379 *:* users:(("redis-sentinel",pid=4323,fd=6))
[root@server54 ~]#
Redis哨兵测试
#Redis复制组故障切换测试
[root@server51 ~]# redis-cli info replication | grep role #确认server51节点Redis角色
role:master
[root@server51 ~]# /etc/init.d/redis_6379 stop #停止server51节点Redis服务
[root@server52 ~]# redis-cli info replication | grep role #server52升级为新主
role:master
[root@server53 ~]# redis-cli info replication #server53成为server52的从
# Replication
role:slave
master_host:192.168.88.52
master_port:6379
master_link_status:up
[root@server54 ~]# cat /etc/sentinel.conf #确认server54哨兵配置文件改变
#server51修复测试
[root@server51 ~]# /etc/init.d/redis_6379 start
[root@server51 ~]# redis-cli info replication
# Replication
role:slave
master_host:192.168.88.52
master_port:6379
master_link_status:up
...
希望这些知识点对大家有帮助~