記一次網絡問題的排查

昨天遇到了一個端口轉發致使VIP失效的問題,今天記錄下當時的排查思路。git

由於要作升級,因此我刪除了dokcer老容器,並啓動新容器。以後訪問VIP, 也就是LVS中的VIP,發現原先能夠訪問的站點不能訪問了。github

以上是故障表現,下面是具體排查過程docker

  • docker logs containerId 檢查docker 中的應用是成功啓動的,排除應用沒法啓動的問題curl

  • curl localhost:80 由於容器是以-p 80:80的方式啓動的,因此接下來我嘗試在物理機上訪問本身的80端口,發現能夠成功訪問應用,排除了forward沒設置的問題工具

  • 接下來,我祭出了瑞士軍刀nc -l 80, 而後在外部以VIP的方式訪問,發現沒法訪問。 這時候懷疑是 iptables 的問題url

  • 先作下備份,service iptables save, 而後關掉service iptables stopcode

  • 再起nc -l 80, 發現很快nc進程就結束了,trace nc -l 80 找出來源包IP,發現是LVS的心跳包。至此VIP恢復訪問進程

  • 接下來就是要找iptables裏誰在搞鬼了。iptables -L, 由於懷疑是docker在搞鬼,因此把展現出和docker有關的都刪了,可是問題沒有解決ip

  • 上面我犯了一個錯誤,那就是覺得iptables -L展現的是全部的規則,但其實只展現了filter, 和轉發有關的nat須要iptables -t nat -L來展現get

  • iptables -t nat -L中和docker有關的刪掉。問題解決。問題緣由是docker刪除容器後沒有把轉發規則刪除。

  • 又重現了下這個問題,應該是docker的問題,刪除實例沒有把轉發規則和proxy幹掉。

此次排查,用到了幾個工具,都是以前的積累,因此排查顯得順暢多了。主要時間花在了對iptables的不熟悉。
更多文章 http://kamushin.github.io/

相關文章
相關標籤/搜索