redis配置哨兵集群(密码认证)

一、概述

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

注:配置带有密码认证的哨兵集群,需要将主从节点的密码都配置成一直,如以下的环境,主与从节点的密码都为“000000”。

二、测试环境

系统IP主机名redis版本
centos-7.210.0.0.67redis-masterredis-4.0.9.tar.gz
centos-7.210.0.0.68redis-slave01redis-4.0.9.tar.gz
centos-7.210.0.0.69redis-slave02redis-4.0.9.tar.gz

三、主从环境(具体配置方法:https://blog.csdn.net/liang_operations/article/details/89419220)

1.主从文件配置
步骤一:主环境下添加masterauth 密码,不然主宕机无法自动切换成从节点。

[root@redis redis]# egrep -v “^$|#” /application/redis/redis.conf|egrep “slaveof|master”
masterauth 000000

步骤二:配置从节点01

[root@redis-slave01 ~]# egrep -v “^$|#” /application/redis/redis.conf|egrep “slaveof|master”
slaveof 10.0.0.67 6379 ###复制对应的master
masterauth “000000” ###主节点的密码

步骤三 :配置从节点02

[root@redis-slave02 ~]# egrep -v “^$|#” /application/redis/redis.conf|egrep “slaveof|master”
masterauth “000000”
slaveof 10.0.0.67 6379

2.重启主从redis
步骤一:重启主节点

[root@redis redis]# /etc/init.d/redis restart
Restarting redis (via systemctl): [ OK ]

步骤二:重启从节点001

[root@redis-slave01 ~]# /etc/init.d/redis restart
Restarting redis (via systemctl): [ OK ]

步骤三:重启从节点02

[root@redis-slave02 ~]# /etc/init.d/redis restart
Restarting redis (via systemctl): [ OK ]

3.验证主从环境
步骤一:在主机节点查看主从信息

[root@redis redis]# ./redis-cli -h 10.0.0.67 -a 000000 info replication
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=10.0.0.69,port=6379,state=online,offset=0,lag=1
slave1:ip=10.0.0.68,port=6379,state=online,offset=0,lag=1
master_replid:3c9e6c2a02ac1b566ca2680aa777a599cab29a5e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0

三、哨兵环境配置

1.参数解释

port 26379
哨兵监听的端口
daemonize yes
后台启动
protected-mode no
关闭保护模式
sentinel monitor master01 10.0.0.68 6379 2
该行的意思是:监控的master的名字叫做master01(自定义),地址为10.0.0.68:6379(主节点的ip与端口),行尾最后的一个2代表在sentinel集群中,多少个sentinel认为masters死了,才能真正认为该master不可用了。
sentinel auth-pass master01 000000
连接密码
sentinel down-after-milliseconds master01 15000
sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectively down, 也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒
sentinel failover-timeout master01 120000
failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。

sentinel parallel-syncs master01 1
在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为 1来保证每次只有一个slave处于不能处理命令请求的状态。

2.sentinel.conf配置

这里实验配置三个哨兵,都在主节点上运行。

步骤一:sentinel_26379配置

[root@redis redis-sentinel]# cat sentinel_26379.conf
port 26379
dir “/var/lib/sentinel_26379”
logfile “/var/log/redis/sentinel_26379.log”
daemonize yes
protected-mode no
sentinel monitor master01 10.0.0.68 6379 2
sentinel auth-pass master01 000000
sentinel down-after-milliseconds master01 15000
sentinel failover-timeout master01 120000
sentinel parallel-syncs master01 1

步骤二:sentinel_26380配置

[root@redis redis-sentinel]# cat sentinel_26380.conf
port 26379
dir “/var/lib/sentinel_26380”
logfile “/var/log/redis/sentinel_26380.log”
daemonize yes
protected-mode no
sentinel monitor master01 10.0.0.67 6379 2
sentinel auth-pass master01 000000
sentinel down-after-milliseconds master01 15000
sentinel failover-timeout master01 120000
sentinel parallel-syncs master01 1

步骤三:sentinel_26381配置

[root@redis redis-sentinel]# cat sentinel_26381.conf
port 26379
dir “/var/lib/sentinel_26381”
logfile “/var/log/redis/sentinel_26381.log”
daemonize yes
protected-mode no
sentinel monitor master01 10.0.0.67 6379 2
sentinel auth-pass master01 000000
sentinel down-after-milliseconds master01 15000
sentinel failover-timeout master01 120000
sentinel parallel-syncs master01 1

四、启动哨兵

步骤一:启动三个哨兵

[root@redis redis-sentinel]# ./redis-sentinel sentinel_26379.conf
[root@redis redis-sentinel]# ./redis-sentinel sentinel_26380.conf
[root@redis redis-sentinel]# ./redis-sentinel sentinel_26381.conf

步骤二:查看日志输出

[root@redis redis-sentinel]# tailf /var/log/redis/sentinel_26379.log
3915:X 20 Apr 23:46:52.520 # +monitor master master01 10.0.0.67 6379 quorum 1
3915:X 20 Apr 23:46:52.522 * +slave slave 10.0.0.69:6379 10.0.0.69 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:46:52.525 * +slave slave 10.0.0.68:6379 10.0.0.68 6379 @ master01 10.0.0.67 637

五、测试

步骤一:停止主节点并查看日志输出

[root@redis redis]# /etc/init.d/redis stop
Stopping redis (via systemctl): [ OK ]
[root@redis redis-sentinel]# tailf /var/log/redis/sentinel_26379.log
3915:X 20 Apr 23:47:48.011 # +sdown master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.012 # +odown master master01 10.0.0.67 6379 #quorum 1/1
3915:X 20 Apr 23:47:48.012 # +new-epoch 1
3915:X 20 Apr 23:47:48.012 # +try-failover master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.015 # +vote-for-leader b49546b1e974bdaaa95bbbd1caf7e9ed26787589 1
3915:X 20 Apr 23:47:48.015 # +elected-leader master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.015 # +failover-state-select-slave master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.091 # +selected-slave slave 10.0.0.68:6379 10.0.0.68 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.092 * +failover-state-send-slaveof-noone slave 10.0.0.68:6379 10.0.0.68 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:48.193 * +failover-state-wait-promotion slave 10.0.0.68:6379 10.0.0.68 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:49.117 # +promoted-slave slave 10.0.0.68:6379 10.0.0.68 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:49.117 # +failover-state-reconf-slaves master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:49.190 * +slave-reconf-sent slave 10.0.0.69:6379 10.0.0.69 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:50.132 * +slave-reconf-inprog slave 10.0.0.69:6379 10.0.0.69 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:50.132 * +slave-reconf-done slave 10.0.0.69:6379 10.0.0.69 6379 @ master01 10.0.0.67 6379
3915:X 20 Apr 23:47:50.189 # +failover-end master master01 10.0.0.67 6379
3915:X 20 Apr 23:47:50.189 # +switch-master master01 10.0.0.67 6379 10.0.0.68 6379
3915:X 20 Apr 23:47:50.190 * +slave slave 10.0.0.69:6379 10.0.0.69 6379 @ master01 10.0.0.68 6379
3915:X 20 Apr 23:47:50.190 * +slave slave 10.0.0.67:6379 10.0.0.67 6379 @ master01 10.0.0.68 6379

步骤二:查看新的主节点

[root@redis redis]# ./redis-cli -h 10.0.0.68 -a 000000 info replication
# Replication
role:master
connected_slaves:1

步骤三:启动旧主节点并查看日志输出

[root@redis redis]# /etc/init.d/redis start
Starting redis (via systemctl): [ OK ]
[root@redis redis-sentinel]# tailf /var/log/redis/sentinel_26379.log
3915:X 20 Apr 23:49:01.584 * +convert-to-slave slave 10.0.0.67:6379 10.0.0.67 6379 @ master01 10.0.0.68 6379

步骤四:新节点查看信息

[root@redis redis]# ./redis-cli -h 10.0.0.68 -a 000000 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.69,port=6379,state=online,offset=17912,lag=0
slave1:ip=10.0.0.67,port=6379,state=online,offset=17912,lag=0

步骤五:新节点添加字符串测试

[root@redis-slave01 redis]# ./redis-cli -h 10.0.0.68 -a 000000
10.0.0.68:6379> set test01 123456
OK

步骤六:从节点(10.0.0.67 )查看

[root@redis redis]# ./redis-cli -h 10.0.0.67 -a 000000 get test01
“123456”

步骤七:从节点(10.0.0.69)查看

[root@redis-slave02 redis]# ./redis-cli -h 10.0.0.69 -a 000000 get test01
“123456”

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值