drds節點異常處理,docker節點程序一直重啟
版本:
阿里雲專有云v2版本
問題現象:
同步任務反饋drds無法連線資料庫,經排查drds manager 發現有一個節點異常
排查過程:
向現場運維組反饋該異常後,為了確保生產環境的使用,確定通過drds manager進行白屏重啟。點選重啟後,無法返回成功介面,又強制重啟,還是沒有響應。
然後嘗試通過命令列連線到該docker,顯示連線失敗,無法ping通該docker。
通過天目發現該docker所在的物理機報機器故障。通過天目登入到遠端機房主機進行重啟,依然顯示連線異常。(期間是對這個docker重啟了好幾次)
最後針對物理機故障的問題向客戶反饋維修,物理機正常之後發現該docker還是連線異常,通過天目發現報錯為檢測失敗。

登入到該docker節點上發現,java程序一直被重新拉起。時有時無。
並且在該drds上的tddl目錄下發現大量的gc 日誌。
從而說明了該docker的java程序一直被不斷的重拉,每起來一次就會產生一個gc日誌。
並且日誌裡面也只是儲存了一些簡單的資訊
向drds研發同學諮詢,發現drds的java程序pid內容和/home/admin/drds-server/bin/tddl_3306.pid內容比較發現程序的pid是不一致。


執行健康檢查的指令碼,可以判斷服務是否正常,執行發現service is down
排查是否有進行手動kill,結果是沒有。
經研發同學經驗排查,發現該docker的nameserver有多個127.0.0.1
而正常的docker節點下,是隻有一個的,如下:
解決方法:
經開發確認為,這個drds 的 docker節點在 專有云v2版本的bug。在頻繁重啟容器超過3次後,之後再每次重啟容器都會在resolv.conf這個檔案裡面重複寫入127.0.0.1。就會導致程序一直不斷的被拉起。 根據研發的建議: 1、先把多餘的127.0.0.1刪除保留一個;
2、 把bin目錄下的pid檔案刪除掉;
3、 停止drds-server程序;
4、 按照sudo -u admin sh /home/admin/drds-server/bin/startup.sh -p 3306 -D啟動drds 的java程序;
重啟之後,問題解決

