File tree Expand file tree Collapse file tree 1 file changed +37
-1
lines changed Expand file tree Collapse file tree 1 file changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -54,4 +54,40 @@ Redis 数据复制是单向的,而且一个节点只能从属一个master节
54
54
55
55
![ Redis注册复制原理] ( https://i.loli.net/2019/02/12/5c62226abbf3d.png )
56
56
57
- 首先,通过上述配置主从复制,从节点保存主节点的信息,然后建立 socket 连接。Redis的ping命令是用于客户端检测服务端是否正常运作或消息延时的一种命令,是一种心跳机制,在这里从节点就是客户端,主节点就是服务端。从节点发送ping命令至主节点,如果主节点正常运作则返回pong,这样才能表示双方网络通达。紧接着,如果主节点开启 ` requirepass foobared ` 参数(foobared 可以认为是安全校验密码),主节点会对从节点进行权限校验。密码正确后,才进行数据同步,最后不断的、陆陆续续的、持续复制后面的数据,实现这一持续复制数据的实现方式就是复制其操作命令。
57
+ 首先,通过上述配置主从复制,从节点保存主节点的信息,然后建立 socket 连接。Redis的ping命令是用于客户端检测服务端是否正常运作或消息延时的一种命令,是一种心跳机制,在这里从节点就是客户端,主节点就是服务端。从节点发送ping命令至主节点,如果主节点正常运作则返回pong,这样才能表示双方网络通达。紧接着,如果主节点开启 ` requirepass foobared ` 参数(foobared 可以认为是安全校验密码),主节点会对从节点进行权限校验。密码正确后,才进行数据同步,最后不断的、陆陆续续的、持续复制后面的数据,实现这一持续复制数据的实现方式就是复制其操作命令。
58
+
59
+
60
+
61
+ ---
62
+
63
+ <h3 style =" padding-bottom :6px ; padding-left :20px ; color :#ffffff ; background-color :#E74C3C ;" >故障转移</h3 >
64
+
65
+ 对于单个节点而言,有可能出现故障(fail),为了保证该服务的可用性,需要使用其他冗余或备用节点来接替该节点工作,这种拯救方式就是 ** 故障转移(Failover)** 。
66
+
67
+ 比如一个 ** 一主两从** 的高可用方案,主节点工作,从节点作备用:
68
+
69
+ ![ 一主两从] ( https://i.loli.net/2019/02/16/5c67baed29b4a.png )
70
+
71
+ 如果主节点(master节点)出现故障,那么服务不可用,从节点(slave节点)也无法从master节点持续复制数据,如何实现故障转移呢?下面是基于客户端的实现。
72
+
73
+ 1 . 客户端使用心跳机制,定时检测 master、slave节点活性,比如使用ping命令;
74
+
75
+ 2 . 如果master节点在一定时间内无回复,则认为master节点此时不可用;
76
+
77
+ 3 . 从slave节点中随机选择或选择一个ping-pong网络较好的一个节点晋升为master,比如6380节点;
78
+
79
+ 4 . 6380节点和6381节点先与6379断开复制关系 ` slaveof no one ` ;
80
+
81
+ 5 . 然后以6380为master节点,6381为salve节点建立复制关系;
82
+
83
+ ![ 建立新的主从复制] ( https://i.loli.net/2019/02/16/5c67c5a831a15.png )
84
+
85
+ 6 . 通过心跳检测6379节点故障恢复后,作为salve节点与master节点建立主从复制关系;
86
+
87
+ ![ 屏幕快照 2019-02-16 下午4.10.30.png] ( https://i.loli.net/2019/02/16/5c67c61676337.png )
88
+
89
+ 7 . 故障转移完成。(其实到了第3步选取6380为主节点后,服务就可用了)
90
+
91
+
92
+
93
+ 客户端为了高可用,也可以做成多节点,在Redis的master节点出现故障时,客户端多节点通过选举方式来产生新的master节点。从Redis 2.8 版本开始,新加入了 Redis Sentinel 来实现高可用。
You can’t perform that action at this time.
0 commit comments