因為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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 因壞道問題導致的硬碟故障如何進行資料恢復?硬碟資料恢復
- CAS導致的ABA問題及解決
- 引入外部js檔案導致亂碼問題解決方案JS
- 導致 Scan VIP 和 Scan Listener(監聽程式)出現故障的最常見的 5 個問題
- 因為跨域問題導致的無法讀取 response header跨域Header
- 網路卡故障導致區域網網路故障原因與解決辦法
- HCNP Routing&Switching之路由引入導致的問題及解決方案路由
- 記一次升級Gradle外掛導致相容問題的解決方案Gradle
- DB Link因 driving_site導致的效能問題
- 一次因為修改環境變數導致RESIN不能啟動的問題變數
- xxl-job濫用netty導致的問題和解決方案Netty
- 解決因為原生程式碼和遠端程式碼衝突,導致git pull無法拉取遠端程式碼的問題Git
- 解決程式(因為數字的問題)沒反應的方法
- 記一次儲存問題導致的rac故障案例
- 因為一個小小的Integer問題導致阿里一面沒過,遺憾!阿里
- 【問題處理】恢復因誤生成PFILE 導致RAC的SPFILE無效的問題
- 解決hyper v導致docker無法啟動問題Docker
- react-router4:解決使用browserRouter模式導致的404問題React模式
- DNS導致資料庫登入緩慢的問題解決DNS資料庫
- git合併丟失程式碼問題分析與解決(錯誤操作導致)Git
- 從專案管理角度看因防疫導致的孕婦流產問題專案管理
- 【RAC】處理因ons導致CPU使用率過高的問題
- 11gR2 RAC使用SCAN故障切換問題的解決方案
- 解決因ocr資源狀態為unknown導致CRS-0223
- TSM故障問題解決一則
- 解決Linux索引節點(inode)用滿導致故障的方法Linux索引
- Java 8 的日期與時間問題解決方案Java
- 解決對時間列運算導致不能走索引的問題索引
- ipf導致sendmail不能正確轉發郵件的問題解決AI
- 【ASK_ORACLE】因process用盡導致的rac重啟的解決方法Oracle
- Node出錯導致執行崩潰的解決方案
- 【問題處理】因ASM磁碟組空間不足導致資料庫例項無法啟動的故障處理ASM資料庫
- Linux下共享庫問題導致無法啟動SQLPLUS的問題解決LinuxSQL
- GitHub 又出故障了之惡搞版,部分使用者因為降級導致無法訪問私有倉庫Github
- 快取與資料庫雙寫,不一致問題及解決方案快取資料庫
- Wampserver圖示是橙色的【問題與解決方案】Server
- 解決new Thread().Start導致高併發CPU 100%的問題thread
- 不同Node版本導致的Date建構函式問題及解決方法函式