本文为阅读 《Redis 开发与运维》 一书之后的一些摘抄手记
首先安装好 redis
主从节点配置
主节点
port 6379
daemonize yes
logfile 6379.log
dbfilename dump-6379.rdb
dir /opt/soft/redis/data/
两个从节点的配置除了端口不通之外都相同,配置 2 个 一个 6380 一个6381
port 6380
daemonize yes
logfile 6380.log
dbfilename dump-6380.rdb
dir /opt/soft/redis/data/
在这里插入代码片
主节点这边看到有两个 从节点 6380 6381
[root@mcg redis-sentinel-26381]# 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=141809,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=141809,lag=1
从节点这边可以看到主节点是 6379
[root@ redis-sentinel-26381]# redis-cli -h 127.0.0.1 -p 6380 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
**************
sentinel 节点的配置除了port 不一样之外,其他都相同,配置三个 26379,26380,26381
port 26379
daemonize yes
logfile 26379.log
dir /opt/soft/redis/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
Sentinel 节点这边找到了主节点 6379,发现了它的 2 个从节点,还同时发现了 3 个Sentinel 节点
[root@lucas redis-sentinel-26381]# 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
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
-
sentinel monitor mymaster 127.0.0.1 6379 2
配置说明Sentinel 节点会定期在监控主节点,本配置说明 Sentinel 要监控一个名字是 mymaster ip和 port 是 分别是 127.0.0.1 和 6379 ,后面的 数值 2 表示,当主节点不可用时候,选举主节点所需要的票数,我们部署了 3 个 Sentinel 节点,当主节点挂掉后,需要 2 个Sentinel 节点表决从从节点选出一个来作为新的主节点
-
sentinel down-after-milliseconds master001 30000
配置说明每个 Sentinel 节点都需要定期发送 ping 命令去判断 reids 的主节点和其他的Sentinel 节点是否有效,当一定的时间后,节点没有响应回复,则主观判定该节点不可达 ,这里的 30000 就是超时时间 ,单位毫秒,当有足够数量的 Sentinel 节点标记某个节点不可达之后,该节点就客观下线了
-
sentinel parallel-syncs master001 1
配置说明指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
-
sentinel failover-timeout master001 180000
配置说明如果在该时间(ms)内未能完成failover操作,则认为该failover失败
注意
-
线上环境需要注意将 Sentinel 节点部署到不同的物理机上
-
3 个以上的奇数个的 Sentinel 节点
为什么?因为主节点的选举至少需要 Sentinel 节点一半 + 1 个 节点 ,奇数既可以满足条件,又可以节省一个 节点 -
Sentinel 可以只监控一个主节点,也可以监控多个主节点,那么用一套 Sentinel 节点呢还是 多套 Sentinel 节点呢
- 一套 Sentinel 节点,好处是好维护,你只需要管理这1 套 Sentinel 节点,如果出现异常,会对 Redis 数据节点造成影响
- 多套 Sentinel 节点,更多的成本了,这是必然,好处是多套 Sentinel 是隔离的
- 要是监控同一个业务的多个主节点,那就选择 1 套 Sentinel 节点,否则就选择 2 。