データセンターは、すべてのサーバーが正確に同じ時間になるように多大な努力を払っていることを何度も読みました(現時点ではわかりませんが)。含むが、うるう秒の心配はありません。
サーバーが同じ時間を持つことが重要なのはなぜですか?そして、実際の公差は何ですか?
データセンターは、すべてのサーバーが正確に同じ時間になるように多大な努力を払っていることを何度も読みました(現時点ではわかりませんが)。含むが、うるう秒の心配はありません。
サーバーが同じ時間を持つことが重要なのはなぜですか?そして、実際の公差は何ですか?
回答:
一般に、タイムスタンプはさまざまな認証プロトコルで使用され、リプレイ攻撃の防止に役立ちます。攻撃者は、盗み出した認証トークンを再利用できます(ネットワークのスニッフィングなど)。
たとえば、Kerberos認証はまさにこれを行います。Windowsで使用されているKerberosのバージョンでは、デフォルトの許容値は5分です。
これは、Google Authenticator、RSA SecurIDなどの2要素認証に使用されるさまざまなワンタイムパスワードプロトコルでも使用されます。これらの場合、許容範囲は通常約30〜60秒です。
クライアントとサーバー間で時間を同期させなければ、認証を完了することはできません。(この制限は、リクエスターとKDCが認証中にクロック間のオフセットを決定することにより、MIT Kerberosの最新バージョンでは削除されますが、これらの変更はWindows Server 2012 R2の後に発生し、Windowsで表示されるまでにしばらく時間がかかりますただし、2FAの一部の実装では、常に同期クロックが必要になる可能性があります。
クロックを同期させると、異種システムでの作業が容易になります。たとえば、すべてのシステムの時刻が同じであれば、複数のサーバーからのログエントリの関連付けがはるかに簡単になります。これらの場合、通常は1秒の許容範囲で作業できますが、NTPはそれを提供しますが、理想的には、時間をできるだけ余裕を持って同期させたいと考えています。はるかに厳しい許容範囲を提供するPTPは、実装するのにはるかに高価になる可能性があります。
make
また、クライアント/サーバーNFS間のクロックスキューによって混乱します。
主に、異なるデバイス上のログからのインシデントを相互に関連付けることができるようにするためです。誰かがWebサーバーを介してデータベースにアクセスするというセキュリティインシデントがあるとします-ファイアウォール、ロードバランサー、Webサーバー、およびデータベースサーバーのタイムスタンプをすべて一致させて、各デバイスのログを検索できるようにしますインシデントに関連しています。理想的には、すべてを数ミリ秒以内に収めたいと考えています。また、実際の外部時刻と同期する必要があります。そのため、必要に応じて、ログをサードパーティのログと関連付けることもできます。
管理の観点から重要であるだけでなく、クロックを同期させることは、アプリケーションレベルの相関関係からも重要です。これは、ソリューションの設計方法、実行中のアプリケーションが動作するトランザクションのタイムスタンプを取得する方法に依存します。サーバー上で実行されているアプリケーションが、他のアプリケーションと比較してオフセットが大きすぎるため(将来約20秒かかったため)、トランザクション検証が失敗するのを見てきました。
また、VMWare ESXiサーバーなどで仮想化し、VMの時刻がハイパーバイザーの時刻と同期していない場合、vmotionなどのアクションがVMクロックをハイパーバイザーと再同期する可能性があり、これにより予測できない結果が生じる可能性があります時間差が十分に大きい場合。
実際の許容値が何であるかはわかりません。システムの種類に大きく依存するためだと思いますが、一般的に言って、データセンター内のサーバーのオフセットを1秒未満に保つことは達成可能だと思います。
うるう秒について説明したので、特に難しい処理が必要なことに注意してください。
それらは通常、23:59:60として1秒を挿入することによって追加されます。これは、分フィールドと秒フィールドのタイムスタンプを0〜59として検証する場合に問題となります。23:59:59を繰り返して2秒の長さにする代替案は、1秒あたりのレベルまでタイミングが敏感なものを混乱させるため、あまり良くありません。
Googleは実際にはしばらく前に良い解決策を思いつきましたが、まだ広く採用されていないようです。彼らの解決策は、「スミア」の飛躍を適用し、一定期間にわたって変更を分割することで、プロセス全体がNTPサーバーによって管理されていました。彼らは2011年にそれについてのブログを公開し、興味深い読書をしており、この質問に関連しているようです。
上記のすべての点に同意します。もっと考えてみたいCassendra
などの一部のデータベースはタイムスタンプに大きく依存しています。それが並行性を扱う方法です。
異なるタイムスタンプは完全にデータベースを台無しにします。