作者介绍:简历上没有一个精通的运维工程师 ,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
Redis(本章节)
Etcd
上个小节我们介绍了哨兵(Sentinel)原理,本小节就通过一个搭建一个实际可行的哨兵集群。
架构
一主两从,配置文件参考上个小节:Redis-主从集群搭建。
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=192.168.31.196,port=6379,state=online,offset=85,lag=1
slave1:ip=192.168.31.197,port=6379,state=online,offset=85,lag=2
master_repl_offset:85
repl_backlog_active:1
repl_backlog_size:268435456
repl_backlog_first_byte_offset:2
repl_backlog_histlen:84部署哨兵
3个节点除了bind IP不一样,其他都一样,这里需要注意,哨兵启动以后,他会自动修改当前配置文件里面的部分信息。
vi /etc/redis-sentinel.conf
# 哨兵端口
port 26379
# 后台运行
daemonize yes
# 日志文件
logfile "/var/log/redis/sentinel.log"
# 工作目录
dir "/tmp"
# 监控的主节点信息:
# mymaster:主节点名称(可自定义)
# 192.168.31.195 6379:主节点地址和端口
# 2:quorum值(至少需要2个哨兵同意才能判定客观下线)
sentinel monitor mymaster 192.168.31.195 6379 2
# 主节点密码(如果设置了requirepass)
sentinel auth-pass mymaster your_redis_password
# 主观下线时间(毫秒)
sentinel down-after-milliseconds mymaster 5000
# 故障转移超时时间(毫秒)
sentinel failover-timeout mymaster 60000
# 并行同步的从节点数量
sentinel parallel-syncs mymaster 1
# 绑定IP(改为当前节点的IP)
bind 192.168.31.195启动哨兵
如果是通过yum安装的Redis,则会附带哨兵(Sentinel)的服务,可以直接使用systemctl方式启动。
systemctl start redis-sentinel
systemctl enable redis-sentinel查看哨兵信息
redis-cli -h 192.168.31.195 -p 26379 info# 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=192.168.31.195:6379,slaves=2,sentinels=3这里可以看到哨兵里面的信息,可以看到当前master,有2个从节点,哨兵节点有3个。
宕机测试
可以从哨兵的日志里面看哨兵选举新maste的过程,这里实际上有一个坑,看看你们有没有发现。
1137:X 18 Jan 23:32:26.642 # -odown master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +failover-end-for-timeout master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +failover-end master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 * +slave-reconf-sent-be slave 192.168.31.196:6379 192.168.31.196 6379 @ mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 * +slave-reconf-sent-be slave 192.168.31.197:6379 192.168.31.197 6379 @ mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +switch-master mymaster 192.168.31.195 6379 192.168.31.196 6379
1137:X 18 Jan 23:33:25.601 * +slave slave 192.168.31.197:6379 192.168.31.197 6379 @ mymaster 192.168.31.196 6379
1137:X 18 Jan 23:33:25.601 * +slave slave 192.168.31.195:6379 192.168.31.195 6379 @ mymaster 192.168.31.196 6379
1137:X 18 Jan 23:33:30.603 # +sdown slave 192.168.31.195:6379 192.168.31.195 6379 @ mymaster 192.168.31.196 6379新master配置文件
可以看到新的master里面原来链接原master信息已经被删除。

另外一个从节点
原来195的Redis配置变成新的Redis196。
