lvs 負載均衡遇到的一個問題. (問題解決)

babyyellow發表於2016-03-17

我們在資料庫前面加了lvs  + keepalived  做vip 切換, 實現資料庫ha . 


整套流程也是很成熟的了. 


近期遇到了一個問題.  

lvs 的 master  與backup 節點之間 vip 可以自由的飄來飄去 , 對應用端是透明的. 

但是最近遇到一個問題 ,  vip 在飄逸後,  一部分應用是可以訪問資料庫的,一部分應用是無法訪問資料庫的,報錯就是網路超時. 

應用伺服器也ping 不通 vip  ,  做過一次抓包分析, 發現應用伺服器發出的包的目標地址是錯的. 

由此懷疑  vip 飄逸後, vip 的arp 廣播包 可能沒有到達應用伺服器所在的網段.

由於區域網 比較大, 分了幾個網段. 


目前還不清楚 , 是什麼原因導致的  arp 廣播包沒有到達遠端. 


這個問題可以重現, 但是無法模擬, 只能等,  目前真正的原因也沒有找到. 

---------------------------------------

問題終於解決了.  lvs 在發生vip 切換後,悔自動傳送arp 廣播. 

 在實際操作中,我們發現 有時候(偶爾) arp 廣播沒有被交換機學習到. 

自己在程式碼里加了一個arping 的命令手工傳送arp 廣播,由於同事的程式碼有一定的邏輯問題, 在vip 飄逸後,導致arping 命令變成裡的damon 程式, 會一直髮送完指定個數的arp包. 

這個時候, vip 已經漂移到另一個lvs 機器上,那個機器也會傳送arpping 廣播包, 這個兩個程式會同時傳送 , 直到第一個daemon 程式 完成後,系統才會正常.

為什麼不會總是出現呢, 因為有時候 arping 程式碼會在隨著vip 的漂移會成功推出,有時候又無法被kill 變成daemon 程式了. 

至此問題原因找到, 我們最佳化了這部分程式碼的業務邏輯.問題解決. 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2058966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章