环境:基于主从复制(上一节)
原理:Redis的哨兵机制:https://www.cnblogs.com/leeSmall/p/8398401.html
实现:(三个主机都需操作)(其中10.0.0.50,需要将配置文件redis.conf的masterauth修改为123456)
- 复制源目录中的sentinel.conf文件到主目录
[root@Su ~]# cp /application/tools/redis-5.0.7/sentinel.conf /application/redis/
- 创建sentinel目录
[root@Redis1 ~]# mkdir /application/redis/sentinel
- 修改配置文件/application/redis/sentinel.conf
##### 修改的参数 ##### #protected-mode no protected-mode no #或者采用protected-mode yes,bind 0.0.0.0 #daemonize no daemonize yes #后台启动 #logfile "" #默认输出到控制台 logfile /application/redis/sentinel/sentinel.log #dir /tmp #工作空间 dir /application/redis/sentinel/ #sentinel monitor <master-name> <ip> <redis-port> <quorum> #sentinel monitor mymaster 127.0.0.1 6379 2 #哨兵监控master,mymaster表示名称,2表示两个哨兵判断故障 sentinel monitor su-master 10.0.0.50 6379 2 #注意将配置文件中的所有的mymaster修改为su-master #sentinel auth-pass mymaster MySUPER--secret-0123passw0rd sentinel auth-pass su-master 123456 #redis主节点的密码,requirepass #sentinel down-after-milliseconds mymaster 30000 sentinel down-after-milliseconds su-master 30000 #哨兵判断宕机时间,如果超过30s则判定为宕机 #sentinel parallel-syncs mymaster 1 sentinel parallel-syncs su-master 1 #重新选举后,同步数据的并行个数 #sentinel failover-timeout mymaster 180000 sentinel failover-timeout su-master 180000 #主备切换的超时时间,如果主备切换超过3分钟,则超时
- 依次启动Redis和sentinel
[root@Su redis]# /etc/init.d/redis_init_script start [root@Su redis]# /application/redis/bin/redis-sentinel sentinel.conf
[root@Redis1 redis]# /etc/init.d/redis_init_script start [root@Redis1 redis]# /application/redis/bin/redis-sentinel sentinel.conf
[root@Redis2 redis]# /etc/init.d/redis_init_script start [root@Redis2 redis]# /application/redis/bin/redis-sentinel sentinel.conf
- 查看sentinel.lgo(可以看见redis1和redis2都想su-master节点上添加)
[root@Su redis]# cat sentinel/sentinel.log 1174:X 10 Jan 2020 15:30:59.904 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 1174:X 10 Jan 2020 15:30:59.904 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1174, just started 1174:X 10 Jan 2020 15:30:59.904 # Configuration loaded 1175:X 10 Jan 2020 15:30:59.917 * Increased maximum number of open files to 10032 (it was originally set to 1024). 1175:X 10 Jan 2020 15:30:59.918 * Running mode=sentinel, port=26379. 1175:X 10 Jan 2020 15:30:59.918 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 1175:X 10 Jan 2020 15:30:59.920 # Sentinel ID is 8b0389cf0fdc39755ca1f14ceff02626eb69fe48 1175:X 10 Jan 2020 15:30:59.920 # +monitor master su-master 10.0.0.50 6379 quorum 2 1175:X 10 Jan 2020 15:30:59.921 * +slave slave 10.0.0.51:6379 10.0.0.51 6379 @ su-master 10.0.0.50 6379 1175:X 10 Jan 2020 15:30:59.923 * +slave slave 10.0.0.52:6379 10.0.0.52 6379 @ su-master 10.0.0.50 6379 1175:X 10 Jan 2020 15:32:21.976 * +sentinel sentinel 44c85cebbd14e60b813300392692442b4d605a79 10.0.0.51 26379 @ su-master 10.0.0.50 6379 1175:X 10 Jan 2020 15:32:46.879 * +sentinel sentinel cbd021e3221d6f7886f1c95f2eacdde1ac717208 10.0.0.52 26379 @ su-master 10.0.0.50 6379
- 查看三个节点的状态信息
- 测试(手动将master宕机)
###成功切换master###
- 重启10.0.0.50(原来的master),是否会抢占master?答案是:不会。
连接哨兵命令:
[root@Su redis]# redis-cli -p 26379
127.0.0.1:26379> sentinel master su-master
1) "name"
2) "su-master"
3) "ip"
4) "10.0.0.51"
5) "port"
6) "6379"
7) "runid"
8) "40ac65cc65e635412ad8b7032b284e8409a1688c"
9) "flags"
10) "master"
11) "link-pending-commands"
# 查看su-master下的master节点信息 sentinel master su-master
# 查看su-master下的slaves节点信息 sentinel slaves su-master
# 查看su-master下的哨兵节点信息 sentinel sentinels su-master
SpringBoot 集成Redis哨兵-配置
spring:
redis:
database: 1
password: 123456
sentinel:
master: imooc-master
nodes: 10.0.0.50:26379,10.0.0.51:26379,10.0.0.52:26379
最后修改于 2020-01-10 14:59:47
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

