目录
一、说明
该教程为redis集群-哨兵部署方式,不包含redis的安装过程,如需redis安装教程请移步以下链接:
如需redis其他方式集群部署,请移步以下链接:
二、环境信息
操作系统:linux centOS 7
redis版本:redis-6.0.7
下载地址:http://download.redis.io/releases/redis-6.0.7.tar.gz
三、介绍
上一篇文章《linux系统搭建redis主从集群 教程 centOS系统redis6》介绍了主从集群配置,但是主从模式在master不可用时,slave节点只可做查询操作,不能做增删改,需要人为去排除故障,重启master节点,期间可能会造成部分业务无法使用。
哨兵模式是redis高可用性的解决方案,可以有一个或多个Sentinel实力来监控redis的主从节点,当Sentinel发现master节点宕机无法通信时,会在slave节点中自动选举出一个提升为master节点,由该节点代替已下线的master服务器继续处理命令请求。
四、部署流程
主redis-1: 192.168.221.101 6379 -redis.conf
从redis-2: 192.168.221.102 6379 -redis.conf
从redis-3: 192.168.221.103 6379 -redis.conf
sentinel-1:192.168.221.101 26379-sentinel.conf
sentinel-2:192.168.221.102 26379-sentinel.conf
sentinel-3:192.168.221.103 26379-sentinel.conf
1.连接redis-1服务器修改redis.conf配置文件
[root@bogon ~]# cd /opt/redis-6.0.7
[root@bogon redis-6.0.7]# vi redis.conf
bind 0.0.0.0 #允许所有IP访问
daemonize yes #开启守护进行
masterauth 123456 #主节点密码,再主节点宕机重启之后,可变为slave与新的master进行通信
requirepass 123456 #客户端连接密码
2.分别连接redis-2、redis-3服务器,修改redis.conf配置文件
[root@bogon ~]# cd /opt/redis-6.0.7
[root@bogon redis-6.0.7]# vi redis.conf
bind 0.0.0.0 #允许所有IP访问
daemonize yes #开启守护进行
replicaof 192.168.221.101 6379 #master主节点的ip 端口
masterauth 123456 #主节点密码
requirepass 123456 #客户端连接密码
3.分别连接sentinel-1、sentinel-2、sentinel-3服务器,修改sentinel.conf配置文件
[root@bogon ~]# cd /opt/redis-6.0.7
[root@bogon redis-6.0.7]# vi sentinel.conf
daemonize yes #开启守护进程
sentinel monitor mymaster 192.168.221.132 6379 2 #监听主节点ip端口 以及个数
sentinel auth-pass mymaster 123456 #主服务器密码
4.分别连接redis-1、redis-2、redis-3服务器,启动redis服务
[root@bogon ~]# cd /opt/redis-6.0.7
[root@bogon redis-6.0.7]# src/redis-server redis.conf
5.分别连接sentinel-1、sentinel-2、sentinel-3服务器,启动sentinel节点
[root@bogon ~]# cd /opt/redis-6.0.7
[root@bogon redis-6.0.7]# src/redis-sentinel sentinel.conf
6.连接redis-1主节点服务器看集群情况,显示当前为master节点,有两个slave节点
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.101 -p 6379 -a 123456
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.221.129,port=6379,state=online,offset=7544,lag=1
slave1:ip=192.168.221.133,port=6379,state=online,offset=7544,lag=0
master_replid:9438503fc85a4018674caa7e9d28971b3b2f576a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:7544
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:7544
五、验证
1.连接redis-1主节点从服务存储信息
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.101 -p 6379 -a 123456
127.0.0.1:6379> set aaa zhangsan
127.0.0.1:6379> get aaa
"zhangsan"
2.连接redis-2、redis-3查看数据同步情况
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.102 -p 6379 -a 123456
127.0.0.1:6379> get aaa
"zhangsan"
127.0.0.1:6379> exit
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.103 -p 6379 -a 123456
127.0.0.1:6379> get aaa
"zhangsan"
127.0.0.1:6379> exit
3.连接redis-1主节点服务器,将redis服务器停止
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.101 -p 6379 -a 123456 shutdown
[root@bogon redis-6.0.7]# ps -ef|grep redis
root 15329 1 0 16:20 ? 00:00:01 src/redis-sentinel *:26379 [sentinel]
root 2405 2294 0 10:08 pts/0 00:00:00 grep --color=auto redis
4.连接redis-2、redis-3查看查看集群状态,此时redis-2提升为主节点
[root@bogon redis-6.0.7]# src/redis-cli -h 192.168.221.102 -p 6379 -a 123456
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.221.133,port=6379,state=online,offset=71855,lag=1
master_replid:c21c365cf6e767d2f91f53b4153c08a8ee867999
master_replid2:9438503fc85a4018674caa7e9d28971b3b2f576a
master_repl_offset:72000
second_repl_offset:47722
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:72000