全部產品
Search
文件中心

Elastic Compute Service:系統時間跳變演練

更新時間:Apr 24, 2025

時間跳變指系統時鐘突然發生變化。系統時間的準確性、系統各組件時間的一致性,對於生產系統至關重要,否則會導致依賴時間的各種服務異常,如日誌、同步備份等。通過時間跳變演練可以驗證系統在發生系統時間跳變時,能否及時同步恢複正確時間並恢複業務。

實現原理

本方案使用雲助手外掛程式ACS-ECS-TimeJump,通過設定系統時間位移量可將時間向前或向後調整。並通過Chrony服務與NTP時間伺服器同步,實現故障恢複,因此使用該外掛程式注入需安裝Chronyc服務。

使用指南

演練準備

請確保您的ECS執行個體已安裝雲助手Agent,並且雲助手狀態正常。具體操作,請參見查看雲助手狀態及異常狀態處理

故障注入

  1. 登入ECS執行個體。

    具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 使用具有sudo存取權限的使用者,運行雲助手外掛程式ACS-ECS-TimeJump

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params inject,[time=paramA],[duration=paramB]

    []內為可選故障注入參數,參數說明:

    • time(可選):時間位移量,單位為秒,為正整數時表示將時間向後調整,為負整數時向前調整,預設為1。

    • duration(可選):期間,單位為秒,預設300。

    顯示如下所示時,說明雲助手外掛程式ACS-ECS-TimeJump已啟動。

    image

  3. 執行date命令,檢查系統目前時間是否符合預期。

    image

故障恢複

  • 方法一:等待逾時自動回復。

  • 方法二:在ECS執行個體中執行故障恢複命令。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params recover
    重要

    恢複命令實際為觸發一次時間同步,Chrony服務時間同步所需時間取決於多個因素,因此演練結束後請務必檢查時間是否恢複。

演練樣本

  1. 為更好地觀察時間跳變的過程,在終端中運行以下指令碼,該指令碼會每秒列印當前系統時間。

    while true; do
        date +"%Y-%m-%d %H:%M:%S"
        sleep 1
    done
  2. 故障注入。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params inject,time=1800

    會將當前系統時間向後調整1800s,返回如下所示,其中會列印調整後的系統時間。

    image

  3. 查看故障注入效果。

    可以看到在15:35:01,系統時間發生跳變。

    image

  4. 執行恢複命令。

    此時,系統會自動與NTP伺服器進行時間同步。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params recover

    系統時間恢複正常。

    image

設定系統時間

配置NTP時間同步服務,並檢查時間同步服務是否已經啟動。具體操作,請參見行政時間同步服務