web-dev-qa-db-ja.com

バインド:冗長マスターネームサーバー

だから私はグーグルで検索しましたが、これに関連するものは何も見つかりません。明らかにそれは起こらなければなりません。冗長なマスターサーバーを持たない組織は想像できません。私がグーグルで見つけた一般的なアプローチは、スレーブサーバーを冗長にすることですが、それは、マスターに障害が発生した場合、スレーブが正しく機能するのはそれほど長くないという事実に対処していません。

ラボネットワークに一連のDNSサーバーがあります。 1つのマスター、2つのスレーブ、2つの再帰専用サーバー。

マスターはスレーブへのゾーンファイル転送を行い、非表示になります。インターネットで見つけたベストプラクティスドキュメントに従って設計されたクエリを受け入れたり、再帰を許可したりすることはありません。

スレーブは、フォワーダーがISP DNSに設定されている再帰専用サーバー、およびローカルスレーブ(VMの内部ネットワーク解決など)からのクエリを許可します。

高可用性を実現するために、別のマスターサーバーをセットアップすることを計画しています。

BINDでこれを行うにはどうすればよいですか?スレーブの構成でmasters { server1; server2; };を設定できることは知っていますが、2つのマスターを持つことにどのように対処しますか?

  1. 2つのマスター間でゾーンファイルに競合がある場合、スレーブに転送するときにどちらが優先されますか?
  2. フェイルオーバーを定義するにはどうすればよいですか? Master1に障害が発生した場合、スレーブはmastersフィールドにリストされている2番目のIPを自動的に試行します、正しいですか?したがって、自動フェイルオーバーを行うために何も設定する必要はありませんか?

編集:これが私の現在のセットアップのビジュアルです:(もう1つのマスターサーバーを追加したいです)

enter image description here

2
Patrick

デュアルマスターの場合、それぞれが独立して動作します。ゾーンの同期を維持しますか。

優先するマスターはありません。親DNSサーバーは通常、ゾーンのネームサーバーが表示される順序をランダム化/ローテーションし、クライアントソフトウェアは通常、受信された順序でこれを照会します。 (これは、一部のコーナーケースには当てはまらない可能性があります-親が制御されているか、CDN /マルチキャストトラフィックと組み合わせてルーティングを操作できると思います)

これを行うには、各サーバーをマスターとして構成するだけで、「マスター」行はありません。スクリプトを使用して、同じ更新をマスターにプッシュします。

フェイルオーバーを設定する必要はありません。 DNSクライアントは、応答がない場合、ネームサーバーを順番に試行します。とはいえ、これは、最初のサーバーが応答しないDNS応答時間を非常に著しく遅くするため、クライアントに依存するのに理想的とは言えません。 SOAレコードのTTLを長くすると、これを部分的に軽減できます。

そのため、マスターが優先されることはなく、同じように扱われますが、SOAレコードと異なるシリアルの異なるttlsでこの動作に重みを付けることができる場合がありますが、これには反対することをお勧めします。問題が発生する可能性があります。試したことがないので、20年前の学習で得た理解と、その後のデュアルマスターサーバーの実行経験に基づいて理論的に話しています。

1
davidgo