mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
Updated AdminGuide (markdown)
@@ -445,5 +445,17 @@ sh bin/stop.sh</pre>
|
||||
</pre>
|
||||
<p> 与此同时,客户端也会随着canal server的切换,通过获取zookeeper中的最新地址,与新的canal server建立链接,继续消费数据,整个过程自动完成</p>
|
||||
<p> </p>
|
||||
<h4><strong>触发HA自动切换场景 (server/client HA模式都有效)</strong></h4>
|
||||
<p>1. 正常场景</p>
|
||||
<p> a. 正常关闭canal server(会释放instance的所有资源,包括删除running节点)</p>
|
||||
<p> b. 平滑切换(gracefully)</p>
|
||||
<p> 操作:更新对应instance的running节点内容,将"active"设置为false,对应的running节点收到消息后,会主动释放running节点,让出控制权但自己jvm不退出,gracefully. </p>
|
||||
<pre name="code" class="java">{"active":false,"address":"10.20.144.22:11111","cid":1}</pre>
|
||||
<p>2. 异常场景</p>
|
||||
<p> a. canal server对应的jvm异常crash,running节点的释放会在对应的zookeeper session失效后,释放running节点(EPHEMERAL节点)</p>
|
||||
<p> ps. session过期时间默认为zookeeper配置文件中定义的tickTime的20倍,如果不改动zookeeper配置,那默认就是40秒</p>
|
||||
<p> b. canal server所在的网络出现闪断,导致zookeeper认为session失效,释放了running节点,此时canal server对应的jvm并未退出,<strong>(一种假死状态,非常特殊的情况)</strong></p>
|
||||
<p> ps. 为了保护假死状态的canal server,避免因瞬间runing失效导致instance重新分布,所以做了一个策略:canal server在收到running节点释放后,延迟一段时间抢占running,原本running节点的拥有者可以不需要等待延迟,优先取得running节点,可以保证假死状态下尽可能不无谓的释放资源。 目前延迟时间的默认值为5秒,即running节点针对假死状态的保护期为5秒. </p>
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user