記一次keepalived lvs 負載均衡異常的問題


屬於一個線上的問題,就大概介紹下處理

背景

一個需要需要進行內外網流量的切分(基於dns)外部dns 解析到一個公網ip,然后公網ip 映射到內網的lvs vip 
為了部署簡單,內網流量以及外網流量使用了一套keepalived(dr 模式,夠用了),不同業務流量的請求到vip 
然后vip 轉發到實際提供服務的服務器節點

現象

在進行測試階段,配置好keepavlied 之后,測試lb 都是正常的(包括內網網的處理,但是外網的是基於內部vip的) 
在基本的測試都沒問題之后,添加了外網ip到內網的映射(基於F5),同時修改了dns A記錄(以前外網的ip還可用,這樣業務影響很小) 
dns 切換完成之后,觀測外網服務節點的流量很比較正常(基於prometheus+node exporter),然后晚上突然收到報警服務 
有異常,因為在路上,只能手機測試下(沒有問題,應該不是100%問題),后邊過了20分鍾,收到短信通知服務恢 
復(實際上系統負載小了,系統自動恢復可用了)

排查

到家之后,查看系統配置(通過vpn),以及lvs 狀態,發現一個很怪異的問題,lvs 外網流量只有一個節點可處理請求,其他節點基本就是空閑狀態 
自然懷疑lvs 是不是故障了,但是內網流量很正常,lvs real server 的配置也沒問題,一句話系統的負載均衡有問題,因為排查很晚了,還沒解決 
就休息了(臨時調整了一些服務器參數,保障業務處理會好點)

找到問題原因

第二天到公司,查看服務的請求日志發現了一個比較怪異的問題,理論上我是要內外網流量切換的,但是提供服務的機器,獲取到的一直是同一個ip 
(F5入口的),這個就比較怪異了,而且也不應該的,因為我們系統需要回話的處理,keepalived 配置了回話保持,基於lvs的策略,負載當然就不均 
衡了(之前還嘗試過修改lvs 的負載均衡算法,按照實際的請求都是一個ip,修改也沒用),之后聯系開通外網ip的同事,調整f5提供ip 的模式,讓 
用戶端ip可以透傳到lvs 的vip 請求數據包中,通過ipvsadmn -ln 觀測master 的鏈接請求,負載均衡立馬正常,各real server 都可以提供服務了,系統 
響應以及狀態也都慢慢正常了

說明

以上是一個關於lvs的問題,很多時候我們可能只關注了一點,同時只測試了系統的部分鏈路,這樣可能就會有風險,同時我們在搞方案設計的時候 
應該對於整個請求的鏈路以及環節都應該清楚點,至少解決問題會快很多,不會那么盲目,還有就是多看看源碼,了解系統的工作原理也是很重要的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM