Redis Sentinel主从复制自动切换方案

一、准备环境
#配置环境:
Redis Sentinel:192.68.40.16:26379
Redis server主:192.168.40.17:6379
Redis server从:192.168.40.18:6380
#查看主服务器状态:
[root@localhost ~]# redis-cli -p 6379 -a pwd123 info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=27794,lag=0
master_repl_offset:27794
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:27793
You have new mail in /var/spool/mail/root
#查看从服务器状态
[root@localhost ~]# redis-cli -p 6380 -a pwd123 info Replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:29162
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
二、搭建sentinel哨兵服务
#启动Redis Sentinel
#Sentinel的配置文件为sentinel.conf,复制一下配置,修改IP地址即可
[root@localhost ~]# vim /etc/redis/sentinel.conf
#sentinel实例监听的端口
port 26379
#守护进程模式
daemonize yes
#指明日志文件名
logfile "./sentinel1.log"
#工作路径,sentinel一般指定/tmp比较简单
dir ./
#master1
#哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
#(objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
#slaves是自动发现,所以你没必要明确指定slaves。
sentinel monitor master1 192.168.40.17 6379 1
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds master1 1500
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout master1 10000
#设置master和slaves验证密码
sentinel auth-pass master1 pwd123 


[root@localhost ~]# redis-server /etc/redis/sentinel.conf --sentinel &
[1] 19296
#在sentinel中查看redis主从信息
[root@localhost ~]# redis-cli -p 26379
127.0.0.1:26379> info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=master1,status=ok,address=192.168.40.17:6379,slaves=3,sentinels=1 
#在sentinel中查看所监控道的master和slave
127.0.0.1:26379> SENTINEL masters
1)  1) "name"
    2) "master1"
    3) "ip"
    4) "192.168.40.17"
    5) "port"
    6) "6379"
    7) "runid"
    8) "91399b3205a9061a5f1aa306692886f200374e90"
    9) "flags"
   10) "master"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "898"
   15) "last-ping-reply"
   16) "898"
   17) "info-refresh"
   18) "5019"
   19) "role-reported"
   20) "master"
   21) "role-reported-time"
   22) "266970"
   23) "config-epoch"
   24) "0"
   25) "num-slaves"
   26) "1"
   27) "num-other-sentinels"
   28) "0"
   29) "quorum"
   30) "1"
   31) "down-after-milliseconds"
   32) "1500"
   33) "failover-timeout"
   34) "10000"
   35) "parallel-syncs"
   36) "1"
127.0.0.1:26379> SENTINEL slaves master1
    1) "name"
    2) "192.168.40.18:6380"
    3) "ip"
    4) "192.168.40.18"
    5) "port"
    6) "6380"
    7) "runid"
    8) "7087b2cf81bcb53da6603ed5d7bc6509a632d11a"
    9) "flags"
   10) "slave"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "843"
   15) "last-ping-reply"
   16) "842"
   17) "info-refresh"
   18) "7765"
   19) "role-reported"
   20) "slave"
   21) "role-reported-time"
   22) "88238"
   23) "master-link-down-time"
   24) "0"
   25) "master-link-status"
   26) "ok"
   27) "master-host"
   28) "192.168.40.17"
   29) "master-port"
   30) "6379"
   31) "slave-priority"
   32) "100"
   33) "slave-repl-offset"
   34) "6114"
#查看当前Master
127.0.0.1:26379> SENTINEL get-master-addr-by-name master1
1) "192.168.40.17"
2) "6379"
三、验证:
#停止主服务器
[root@localhost ~]# kill -9 2793
#登陆sentinel查看6380从服务器已经自动转为主服务器
[root@localhost ~]# redis-cli -p 26379
127.0.0.1:26379> SENTINEL get-master-addr-by-name master1
1) "127.0.0.1"
2) "6380"
#6379主服务器转为从服务器,状态为down
127.0.0.1:26379>  SENTINEL slaves master1
1)  1) "name"
    2) "127.0.0.1:6379"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "pending-commands"
   12) "0"
   13) "last-ok-ping-reply"
   14) "47310"
   15) "last-ping-reply"
   16) "47310"
   17) "s-down-time"
   18) "45778"
   19) "info-refresh"
   20) "1488253183255"
   21) "role-reported"
   22) "slave"
   23) "role-reported-time"
   24) "47310"
   25) "master-link-down-time"
   26) "0"
   27) "master-link-status"
   28) "err"
   29) "master-host"
   30) "?"
   31) "master-port"
   32) "0"
   33) "slave-priority"
   34) "100"
   35) "slave-repl-offset"
   36) "0"
#/etc/redis/6379.conf配置文件自动增加slaveof 127.0.0.1 6380
#/etc/redis/6380.conf配置文件里面的slaveof 127.0.0.1 6379自动消失
#如果需要将6379在此变为主服务器,需要手动更改slaveof配置即可。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值