6.5 lvs負載均衡集羣運行維護
作者:田逸([email protected])
當我們把所有的配置做好並通過各項功能測試後,就可以把這個集羣環境正式運行起來(這裏忽略其它處理過程),但這並不意味着萬事大吉。要使負載均衡環境真正的高可用並符合業務需求,還有事情需要去做的。這些事情包括:負載均衡環境中對象新增、變更及刪除,狀態監控,故障的排查處理等。
這裏的對象包括vip、真實服務器、服務(vip+端口號)等。從前面的事例可以得知,一對負載均衡器,可以承擔多個服務的轉發任務,因此在運行過程中,很可能因爲業務本身的變化而新增、變更或刪除對象。比如:某個服務負載趨於飽和,需新加服務器;有些業務下線了,需要從轉發隊列中把服務刪除掉。
對象增加、變更及刪除的操作,涉及負載均衡器和真實服務器。在負載均衡器方面,主要的操作就是修改keepalived的配置文件keepalived.conf;在真實服務器上,進行的操作主要是編寫lvs配置腳本、運行或者關閉這個配置腳本。
在有2個負載均衡器的lvs環境,所作的配置文件keepalived.conf變更操作要在這兩個服務器上都進行一遍,以保持配置和服務的一致性。
當我們進行對象增加、變更或刪除的操作時,只要注意好執行的先後順序,就能保證提供的服務不中斷,用戶的正常訪問不受影響。
● 對象新增
假定在負載均衡環境新增一個web服務器,其操作順序是:
1、 啓用新增服務器的web服務。
2、 啓用新增服務器的lvs客戶端配置腳本。
3、 檢驗“1”和“2”兩步的正確性。
4、 修改負載均衡器的配置文件keepalived.conf。
5、 關閉第一個lvs負載均衡器,所有的轉發服務將切換到另外一個負載均衡器上。
6、 啓用“5”關閉的那個負載均衡器,然後關閉“5”中還在運行的那個負載均衡器。
7、 重新啓動“6”所關閉的負載均衡器。
● 刪除對象
假定在負載均衡環境刪除一個web服務器,其操作順序是:
1、 關閉欲下線服務器的web服務。這樣負載均衡器的健康檢查會自動把該web服務從轉發隊列刪除掉。
2、 卸載欲下線服務器的vip地址。即執行/usr/local/bin/lvs_real stop操作。
3、 修改負載均衡器的配置文件keepalived.conf。
4、 關閉第一個lvs負載均衡器,所有的轉發服務將切換到另外一個負載均衡器上。
5、 啓用“4”關閉的那個負載均衡器,然後關閉“4”中還在運行的那個負載均衡器。
6、 重新啓動“6”所關閉的負載均衡器。
● 變更對象
與前兩種方式的操作步驟基本相似,不再贅述。
這裏再強調一下,如果真實服務器上的服務沒關閉而把其上的vip卸載的話,某些用戶的請求仍然會被負載均衡器轉發過來,導致請求失敗。因此,要記住,無論如何,請先關服務!
爲了隨時隨地瞭解整個lvs負載均衡環境的運行情況,我們必須對其進行有效的監控。當出現異常或故障時,監控系統能及時有效的通知維護人員,以便問題得以及時地處理。這也是提高可靠性的一個保障措施。
有很多開源的或商業類型的監控系統可供選擇,本書選定開源的nagios作爲監控平臺,關於nagios的相關細節,請參照“網絡服務及主機資源監控-nagios”一章。
可供nagios監控的對象很多,對lvs負載均衡環境而言,怎麼選定對象纔是最有效的呢?這裏我們先來回顧一下lvs負載均衡環境運行時,其存在的表現形式有哪些?
1、 負載均衡器及真實服務器。
2、 各真實服務器上運行的服務。
3、 Lvs公用的vip。
根據這些表現形式,我們選取存活檢查及服務狀態作爲監控對象,就可以清晰地瞭解lvs負載均衡環境的運行狀況。把它具體化,可分爲:
1、 負載均衡器及真實服務器的存活檢查。只有這些服務器運行正常,纔可能有其他依賴服務。
2、 Vip的存活檢查。一般情況下,啓用了lvs環境後,是可以用ping的方式檢查vip的。
3、 真實服務器服務狀態檢查。
4、 Vip對應的服務狀態檢查。一般通過check_tcp加端口號的形式實現。如果web集羣,可以以check_http!url的方式更精確的檢查。
在對lvs運行環境進行有效的監控後,一旦有故障或異常發生,系統管理人員將會得到及時的通知。並且這些報警信息往往包含故障的基本情況,如負載過高、主機down了、服務嚴重不可用(critical)、磁盤空間快滿了等等,這些信息非常有利於系統管理員定位故障點。如果沒有一個有效的監控系統,故障的報告往往來自用戶的報告。這些報告籠統而模糊,可能包含“你們的網站不能訪問了”之類的字眼,要定位故障點,可能會花費更多的時間。
在知曉和定位故障以後,結下來就是分析和處理故障。Lvs負載均衡的故障點可分爲:負載均衡器故障、真實服務器故障、vip故障、服務故障這幾個部分。這些故障出現後,怎麼着手處理?下面分別論述之。
● 負載均衡器發生故障的檢查點
1、 查看系統日誌 /var/log/messages ,瞭解內核是否有報錯信息。因爲keepalived的日誌也被追加到系統日子,因此通過系統日誌,也能瞭解keepalived的運行情況。
2、 檢查負載均衡器的網絡連通狀況。這包括ip地址的設置是否正確,是否能遠程訪問(如ping 、tracert等)。
3、 檢查keepalived的運行情況。這包括進程是否處於運行中,ipvs模塊是否被加載到系統的內核,vip是否被綁定到網絡接口,ipvsadm是否有輸出。
4、 檢查負載均衡器的系統負載。
5、 檢查keepalived的配置文件書寫是否正確。因爲keepalived啓動過程不對配置文件做語法檢查,因此在運行前,必須按需求表逐項檢查配置文件keepalived.conf 的內容。有時,就可能就是因爲漏寫了一個“}”符號而導致意外的結果。配置文件的內容檢查還包括主從優先級priority、虛擬路由標識virtual_router_id、路由標識router_id等幾個部分,這些值有些是必須相同的、有些則必須不同。
6、 檢查負載均衡器是否啓用防火牆規則。
● 真實服務器發生故障的檢查點
1、 查看系統日誌 /var/log/messages ,瞭解內核是否有報錯信息。
2、 檢查服務器的網絡連通狀況。
3、 檢查服務是否正常運行。可以結合察看進程、模擬用戶訪問來確定。
4、 檢查服務器的負載情況,看哪些進程佔用較高的資源。如果暫停佔資源高的進程,情況會怎麼樣?
5、 檢查vip是否被綁定。Linux只能通過ip add 指令察看,freebsd 用ifconfig就可以了。
6、 檢查主機防火牆是否被啓用。如果需要啓用主機防火牆,則應設置好過濾規則。
7、 從客戶端直接訪問服務器的服務,看是否能正常訪問。這是dr模式的一個優點。
● vip發生故障的檢查點
1、 檢查負載均衡器的vip是否被綁定。
2、 檢查負載均衡器ipvsadm的輸出,察看輸出的vip項是否與我們的設定相一致。
3、 檢查各真實服務器的vip是否被綁定。
4、 從客戶端測試一下vip的連通情況,如ping vip。
5、 檢查vip地址是否與其它服務器的地址相沖突。
● 服務發生故障檢查點
1、 檢查服務是否正常運行。如查進程、模擬用戶訪問等。
2、 檢查系統的負載情況。
3、 檢查是否啓用主機防火牆。
一旦知道問題的所在,解決問題本身就不再是什麼困難的事情了,因此這裏不再一一列舉對應的解決方法。
Lvs負載均衡環境需要備份的數據包括keepalived配置文件和lvs客戶端配置腳本。因爲這兩個文件都是文本文件,並且尺寸小(幾k而已),因此可以以複製的方式進行備份。如果把備份放在windows環境的話,儘量不要用word、寫字板一類的工具修改它。如果用windows的word之類的工具編輯這兩個文件,上傳到linux服務器時,會出現格式問題,而導致運行錯誤。當然,可以用dos2unix修正格式,或者在vi的命令模式下,以“:set ff=unix”方式轉換格式。