Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hel-developer-guide
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Spencer Chang
hel-developer-guide
Commits
e80c73bf
Commit
e80c73bf
authored
Aug 02, 2017
by
11277
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update redis.md
parent
fc08a4bc
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
15 deletions
+26
-15
redis.md
后端开发/redis.md
+26
-15
No files found.
后端开发/redis.md
View file @
e80c73bf
...
...
@@ -104,53 +104,64 @@ redis3|6382|/var/run/redis_6382 .pid|slave|
#### 配置redis哨兵
1.
配置端口
在sentinel.conf 配置文件中, 我们可以找到port 属性,这里是用来设置sentinel 的端口,一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。
![
redis
](
/assets/redis-sentinel01.png
)
2.
配置主服务器的ip和端口
我们把监听的端口修改成6380,并且加上权值为2,这里的权值,是用来计算我们需要将哪一台服务器升级升主服务器
我们把监听的端口修改成6380,并且加上权值为2,这里的权值,表示必须有两个哨兵监控到主redis下线才满足切换master的条件
![
redis
](
/assets/redis-sentinel02.png
)
3.
启动Sentinel
![
redis
](
/assets/redis-sentinel03.png
)
sentinel 启动之后,就会监视到现在有一个主服务器,两个从服务器
-
**注意:**
**我们这里只启动了一个哨兵,可是权值设置的是2**
。
当我们把redis2从服务器关闭之后,我们可以看到日志
![
redis
](
/assets/redis-sentinel04.png
)
再启动redis2
再启动redis2 (哨兵监听主服务器老大哥的同时,也关注了小弟的动态)
![
redis
](
/assets/redis-sentinel05.png
)
哨兵监听主服务器老大哥的同时,也关注了小弟的动态
关闭主redis,发现并没有将提升slave成为master,原因是sentinel的权值设置为2,需要两个哨兵都认为主redis断线才切换。
![
redis
](
/assets/redis-sentinel06.png
)
**所以我们必须要启动两个哨兵对主redis进行监控,修改sentinel启动端口,监控对象不变,再启动一个哨兵**
关闭redis1(6380)后,哨兵告诉我们换了大哥了。
查看redis3(6382),发现它已经成为大哥了
![
redis
](
/assets/redis-sentinel07.png
)
原先没有写的权限,现在也有了 。
![
redis
](
/assets/redis-sentinel08.png
)
当老大哥redis1(6380)回来后,怎么办,谁来当老大?
![
redis
](
/assets/redis-sentinel09.png
)
与实际相符,redis1只能当小弟了。。
总结
一、Sentinel的作用:
#### **总结Sentinel的作用:**
A、
Master 状态监测
B、
如果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 状态监测
*
如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave
*
**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 的主观下线状态就会被移除。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment