redis哨兵

redis主从
主要就是修改配置文件的日志(端口),bind,slaveof
主不需要slaveof 这个配置,只有从才要

sentinel日志文件

2191:X 16 May 15:49:33.522 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2191:X 16 May 15:49:33.522 # Sentinel ID is fb1b58f264e7377ded617f0ab594c150d0b32068
2191:X 16 May 15:49:33.523 # +monitor master mymaster 10.10.0.122 6371 quorum 2
2191:X 16 May 15:49:38.539 # +sdown master mymaster 10.10.0.122 6371
2191:X 16 May 15:49:55.357 * +slave slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:49:55.362 * +slave slave 10.10.0.124:6373 10.10.0.124 6373 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:49:55.446 # -sdown master mymaster 10.10.0.122 6371
2191:X 16 May 15:49:56.901 * +sentinel sentinel 9429d5d29c3244b22bc50815ea05e98111e17e26 10.10.0.124 26373 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:50:00.402 # +sdown slave 10.10.0.124:6373 10.10.0.124 6373 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:50:01.921 # +sdown sentinel 9429d5d29c3244b22bc50815ea05e98111e17e26 10.10.0.124 26373 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:50:07.512 * +sentinel sentinel fa33ce9ec10ac6747b362846b0ee47d1ca387698 10.10.0.122 26371 @ mymaster 10.10.0.122 6371
2191:X 16 May 15:58:35.596 # +sdown master mymaster 10.10.0.122 6371
2191:X 16 May 15:58:36.666 # +odown master mymaster 10.10.0.122 6371 #quorum 2/2
2191:X 16 May 15:58:36.667 # +new-epoch 1
2191:X 16 May 15:58:36.667 # +try-failover master mymaster 10.10.0.122 6371
2191:X 16 May 15:58:36.673 # +vote-for-leader fb1b58f264e7377ded617f0ab594c150d0b32068 1
2191:X 16 May 15:58:36.674 # fa33ce9ec10ac6747b362846b0ee47d1ca387698 voted for 9429d5d29c3244b22bc50815ea05e98111e17e26 1
2191:X 16 May 15:58:37.855 # -odown master mymaster 10.10.0.122 6371
2191:X 16 May 15:58:47.579 # -failover-abort-not-elected master mymaster 10.10.0.122 6371
2191:X 16 May 16:14:28.114 * +reboot master mymaster 10.10.0.122 6371
2191:X 16 May 16:14:28.165 # -sdown master mymaster 10.10.0.122 6371
2191:X 16 May 16:14:29.604 # +config-update-from sentinel 9429d5d29c3244b22bc50815ea05e98111e17e26 10.10.0.124 26373 @ mymaster 10.10.0.122 6371
2191:X 16 May 16:14:29.604 # +switch-master mymaster 10.10.0.122 6371 10.10.0.124 6373
2191:X 16 May 16:14:29.604 * +slave slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:29.604 * +slave slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.621 # +sdown master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.687 # +odown master mymaster 10.10.0.124 6373 #quorum 2/2
2191:X 16 May 16:14:34.687 # +new-epoch 2
2191:X 16 May 16:14:34.687 # +try-failover master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.692 # +vote-for-leader fb1b58f264e7377ded617f0ab594c150d0b32068 2
2191:X 16 May 16:14:34.695 # fa33ce9ec10ac6747b362846b0ee47d1ca387698 voted for fb1b58f264e7377ded617f0ab594c150d0b32068 2
2191:X 16 May 16:14:34.744 # +elected-leader master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.744 # +failover-state-select-slave master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.815 # +selected-slave slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.816 * +failover-state-send-slaveof-noone slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:34.869 * +failover-state-wait-promotion slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:35.749 # +promoted-slave slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:35.749 # +failover-state-reconf-slaves master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:35.843 * +slave-reconf-sent slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:36.758 * +slave-reconf-inprog slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:14:36.834 # -odown master mymaster 10.10.0.124 6373
2191:X 16 May 16:14:42.017 # +new-epoch 3
2191:X 16 May 16:14:47.262 # +odown master mymaster 10.10.0.124 6373 #quorum 2/2
2191:X 16 May 16:15:05.801 # +failover-end-for-timeout master mymaster 10.10.0.124 6373
2191:X 16 May 16:15:05.801 # +failover-end master mymaster 10.10.0.124 6373
2191:X 16 May 16:15:05.801 * +slave-reconf-sent-be slave 10.10.0.123:6372 10.10.0.123 6372 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:15:05.801 * +slave-reconf-sent-be slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.124 6373
2191:X 16 May 16:15:05.801 # +switch-master mymaster 10.10.0.124 6373 10.10.0.123 6372
2191:X 16 May 16:15:05.802 * +slave slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:15:05.802 * +slave slave 10.10.0.124:6373 10.10.0.124 6373 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:15:10.826 # +sdown slave 10.10.0.124:6373 10.10.0.124 6373 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:15:36.322 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:16:37.306 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:17:38.675 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:18:39.855 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:19:41.059 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:20:42.364 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:21:42.728 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:22:44.391 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:23:45.803 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372
2191:X 16 May 16:24:48.100 * +fix-slave-config slave 10.10.0.122:6371 10.10.0.122 6371 @ mymaster 10.10.0.123 6372

日志文件参数详解

