Keepalived
檢測伺服器狀態的計算機軟體
keepalived是一個類似於layer3, 4 & 5交換機制的軟體,也就是我們平時說的第3層、第4層和第5層交換。Keepalived是自動完成,不需人工干涉。
Keepalived的作用是檢測伺服器的狀態,如果有一台web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常后Keepalived自動將伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的伺服器。
Layer3,4,5工作在IP/TCP協議棧的IP層,TCP層,及應用層,原理分別如下:
Layer3:Keepalived使用Layer3的方式工作式時,Keepalived會定期向伺服器群中的伺服器發送一個ICMP的數據包(既我們平時用的Ping程序),如果發現某台服務的IP地址沒有激活,Keepalived便報告這台伺服器失效,並將它從伺服器群中剔除,這種情況的典型例子是某台伺服器被非法關機。Layer3的方式是以伺服器的IP地址是否有效作為伺服器工作正常與否的標準。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP埠的狀態來決定伺服器工作正常與否。如web server的服務埠一般是80,如果Keepalived檢測到80埠沒有啟動,則Keepalived將把這台伺服器從伺服器群中剔除。
Layer5:Layer5對指定的URL執行HTTP GET。然後使用MD5演演算法對HTTP GET結果進行求和。如果這個總數與預期值不符,那麼測試是錯誤的,伺服器將從伺服器池中移除。該模塊對同一服務實施多URL獲取檢查。如果您使用承載多個應用程序伺服器的伺服器,則此功能很有用。此功能使您能夠檢查應用程序伺服器是否正常工作。MD5摘要是使用genhash實用程序(包含在keepalived軟體包中)生成的。
SSL_GET與HTTP_GET相同,但使用SSL連接到遠程Web伺服器。
MISC_CHECK:此檢查允許用戶定義的腳本作為運行狀況檢查程序運行。結果必須是0或1.該腳本在導演盒上運行,這是測試內部應用程序的理想方式。可以使用完整路徑(即/path_to_script/script.sh)調用可以不帶參數運行的腳本。那些需要參數的需要用雙引號括起來(即“/path_to_script/script.sh arg 1 ... arg n”)
主要用作RealServer的健康狀態檢查以及LoadBalance主機和BackUP主機之間failover的實現。
高可用web架構: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可選 可不選)