因為arp 問題導致的vip 故障與解決方案
這幾天進行了關於vip 方面的檢測的 測試,
遇到了一個奇怪的問題,vip 服務正常,資料庫可以透過vip訪問,但是從庫在ping vip 的時候,卻告警ping 不通,
出現的次數也不多,每天有2,3次的樣子,檢測過程經過了容錯包裝,也不至於會導致系統誤切換。
但是還是搞清楚,心裡才踏實。
聯合網路做了些分析:
經過檢視當時的日誌還是發現了一些端倪的:
從機會透過arping 去確認vip 是否存活, 然後我們就在這裡發現了問題了。
這套裝置是啟動了雙網路卡的,一個工作網路,一個是心跳網路
最後發現 在ping 之前發出的那個arp 相應包,是不是工作網路卡的mac 地址
而是心跳 網路卡的mac 地址
然後ping 完後,就變工作網路卡的mac 地址了。
在網路同事的幫助下,分析了原因:
預設情況,linux 的arp 響應是出在混雜模式的,
主機預設是開啟arp 混雜模式的,
就說這臺機器上如果有多個網路卡啟動,那麼在混雜模式下,我這個網路卡收到arp 詢問的時候,如果如果這臺機器上配置了對應的ip 但不是配置我當前的網路卡上,那麼這個網路卡還是可能會響應arp 詢問包,把自己的arp 回給對方。
這個情況下,就導致對方詢問的arp 不是目標ip 所在的網路卡。
從日誌裡也得到了證實, 我們從庫會透過arp 廣播來確定確定vip 是否在執行,這個時候某些情況下,我們接受的arp 回應是主庫的另外一個網路卡的arp 不是vip 所在網路卡的arp ,在接下來的ping 的檢測,因為在不同的網段,arp 表中標記的arp 跟vip 不在同一個子網裡,導致ping 不通。
這樣就解釋的通,為什麼ping 不同vip
解決方案:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
這兩個引數寫到/etc/sysctl.conf 裡面
怎麼生效,就不說了吧?
sysctl -p 後
是需要重啟網路卡生效的
一般情況下都不太可能用到這種混雜模式的,所以在裝機的就處理掉最好,免得夢多。
祝玩得愉快!!
遇到了一個奇怪的問題,vip 服務正常,資料庫可以透過vip訪問,但是從庫在ping vip 的時候,卻告警ping 不通,
出現的次數也不多,每天有2,3次的樣子,檢測過程經過了容錯包裝,也不至於會導致系統誤切換。
但是還是搞清楚,心裡才踏實。
聯合網路做了些分析:
經過檢視當時的日誌還是發現了一些端倪的:
從機會透過arping 去確認vip 是否存活, 然後我們就在這裡發現了問題了。
這套裝置是啟動了雙網路卡的,一個工作網路,一個是心跳網路
最後發現 在ping 之前發出的那個arp 相應包,是不是工作網路卡的mac 地址
而是心跳 網路卡的mac 地址
然後ping 完後,就變工作網路卡的mac 地址了。
在網路同事的幫助下,分析了原因:
預設情況,linux 的arp 響應是出在混雜模式的,
主機預設是開啟arp 混雜模式的,
就說這臺機器上如果有多個網路卡啟動,那麼在混雜模式下,我這個網路卡收到arp 詢問的時候,如果如果這臺機器上配置了對應的ip 但不是配置我當前的網路卡上,那麼這個網路卡還是可能會響應arp 詢問包,把自己的arp 回給對方。
這個情況下,就導致對方詢問的arp 不是目標ip 所在的網路卡。
這樣就解釋的通,為什麼ping 不同vip
解決方案:
net.ipv4.conf.all.arp_announce = 2
這兩個引數寫到/etc/sysctl.conf 裡面
怎麼生效,就不說了吧?
sysctl -p 後
是需要重啟網路卡生效的
一般情況下都不太可能用到這種混雜模式的,所以在裝機的就處理掉最好,免得夢多。
祝玩得愉快!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-1182301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 因壞道問題導致的硬碟故障如何進行資料恢復?硬碟資料恢復
- 解決 allure.dynamic.parameter 不生效問題 或者 allure 報告中因為引數導致排版的問題
- CAS導致的ABA問題及解決
- HCNP Routing&Switching之路由引入導致的問題及解決方案路由
- 因為跨域問題導致的無法讀取 response header跨域Header
- [轉帖]JFR 定位因為 SSL 導致 CPU Load 飈高的問題
- xxl-job濫用netty導致的問題和解決方案Netty
- 記一次升級Gradle外掛導致相容問題的解決方案Gradle
- 記一次儲存問題導致的rac故障案例
- 解決因為原生程式碼和遠端程式碼衝突,導致git pull無法拉取遠端程式碼的問題Git
- 解決程式(因為數字的問題)沒反應的方法
- UINavigationController 全域性右劃導致介面假死問題解決UINavigationController
- react-router4:解決使用browserRouter模式導致的404問題React模式
- 解決new Thread().Start導致高併發CPU 100%的問題thread
- 因為一個小小的Integer問題導致阿里一面沒過,遺憾!阿里
- git合併丟失程式碼問題分析與解決(錯誤操作導致)Git
- mstar因裝置讀不到導致,待機重啟問題
- Wampserver圖示是橙色的【問題與解決方案】Server
- Java 8 的日期與時間問題解決方案Java
- Redis 大key(bigkey)問題的排查與解決方案Redis
- TKE 容器網路中的 ARP Overflow 問題探究及其解決之道
- 【ASK_ORACLE】因process用盡導致的rac重啟的解決方法Oracle
- 快取與資料庫雙寫,不一致問題及解決方案快取資料庫
- 從專案管理角度看因防疫導致的孕婦流產問題專案管理
- GitHub 又出故障了之惡搞版,部分使用者因為降級導致無法訪問私有倉庫Github
- 不同Node版本導致的Date建構函式問題及解決方法函式
- linux start_udev 導致VIP漂移Linuxdev
- 深入分析與解決方案:快取與資料庫雙寫不一致問題快取資料庫
- 伺服器不同的故障導致資料丟失都怎麼解決的伺服器
- 記一次Vue跨導航欄問題解決方案Vue
- 跨域問題,解決方案 – CORS方案跨域CORS
- SAP 交貨單與HU指派關係資料不一致問題的解決方案
- ANALYZE導致的阻塞問題分析
- 使用interface化解一場因作業系統不同導致的編譯問題作業系統編譯
- 記錄一次因 mysql 欄位取名不規範導致的問題MySql
- Mycat分片方案需要解決的問題
- 玩Deno遇到問題的解決方案
- 整合Health Kit時因證書問題出現錯誤碼50063的解決方案
- MySQL的index merge(索引合併)導致資料庫死鎖分析與解決方案MySqlIndex索引資料庫