時刻ジャンプとは、システムクロックの突然の変化を指します。システム時刻の正確さと、システムコンポーネント全体での時刻の整合性は、本番システムにとって非常に重要です。適切な時刻管理を行わないと、ロギング、同期、バックアップなどのさまざまな時刻依存サービスで異常な動作が発生する可能性があります。時刻ジャンプ訓練を実施することで、システム時刻ジャンプが発生した場合に、システムが正しい時刻を迅速に同期および回復し、ビジネス運用を再開できるかどうかを確認できます。
実装
このソリューションでは、クラウドアシスタントプラグイン ACS-ECS-TimeJump を使用します。これは、システム時刻のオフセットを設定することで、時刻を前後に調整できます。エラー回復は、Chrony サービスが NTP タイムサーバーと同期することで実現されます。したがって、このプラグインをエラー挿入に使用する場合は、Chronyc サービスをインストールする必要があります。
手順
前提条件
クラウドアシスタントクライアント が、訓練を実行する ECS インスタンスにインストールされている。
ECS インスタンスで [クラウドアシスタント] のステータスが [正常] であること。詳細については、「クラウドアシスタントのステータスを表示し、異常を処理する」をご参照ください。
エラーの挿入
ECS インスタンスに接続します。
詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
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が起動しています。
dateコマンドを実行して、現在のシステム時刻が想定どおりかどうかを確認します。
エラーの回復
方法 1: タイムアウト後に自動回復を待ちます。
方法 2: 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インスタンスにデータを挿入して、エラーをシミュレートします。
sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params inject,time=1800このコマンドは、現在のシステム時刻を 1800 秒早送りします。調整されたシステム時刻を含む、次の情報が返されます。

エラー挿入の効果を確認します。
15:35:01 にシステム時刻がジャンプしていることがわかります。

回復コマンドを実行します。
システムは NTP サーバーと自動的に時刻を同期します。
sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params recover
sudo acs-plugin-manager --exec --plugin ACS-ECS-TimeJump --params recoverシステム時刻は正常に戻ります。

システム時刻の設定
NTP 時刻同期サービスを設定し、時刻同期サービスが開始されているかどうかを確認します。詳細については、「時刻同期サービスの管理」をご参照ください。