哨兵机制
为了解决主从复制架构中,主机宕机后,从机无法进行写操作而引入的新的机制——哨兵。在主机宕机后会在从机中选出一个主机,当宕机的主机重新运行时,将会以从机的身份运行。
哨兵架构图
实现步骤
首先得搭建主从复制架构。
其次在Master节点的机器中新建一个sentinel.conf文件
[root@redis20 bin]# vim sentinel.conf
[root@redis20 bin]# ll
总用量 21932
-rw-r--r--. 1 root root 196 8月 9 21:31 dump.rdb
-rwxr-xr-x. 1 root root 2452112 8月 9 12:11 redis-benchmark
-rwxr-xr-x. 1 root root 5769552 8月 9 12:11 redis-check-aof
-rwxr-xr-x. 1 root root 5769552 8月 9 12:11 redis-check-rdb
-rwxr-xr-x. 1 root root 2618136 8月 9 12:11 redis-cli
-rw-r--r--. 1 root root 58767 8月 9 12:57 redis.conf
lrwxrwxrwx. 1 root root 12 8月 9 12:11 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 5769552 8月 9 12:11 redis-server
-rw-r--r--. 1 root root 42 8月 9 22:14 sentinel.conf
最后配置哨兵
#在sentinel.conf文件中输入
sentinel monitor 被监控数据库名字 127.0.0.1 主机端口号 1
#最后的数字1代表的是主机挂掉后slave投票看让谁接替成为主机,得票数多则成为主机
启动测试
当Master宕机时
通过倒数第四行的
+switch-master r20 192.168.48.20 6379 192.168.48.21 6379
可以得知新的Master是ip地址为192.168.48.21的机器。查看Redis x21机器的信息。重新启动原先的Master机器,查看当前状态。
Springboot操作哨兵模式
编写yml配置文件
spring:
redis:
sentinel:
#sentinel.conf中自己起的数据库名称
master: Master20
#连接的是多个哨兵节点
nodes: 192.168.48.20:26379
在哨兵的配置文件中加上一行bind 0.0.0.0
开启远程连接。
sentinel myid 2c935c7c6ddce6a391558c495998e341993a4032
# Generated by CONFIG REWRITE
bind 0.0.0.0
port 26379
dir "/usr/local/bin"
sentinel monitor Master20 192.168.48.21 6379 1
sentinel config-epoch Master20 1
sentinel leader-epoch Master20 1
sentinel known-slave Master20 192.168.48.22 6379
sentinel known-slave Master20 192.168.48.20 6379
sentinel current-epoch 1
测试:
redisTemplate.opsForValue().set("grade","80");
连接成功!
总结
但是哨兵模式依旧是单节点的Master,当数据访问量过大时,无法解决并发问题、内存和磁盘大小问题
参考资料
https://www.bilibili.com/video/BV1J4411x7U1?from=search&seid=1483198651093821370
https://www.bilibili.com/video/BV1jD4y1Q7tU?t=23&p=29