一、Redis哨兵高可用架构
- sentinel哨兵是特殊的Redis服务,不提供读写服务,主要用来监控Redis实例节点
- 哨兵架构下client端第一次从哨兵找出Redis的主节点,后续就直接访问Redis的主节点,不会每次都通过sentinel代理访问Redis的主节点。
- 当Redis的主节点发生变化,哨兵会第一时间感知到,并且将新的Redis主节点通知给client端(这里面Redis的client端一般实现了订阅功能,订阅sentinel发布的节点变动信息)
二、Redis哨兵架构搭建
- 复制一份sentinel.conf配置文件
[root@localhost redis]# cp sentinel.conf sentinel_16379.conf
- 修改如下的信息
port 26379
daemonize yes
pidfile /usr/local/redis/redis-sentinel.pid
logfile "26379"
dir /usr/local/redis/data
sentinel monitor mymaster 127.0.0.1 6379 2
- 启动sentinel哨兵实例
[root@localhost redis]# /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel_26379.conf
- 查看sentinel的info信息
[root@localhost redis]# /usr/local/redis/bin/redis-cli -p 26379
127.0.0.1:26379> info
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
可以看到sentinel的info里面已经列出了Redis的主从,主节点名称(mymaste),两个从节点,3个哨兵节点
- 可以再配置两个sentinel,端口26380和26381,修改上面配置文件的对应数字信息
三、演示哨兵模式的作用
- 引入哨兵的spring Boot相关依赖
org.springframework.boot
spring-boot-starter-data-redis
org.apache.commons
commons-pool2
- spring boot的核心配置
server:
port: 8080
spring:
redis:
database: 0
timeout: 3000
lettuce:
pool:
max-idle: 50
min-idle: 10
max-active: 100
max-wait: 1000
sentinel: #哨兵模式
master: mymaster #主服务器所在集群名称
哨兵的集群机器
nodes: 192.168.226.150:26379,192.168.226.150:26380,192.168.226.150:26381
3. 测试哨兵的集群
通过连接哨兵,已经把信息写入到Redis集群中
- 模拟哨兵的主节点挂了之后,是否能够重新选举一个节点变成主节点,这里的方法直接杀掉主节点的方式
[root@localhost redis]# ps -ef|grep redis
杀掉Redis的主节点
root 53201 1 0 17:09 ? 00:00:40 /usr/local/redis/bin/redis-server 0.0.0.0:6379
[root@localhost redis]# kill -9 53201
- 再来看请求
抛出异常
过一段时间之后,会切换到其它从节点,把其中一个从节点变成主节点
再进入看主节点信息:变成了6380
连接6380端口
[root@pertest redis]# /usr/local/redis/bin/redis-cli -p 6380
127.0.0.1:6380> info
可以看到6380变成了master
欢迎来到testingpai.com!
注册 关于