HA集群实现原理 切换 JAVA_HA(一)高可用集群原理
高可用集群原理
LVS集群DR模式簡單的架構圖如下所示:
在上圖的架構中,當Director服務器因軟件、硬件、人為原因造成故障時,整個集群服務不可用,因此,需要再添加一臺服務器實現Director服務高可用。
整個系統的架構圖如下所示:
此時,客戶端發送請求經過路由器到達Primary (Active)Director服務器,Primary Director服發務器根據調度規則,將請求發送至不同的RealServer服務器,并且Primary Director與Standby(Passive)Director 服務器處于同一網段上,相互進行心跳監測(Heartbeat),當發現提供服務的Primary Director服務器發生故障時,在LVS集群DR模式中,只需將Primary Director服務器上的VIP以及IPVS規則、RealServer高可用腳本轉移到Standby Director 服務器上即可,在這個過程中VIP、IPVS規則、RealServer高可用腳本我們稱之為高可用集群資源(High Availability Resource),這個轉移資源的過程稱之為資源轉移,也稱之為故障轉移(FailOver)。
然而,此時在路由器中緩存的VIP和MAC地址仍然是配置在Primary 服務器網卡別名上的VIP和網卡的MAC地址。為了讓路由器刷新緩存中的VIP和MAC地址,Standby拿到VIP時,強行進行一次ARP解析請求,因請求是廣播的,路由器發現自己緩存中的VIP對應的MAC和廣播中的不一樣,便會更新自己的緩存,然后當客戶端發起請求時,路由器就將請求發送至Standby服務器。
由上面簡單高可用集群可以概括出高可用集群(High Availability Cluster)是指當某一個節點或服務器發生故障時,另一個節點能夠自動且立即向外提供服務,即將有故障節點上的資源轉移到另一個節點上去,這樣另一個節點有了資源既可以向外提供服務。高可用集群是用于單個節點發生故障時,能夠自動將資源、服務進行切換,這樣可以保證服務一直在線。
高可用集群一般是通過系統的可靠性(Reliability)和系統 的可維護性(Maintainability)來衡量的。通常用平均無故障時間(MTTF)來衡量系統的可靠性,用平均維護 時間(MTTR)來衡量系統的可維護性。因此,一個高可用集群服務可以這樣來定義:HA=MTTF/(MTTF+MTTR)*100%。
描述
通俗叫法
可用性級別
年度停機時間
基本可用
2個9
99%
87.6小時
較高可用
3個9
99.9%
8.8小時
具有故障自動恢復能力的可用
4個9
99.99%
53分鐘
極高可用
5個9
99.999%
5分鐘
在上面的描述中,對Director服務器的主、從描述將會產生誤解,其實,當故障轉移之后,主變成了從,從變成了主,將提供正常服務的Director主機稱之為Primary更合理。
以上圖為例,考慮一個問題,當Primary服務器故障修復時,是否需要將Standby服務器上的資源轉移回Primary服務器?
假如我們在服務器上運行的是一個WEB服務,當Standby服務器的資源轉移回Primary服務器時,所有用戶連接必然會斷開,用戶體驗不佳,但是,Standby服務器作為備用服務器,一般情況下,性能比Primary服務器差很多,我們不轉移回Primary服務器,整個WEB性能跟不上,用戶體驗也不好,因此,就要判斷資源更傾向于運行在那個服務器節點,資源對服務器節點的傾向值,稱之為高可用集群的資源粘性。資源粘性的值一般用整數來表示,正數表示傾向與運行在當前節點,負數表示不適合運行在當前節點。再假如,Primary服務器的資源粘性是10,Standby的資源粘性是-10,當Primary服務器故障修復時,資源從StandbyPrimary服務器,這個過程稱之為自動恢復,也稱之為故障回轉(FailBack)。
總結
以上是生活随笔為你收集整理的HA集群实现原理 切换 JAVA_HA(一)高可用集群原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql多数据源_egg-mysql配
- 下一篇: java 3位小数_数字有效小数第三位四