redis学习笔记(六) 哨兵

2019-09-25  本文已影响0人  云师兄

1. 引子

Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

2. 哨兵

当主节点发生故障时,Redis Sentinel能够自动完成故障发现和故障转移,并通知应用方,实现真正的高可用。示例过程如下:

屏幕快照 2019-04-11 上午10.33.11.png

从上图三个过程可以看出Redis Sentinel具备下面几个功能:

3. 安装与部署

3.1 部署主从复制节点

启动一个客户端并查看6379节点相关信息:

./redis-cli -h 127.0.0.1 -p 6379 info replication

打印结果如下:

# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=406,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=406,lag=1
master_replid:7b693bd5ca019687c7a3e97d5bd435bb1b5a353d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:406
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:406

看出它有两个从节点,端口号是为6380和6381。

# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:840
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7b693bd5ca019687c7a3e97d5bd435bb1b5a353d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:840
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:840

可以看到它的主节点是6379端口。

最终一个主从复制结构就形成了:

3.2 部署sentinel节点

预期想部署三个哨兵节点,先看下第一个哨兵配置如下:

port 26379
daemonize yes
logfile "/Users/yubuyun/tools/redis-4.0.8/26379.log"
dir "/Users/yubuyun/tools/redis-4.0.8/data/"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

其中:

另外两个哨兵配置如下:

port 26380
daemonize yes
logfile "/Users/yubuyun/tools/redis-4.0.8/26380.log"
dir "/Users/yubuyun/tools/redis-4.0.8/data/"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
port 26381
daemonize yes
logfile "/Users/yubuyun/tools/redis-4.0.8/26381.log"
dir "/Users/yubuyun/tools/redis-4.0.8/data/"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

写好配置文件后就可以通过下述方法启动三个哨兵了:

./redis-sentinel ../redis-sentinel-26379.conf
./redis-sentinel ../redis-sentinel-26380.conf
./redis-sentinel ../redis-sentinel-26381.conf

如果不指定配置文件启动:./redis-sentinel。在启动的时候使用的安装包中的默认配置文件sentinel.conf。

可执行下面的命令查看第一个哨兵的信息:

./redis-cli -h 127.0.0.1 -p 26379 info sentinel

输出如下:

# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

从打印看出,有一个主节点,两个从节点,总共有3个哨兵等信息。

最终Redis Sentinel就搭建好了。

屏幕快照 2019-04-11 下午3.56.51.png
上一篇 下一篇

猜你喜欢

热点阅读