背景:わずか7分の時刻ズレが引き起こす悪夢
銀行やフィンテック企業のVMware本番クラスタを運用するエンジニアにとって、最も頭を悩ませるトラブルは、必ずしもハードディスクの故障や光ケーブルの断線とは限りません。それは一見無害に思える「システムの時刻ズレ」から突如として発生します。
月曜日の朝、管理者が誰一人としてvCenterにログインできなくなりました。rootパスワードを一文字の狂いもなく入力しているにもかかわらず、vSphere Clientの画面には無情にも「Invalid credentials」と表示されます。ブラウザは一斉に「Signing certificate is not valid yet」というエラーを吐いてアクセスを遮断し、Veeamによる定期バックアップは突如停止、ホスト間のvMotionもことごとく失敗しました。
ログを調査した結果、原因が判明しました。vCenter Server Appliance(VCSA)仮想マシンが稼働するESXiホストの時刻が、Domain Controllerよりも正確に7分12秒進んでいたのです。VMwareのアーキテクチャにおいて、Kerberos認証やSTS(Security Token Service)のSAMLトークン検証で許容される時刻の差異は最大300秒(5分)です。この閾値を超えると、各サービス間でやり取りされるチケットは即座に無効化されます。
適切なNTP設定のない仮想化インフラでは、以下のような致命的な連鎖リスクが発生します。
- vCenter SSO、Active Directory、各種Identity Provider(IdP)との連携認証が完全に停止する。
- システムが「まだ有効期間前」または「有効期限切れ」と誤認識し、SSL/TLS証明書が無効化される。
- ESXiホストとvCenter間でログのタイムスタンプが一致せず、障害追跡やセキュリティ監査時のログ突き合わせが極めて困難になる。
- ノード間のハートビート間隔を誤検知し、vSphere HAやDRSが誤ったフェイルオーバーや再配置判断を下す。
導入前の事前準備
設定作業を始める前に、参照する時刻ソースとネットワーク経路を明確にしておく必要があります。
1. 時刻同期トポロジの設計(NTP Topology)
- ドメイン環境:すべてのESXiおよびvCenterの同期先を、PDCエミュレータ(PDCロールを保持するDomain Controller)に統一します。そのPDCが上位の外部時刻ソースと同期します。
- スタンドアロン環境:スプリットブレインを防ぐため、最低3つ以上の独立したNTPサーバーを指定します。社内コアスイッチ/L3ルーターを優先しつつ、
time.google.com、time.cloudflare.com、jp.pool.ntp.orgなどのパブリックプールを組み合わせます。
2. ファイアウォールの通信許可
NTPはUDPポート123を使用します。VMwareの管理ネットワークからNTPサーバー間のアクセス制御リスト(ACL)やファイアウォールを確認し、双方向のトラフィックが確実に疎通していることを確認してください。
管理端末からUDP 123の疎通を簡易テストするコマンド:
nc -zvu 192.168.10.1 123
詳細な設定手順
1. SSH経由によるVMware ESXiホストのNTP設定
ESXi Host ClientのWeb UIからも簡単に設定できますが、数十台規模のホストを管理するクラスタ環境では、CLIを用いた方が遥かに迅速かつ確実です。
ステップ 1:ESXiホストへのSSH接続
ssh [email protected]
ステップ 2:現在の時刻および設定内容の確認
# ESXiは常にUTC基準でシステム時刻を表示
esxcli system time get
# 設定済みのNTPサーバー一覧を確認
esxcli system ntp get
ステップ 3:NTPクライアント用ファイアウォールルールの有効化
esxcli network firewall ruleset set --ruleset-id=ntpClient --enabled=true
esxcli network firewall ruleset list | grep ntpClient
ステップ 4:NTPサーバーの登録およびサービスの起動
# サーバー一覧を追加(カンマ区切り)
esxcli system ntp set --servers="192.168.10.1,time.google.com,jp.pool.ntp.org"
# ホスト起動時の自動起動ポリシーを設定しサービスを起動
esxcli system ntp set --enabled=true
/etc/init.d/ntpd restart
2. vCenter Server Appliance(VCSA)のNTP設定
vCenter 7.xおよび8.xでは、vSphere Client上から時刻設定を行うことはできません。VAMI(仮想アプライアンス管理インターフェース)のWeb画面またはAppliance Shellから設定します。
方法 1:VAMI Web画面からの操作(推奨)
- ブラウザを開き、ポート5480にアクセスします:
https://<vcenter-ip>:5480 - アプライアンスの
rootアカウントでログインします。 - 左側メニューからTime(時刻)を選択します。
- Time synchronization(時刻同期)エリアのEdit(編集)をクリックします。
- モードをHostからNTPに変更し、NTPサーバーのIPまたはFQDNを入力します:
192.168.10.1, time.google.com - Save(保存)をクリックします。
運用の注意点:ESXiとVCSAの双方が個別に外部NTPを参照している場合、モードにHost(VMware Tools経由でESXiから同期)を絶対に選択しないでください。二重同期による補正ループが発生し、vCenterの時計が継続的にブレる原因となります。
方法 2:Appliance Shellからの設定
rootアカウントでVCSAにSSH接続します。Command>プロンプトが表示されたら、以下のコマンドを実行します:
# 現在の同期モードを確認
timesync.get
# 同期モードをNTPに変更しサーバーを指定
timesync.set --mode NTP
timesync.set --servers "192.168.10.1,time.google.com"
# 設定内容を再確認
timesync.get
設定後の確認とモニタリング
設定を投入しただけで完了ではありません。同期プロセスが正常にデータを受信できているか、必ず検証を行ってください。
1. ESXiホストでのオフセット測定
ESXi上でピア状態を確認するコマンドを実行します:
[root@esx-node01:~] ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.10.1 10.0.0.1 2 u 18 64 377 0.412 -0.035 0.021
+time.google.com 216.239.35.4 1 u 42 64 377 22.180 0.104 0.318
+jp.pool.ntp.org 133.243.3.8 2 u 11 64 377 14.650 -0.180 0.245
確認すべき重要パラメータの意味:
*記号:現在システムが基準ソースとして同期しているメインNTPサーバー。+記号:メインソースが途絶過した際に自動昇格する信頼可能な予備サーバー。reach = 377列:過去8回のポーリングすべてに応答があったことを示す8進数表示。値が0の場合はUDP 123が遮断されています。offset列:ミリ秒(ms)単位の実測ズレ。本番稼働においてこの数値が10ms未満であれば極めて健全です。
2. vCenterでのステータス確認
VCSAのBashシェルに入り、システムデーモンの状態を確認します:
timedatectl status
System clock synchronized: yesおよびNTP service: activeの両方が表示されていることを確認してください。
3. プロアクティブなアラート監視の実装
トラブルが発生してから対応するのではなく、事前検知体制を整えましょう:
- vCenterで
Host time out of syncイベントを監視するアラーム定義(Alarm Definition)を作成します。ホストの時刻ズレが5秒を超えた段階で、Telegramやメール経由で即座に通知を飛ばすよう閾値を設定します。 - NTPが正常稼働しているにもかかわらず特定のホストで頻繁に時刻がドリフトする場合は、物理サーバーのマザーボード上のCMOSバッテリー劣化、またはBIOS/ファームウェアの不具合が疑われるため最新版へのアップデートを検討してください。

