負荷分散および復元メカニズムとしてのDNSラウンドロビンに関する不情報の提供に貢献している貢献者の数は驚くべきものです。通常は機能しますが、その仕組みを理解し、そのような偽情報によって引き起こされる間違いを避ける必要があります。
1)ラウンドロビンに使用されるDNSレコードのTTLは短くする必要がありますが、ゼロではありません。TTLをゼロにすると、回復力が提供される主な方法が崩れます。
2)DNS RRは拡散しますが、負荷を分散しません。大規模なクライアントベースでは、DNSサーバーに個別に照会する傾向があるため、異なる最初の選択肢のDNSエントリになります。これらのさまざまな最初の選択は、クライアントがさまざまなサーバーによって処理され、負荷が分散されることを意味します。ただし、それはすべて、どのデバイスがDNSクエリを実行しているか、および結果を保持する期間に依存します。一般的な例は、企業プロキシの背後にあるすべてのクライアント(それらのDNSクエリを実行する)がすべて単一のサーバーをターゲットにすることです。負荷は分散されますが、均等にバランスが取れていません。
3)DNS RRは、クライアントソフトウェアが適切に実装している限り(およびTTLとユーザーアテンションスパンの両方が短すぎない限り)復元力を提供します。これは、DNSラウンドロビンがサーバーIPアドレスの順序付きリストを提供し、クライアントソフトウェアが接続を受け入れるサーバーを見つけるまで、それらの各アドレスに順番に接続を試みる必要があるためです。
したがって、最初の選択サーバーがダウンした場合、クライアントのTCP / IP接続がタイムアウトし、TTLまたはアテンションスパンのいずれも期限切れでない場合、クライアントソフトウェアはリストの2番目のエントリに対して別の接続を試行します。 TTLが期限切れになるか、リストの最後に到達します(またはユーザーが嫌悪感をあきらめます)。
破損したサーバー(障害)の長いリストと大きなTCP / IP接続再試行制限(クライアント構成の機能障害)は、クライアントが実際に動作しているサーバーを見つけるまでに長時間かかることがあります。TTLが短すぎると、リストの最後まで処理されず、代わりに新しいDNSクエリを発行して、新しいリストが(できれば異なる順序で)提供されます。
時々、クライアントは不運になり、新しいリストは壊れたサーバーから始まります。システムにクライアントの復元力を提供する最良のチャンスを与えるには、TTLが通常のアテンションスパンより長く、クライアントがリストの一番下に到達するようにする必要があります。
クライアントは、動作中のサーバーを見つけると、それを覚えておく必要があり、次の接続を行う必要がある場合、検索を繰り返してはなりません(TTLが期限切れになっていない限り)。TTLを長くすると、クライアントが動作中のサーバーを検索する際にユーザーが遅延する頻度が減り、エクスペリエンスが向上します。
4)DNS TTLは独自に機能します。DNSレコードを手動で変更する場合(たとえば、長期的に破損したサーバーを削除する場合)、短いTTLを使用すると、その変更をすばやく伝達できます(一度実行すると)。問題について知るまでにかかる時間と、手動で変更する時間とのバランスを考慮します。また、通常のクライアントは、TTLが期限切れになったときに動作中のサーバーの新しい検索を行うだけです。
DNSラウンドロビンには2つの優れた機能があり、幅広いシナリオで非常に費用対効果が高くなります。1つ目は無料、2つ目はクライアントベースとほぼ同じ地理的分散です。
他のすべての「賢い」システムが行う新しい「障害の単位」は導入されません。相互リンクされた要素の負荷全体で一般的な同時障害が発生する可能性のある追加コンポーネントはありません。
「賢い」システムは素晴らしく、シームレスなバランス調整とフェイルオーバーのメカニズムを調整および提供する素晴らしいメカニズムを導入しますが、最終的に、シームレスなエクスペリエンスを提供するために使用する方法そのものがアキレス腱です-また、そうすることで、システム全体の障害をシームレスに体験できます。
はい、そうです、DNSラウンドロビンは、すべての静的コンテンツを1か所でホストする単一のサーバーを超えた最初のステップに間違いなく「十分」です。