社群王牌專欄《一問一實驗:AI 版》改版以來已釋出多期(51-58),展現了 ChatDBA 在多種場景下解決問題的效果。目前我們已經開放了第一批定邀使用者進行體驗,如果您希望快速體驗到 ChatDBA 的能力,歡迎在文末填寫自己的聯絡方式。
溫馨提示,資訊填寫的越完整,稽核速度越快哦~
下面讓我們正式進入《一問一實驗:AI 版》的第 59 期。
問題
OceanBase NTP 時鐘不同步的問題排查?
問題現象: OBServer 伺服器 NTP 時鐘同步異常,導致 OBServer 無法正常啟動。
下面我們將帶著問題,與 ChatDBA 進行四輪互動,精彩內容即將開始~
實驗
ChatDBA 演示影片,第一時間同步社群影片號及嗶哩嗶哩,歡迎關注。
ChatDBA 專家模式
專家模式在第一輪對話開始後,會根據問題生成【根因分析樹】,展示 ChatDBA 對問題的排查邏輯,方便啟發 DBA 快速定位問題。
第一輪互動
將故障問題的輸入給 ChatDBA。
ChatDBA 會根據問題生成 初步參考結果。
ChatDBA 給出排查步驟,提醒需要收集 journalctl 日誌 來進一步分析,同時給出具體的查詢命令以及需要重點觀察的內容。
第二輪互動
根據上一輪 ChatDBA 給出的排查步驟,查詢 journalctl 日誌並輸入給 ChatDBA。
ChatDBA 根據 journalctl 日誌報錯資訊,需要我們排查 ntpdate 配置檔案以及DNS設定,以便於繼續排查問題產生原因。
第三輪互動
根據上一輪 ChatDBA 給出的排查步驟,我們將排查的結果以及對應 ntpdate 配置檔案資訊給到 ChatDBA。
ChatDBA 根據我們提供的結論以及 ntpdate 配置資訊,初步確定可能由於呼叫 ntpdate-wrapper 指令碼導致的問題。ChatDBA 建議我們檢視 ntpdate-wrapper 指令碼檔案資訊。
第四輪互動
根據 ChatDBA 給出的提示,我們檢視了 ntpdate-wrapper 指令碼內容。發現其中不但引入了 ntp.conf 檔案還引用了 step-tickers 檔案,並且會優先從 step-tickers 中獲取 IP 資訊。在檢視了 step-tickers 檔案後,我們發現了 0.kylin.pool.ntp.org,與日誌報錯資訊一致。因此基本確定了問題產生原因。
將上述情況告知 ChatDBA,獲取解決方案。
最終,ChatDBA 根據我們提供的資訊,確定了問題的產生原因並向使用者提供瞭解決方案,問題得到解決。
實驗總結
OceanBase NTP 時鐘不同步可能由以下幾個原因造成:
NTP 服務配置問題: 如果 NTP 服務無法啟動,可能是因為配置檔案中指定的 NTP 伺服器地址不正確或無法訪問。例如,如果 ntpdate 服務嘗試使用的伺服器不是 ntp.conf 檔案中配置的 Server 地址,就會導致服務啟動失敗。
DNS 解析問題: 如果 NTP 服務報告無法找到主機,可能是因為 DNS 解析問題。例如,日誌中顯示 Can't find host 0.kylin.pool.ntp.org: Name or service not known,這表明 NTP 嘗試使用的伺服器地址無法被解析。
配置檔案錯誤: 如果 ntpdate-wrapper 指令碼或 ntp.conf 配置檔案中有錯誤,也可能導致 NTP 服務無法正常工作。例如,如果 step-tickers 檔案中填寫了錯誤的 NTP 伺服器地址,而該檔案會被 ntpdate 服務優先使用,就會導致時鐘同步失敗。
網路問題: 如果網路連線不穩定或配置不當,也可能導致 NTP 服務無法與 NTP 伺服器通訊,從而無法同步時間。
許可權問題: 如果 NTP 服務沒有以正確的使用者許可權執行,也可能導致服務啟動失敗。
時鐘源問題: OceanBase 叢集的正常執行依賴穩定的時鐘源。如果使用的是虛擬機器而不是物理機,可能會導致時間不穩定,從而影響時鐘同步。
NTP 服務未以正確的模式啟動: NTP 服務需要以 -x
模式啟動(slew mode),以保證在有時鐘偏差的情況下可以緩慢調整偏移。如果沒有以這種模式啟動,可能會導致時鐘同步問題。
本次出現的問題是由於配置檔案錯誤,導致的問題產生。
NTP 服務配置詳解
網路時間協議(NTP)服務透過配置檔案 ntp.conf 來確保系統時間的準確性,檔案列出了多個時鐘伺服器地址,以便在主伺服器不可用時自動切換到備用伺服器。另外,step-tickers 檔案,用於指定當系統時間偏差較大時,NTPDATE 工具使用的時鐘伺服器。
通常情況下,step-tickers 檔案為空,這時 NTPDATE 會使用 ntp.conf 中的伺服器。如果 step-tickers 檔案中指定了伺服器,NTPDATE 會優先使用這些伺服器來同步時間。這也是產生本次問題的根本原因。因此,為了避免 NTPD 和 NTPDATE 服務使用不同的配置檔案,有時需要註釋掉 step-tickers 檔案中的域名資訊。