Commit e80c73bf authored by 11277's avatar 11277

Update redis.md

parent fc08a4bc
...@@ -104,53 +104,64 @@ redis3|6382|/var/run/redis_6382 .pid|slave| ...@@ -104,53 +104,64 @@ redis3|6382|/var/run/redis_6382 .pid|slave|
#### 配置redis哨兵 #### 配置redis哨兵
1. 配置端口 1. 配置端口
在sentinel.conf 配置文件中, 我们可以找到port 属性,这里是用来设置sentinel 的端口,一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。 在sentinel.conf 配置文件中, 我们可以找到port 属性,这里是用来设置sentinel 的端口,一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。
![redis](/assets/redis-sentinel01.png)
2. 配置主服务器的ip和端口 2. 配置主服务器的ip和端口
我们把监听的端口修改成6380,并且加上权值为2,这里的权值,是用来计算我们需要将哪一台服务器升级升主服务器 我们把监听的端口修改成6380,并且加上权值为2,这里的权值,表示必须有两个哨兵监控到主redis下线才满足切换master的条件
![redis](/assets/redis-sentinel02.png)
3. 启动Sentinel 3. 启动Sentinel
![redis](/assets/redis-sentinel03.png)
sentinel 启动之后,就会监视到现在有一个主服务器,两个从服务器 sentinel 启动之后,就会监视到现在有一个主服务器,两个从服务器
- **注意:** **我们这里只启动了一个哨兵,可是权值设置的是2**
当我们把redis2从服务器关闭之后,我们可以看到日志 当我们把redis2从服务器关闭之后,我们可以看到日志
![redis](/assets/redis-sentinel04.png)
再启动redis2 (哨兵监听主服务器老大哥的同时,也关注了小弟的动态)
再启动redis2 ![redis](/assets/redis-sentinel05.png)
哨兵监听主服务器老大哥的同时,也关注了小弟的动态
关闭主redis,发现并没有将提升slave成为master,原因是sentinel的权值设置为2,需要两个哨兵都认为主redis断线才切换。 关闭主redis,发现并没有将提升slave成为master,原因是sentinel的权值设置为2,需要两个哨兵都认为主redis断线才切换。
![redis](/assets/redis-sentinel06.png)
**所以我们必须要启动两个哨兵对主redis进行监控,修改sentinel启动端口,监控对象不变,再启动一个哨兵**
关闭redis1(6380)后,哨兵告诉我们换了大哥了。 关闭redis1(6380)后,哨兵告诉我们换了大哥了。
查看redis3(6382),发现它已经成为大哥了 查看redis3(6382),发现它已经成为大哥了
![redis](/assets/redis-sentinel07.png)
原先没有写的权限,现在也有了 。 原先没有写的权限,现在也有了 。
![redis](/assets/redis-sentinel08.png)
当老大哥redis1(6380)回来后,怎么办,谁来当老大? 当老大哥redis1(6380)回来后,怎么办,谁来当老大?
![redis](/assets/redis-sentinel09.png)
与实际相符,redis1只能当小弟了。。 与实际相符,redis1只能当小弟了。。
总结 #### **总结Sentinel的作用:**
一、Sentinel的作用:
A、Master 状态监测 * Master 状态监测
B、如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave * 如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave
C、Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换 * **Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换**
#### **总结Sentinel的工作方式:**
1. 每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。
3. 如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。
4. 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
5. 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令
6. 当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次
7. 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。 若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment