クロックスキュー / NTP の問題
症状
クラスタノード間の時刻のずれ。レプリケーション/選出の不整合、'certificate not yet valid'、ログ内の時刻の飛び。
1. 症状を見分ける
クロックスキューは気づきにくい: Mongo/Redis Sentinel の選出のフラッピング、TLS の 'not yet valid/expired' エラー、Kerberos エラー、ログ内でタイムスタンプが逆行する。分散システムでは「説明のつかない」異常の多くの根源である。
2. 差を測定する
各ノードで時刻ソースとオフセットを比較する: timedatectl、chronyc tracking (または ntpq -p)、ノード間での date -u。何 ms/s ずれているか。
3. NTP/chrony を修正する
chronyd/ntpd は動作しているか、時刻ソースに到達できるか、同期しているか。サービスを起動してソースを修正する。オフセットが大きい場合は慎重にステップ調整する (急激な時刻の飛びが一部の DB に影響することがある)。
4. 影響を受けたコンポーネントを検証する
時刻を修正した後に確認する: MongoDB レプリカセットの選出は安定しているか、Redis Sentinel/Cluster は正常か、TLS ハンドシェイクは成功するか、レプリケーションラグのメトリクスは回復したか。
5. 恒久対策
すべてのノードで NTP を必須とし、オフセットを監視する (アラート: >100ms)。仮想マシンではホストとゲストの時刻同期設定を明確にし、できれば単一の信頼できる時刻ソース階層を使う。