主備切換是很多高可用性系統都必須解決的問題,方法有很多,象基於zookeeper的主備切換就是乙個很好的選擇。
在這裡提供一種更簡單但不完美的主備切換方法:
1) 假設a和b是集群中的主控(master)節點
2) 1~7是工作節點(如hdfs中的datanode)
3) 在每個工作節點上,都同時配置了a和b的ip,而且是對等的,無主備之分
所謂主:是指提供服務的主控,而備是指不提供服務的主控,當主故障時,由備接管其它服務,但因網路原因,可能主和備都未故障,這個是解決主備切換的關鍵問題所在。
選擇a或b作為主的過程:
1) 未連線之前,如圖1所示,a和b都不是主
2) 1~7隨機選擇連線到a或b
3) 這個時候可能會出現如圖2所示的情況
4) (關鍵點)在指定的時間內(如1秒),不管是a還是b,發現到自己的連線數小於50%(這個值可修改)就主動切斷連線,這個時候會將本來和自己建立連線的節點趕往另一邊
5) 當a或b發現到自己的連線數超過60%(這個值可修改)時,就認為自己是主了,並保持連線
6) 這樣當a或b有乙個掛掉時,最終肯定會有乙個滿足作為主的條件
如果是網路原因,而不是a或b本身故障,則會出現一些可以連線到a但不能連線到b,而另一些可以連線到b但不能連線到a,甚至還有些可以同時連線a和b,但總是只有滿足超過50%的才提供服務,這樣就不會出現同時存在兩個主的情況。所以,如果恰好是一半一半,那就無法提供服務,需要人工干預了,比如工作節點,平均分配在兩個不同idc,由於兩個idc間網路故障,問題就會出現。
圖1
會不會導致a和b都是40%或50%了?這個會,但會觸發重新競爭分配,只需要做一些策略調整,就可以解決這個問題,比如a是每1秒算乙個間隔,b為2秒乙個間隔。
opengauss 主備切換
第一步 準備切換為主節點的備節點,執行如下 主備均 正常的時候 gs ctl switchover d opt huawei install data db1 在 主 宕機或者失聯等情況下 在備節點 執行下面的命令 gs ctl failover d opt huawei install data ...
keepalived實現主備切換
wget tar zxvf keepalived 1.2.18 tar.gz c usr local yum install y openssl openssl devel cd keepalived 1.2.18 configure prefix usr local keepalived make...
Keepalived Nginx主備切換實現高可用
keepalived nginx主備切換 實現高可用 keepalived 基於vrrp 虛擬路由器冗餘協議 來實現對web服務的高可用方案 安裝keepalived 1.configure prefix data program keepalived sysconf etc 2.缺少依賴opens...