+reset-master <instance details> :主服务器已被重置。
+slave <instance details> :一个新的从服务器已经被 Sentinel 识别并关联。
+failover-state-reconf-slaves <instance details> :故障转移状态切换到了 reconf-slaves 状态。
+failover-detected <instance details> :另一个 Sentinel 开始了一次故障转移操作,或者一个从服务器转换成了主服务器。
+slave-reconf-sent <instance details> :领头(leader)的 Sentinel 向实例发送了 SLAVEOF 命令,为实例设置新的主服务器。
+slave-reconf-inprog <instance details> :实例正在将自己设置为指定主服务器的从服务器,但相应的同步过程仍未完成。
+slave-reconf-done <instance details> :从服务器已经成功完成对新主服务器的同步。
-dup-sentinel <instance details> :对给定主服务器进行监视的一个或多个 Sentinel 已经因为重复出现而被移除 —— 当 Sentinel 实例重启的时候,就会出现这种情况。
+sentinel <instance details> :一个监视给定主服务器的新 Sentinel 已经被识别并添加。
+sdown <instance details> :给定的实例现在处于主观下线状态。
-sdown <instance details> :给定的实例已经不再处于主观下线状态。
+odown <instance details> :给定的实例现在处于客观下线状态。
-odown <instance details> :给定的实例已经不再处于客观下线状态。
+new-epoch <instance details> :当前的纪元(epoch)已经被更新。
+try-failover <instance details> :一个新的故障迁移操作正在执行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。
+elected-leader <instance details> :赢得指定纪元的选举,可以进行故障迁移操作了。
+failover-state-select-slave <instance details> :故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器。
no-good-slave <instance details> :Sentinel 操作未能找到适合进行升级的从服务器。Sentinel 会在一段时间之后再次尝试寻找合适的从服务器来进行升级,又或者直接放弃执行故障转移操作。
selected-slave <instance details> :Sentinel 顺利找到适合进行升级的从服务器。
failover-state-send-slaveof-noone <instance details> :Sentinel 正在将指定的从服务器升级为主服务器,等待升级功能完成。
failover-end-for-timeout <instance details> :故障转移因为超时而中止,不过最终所有从服务器都会开始复制新的主服务器(slaves will eventually be configured to replicate with the new master anyway)。
failover-end <instance details> :故障转移操作顺利完成。所有从服务器都开始复制新的主服务器了。
+switch-master <master name> <oldip> <oldport> <newip> <newport> :配置变更,主服务器的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。
+tilt :进入 tilt 模式。
-tilt :退出 tilt 模式。
port 26373   ###指定端口
dir "/var/lib/redis/tmp"   ###定义目录存放,哨兵运行的临时目录
daemonize yes    ###哨兵后台运行
protected-mode no
sentinel monitor mymaster 10.10.0.122 6379 2     ###监控mymaster(可自定义-但只能包括A-z 0-9和”._-”)
sentinel down-after-milliseconds mymaster 30000   ###mymaster多久不响应认为SDOWN
#sentinel parallel-syncs mymaster 1   ###指定最大同时同步新maser配置的salve数量
sentinel failover-timeout mymaster 180000  ###2次failover切换时间

有了这些参数就够了
protected-mode这个是3.2 之后加入的新特性

可以看到 Protected-mode 是为了禁止公网访问redis cache,加强redis安全的。

它启用的条件,有两个:
1) 没有bind IP
2) 没有设置访问密码

如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis cache,如果从外网访问,则会返回相应的错误信息

其他的都是哨兵自己添加的,不需要使用
下面是线上的配置文件

# config,端口,日志,工作目录
# 配置文件详解:https://segmentfault.com/a/1190000002680804
port 26371
logfile "/var/log/redis/sentinel.log"
dir "/data/redis-sentinel"
daemonize yes 
protected-mode no
# redis 主节点配置,行尾最后的一个3: 当集群中有3个sentinel认为master死了时,才能真正认为该master已经不可用了,
# sentinel集群中各个sentinel是互相通信的,通过gossip协议
# sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,
# 那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectively down, 也简称为SDOWN)
sentinel myid fa33ce9ec10ac6747b362846b0ee47d1ca387698   #这个是哨兵自动添加的,千万不要自己添加这行配置
# sentinel集群中的sentinel不会再同一时刻并发去failover同一个master,第一个进行failover的sentinel如果超时失败了,另外一个将会在一定时间内进行重新进行failover
sentinel monitor mymaster 10.10.0.124 6373 2   #哨兵会自动切换主的ip和端口,原本我的是10.10.0.122 6371
# 在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步
sentinel down-after-milliseconds mymaster 5000
# 发生切换时执行脚本
#sentinel client-reconfig-script mymaster /var/lib/redis/failover.sh
#Generated by CONFIG REWRITE
sentinel failover-timeout mymaster 30000
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
sentinel known-slave mymaster 10.10.0.122 6371
sentinel known-slave mymaster 10.10.0.123 6372
sentinel known-sentinel mymaster 10.10.0.124 26373 9429d5d29c3244b22bc50815ea05e98111e17e26
sentinel known-sentinel mymaster 10.10.0.123 26372 fb1b58f264e7377ded617f0ab594c150d0b32068
sentinel current-epoch 1
小结

哨兵不需要跟对应的配置文件相连,只需要指定主ip和端口就行了
在同一台虚拟机中实验,也可以使用多个(奇数个)哨兵,只需要指定不同的端口和日志文件就ok了
当然这样并没有实际意义
哨兵不能是偶数台,我们线上环境偶数台哨兵,结果日志中一直重复打印

20273:X 16 May 17:55:32.858 * +sentinel-address-switch master mymaster 10.0.0.136 6379 ip 127.0.0.1 port 26379 for 3069b7b3f1fc19df4e56ecb65aaa841e74d8d3f0
20273:X 16 May 17:55:32.863 * +sentinel-address-switch master mymaster 10.0.0.136 6379 ip 10.0.0.87 port 26379 for 3069b7b3f1fc19df4e56ecb65aaa841e74d8d3f0

猜你喜欢

转载自blog.csdn.net/u013193903/article/details/80340847