web-dev-qa-db-ja.com

SRVではなくリゾルバーとしてサービス検出を使用するDNSレイヤー

私の問題を解決するための解決策があるかどうかを知る必要があります。私はBINDDNSサーバーを持っており、サービス検出者として領事を務めています。これは私が簡単な図として欲しいものです:

enter image description here

このサンプルセットアップを構成して、BINDにAレコードを正常なロードバランサーサーバーのIPアドレスに解決させるにはどうすればよいですか?

クライアントがDNSサーバーにdomain.exampleのAレコードを照会する場合、Healthy192.168.1.100)サーバーのIPアドレスを取得する必要があります

DNSの領事のサンプル構成 は、AレコードではなくSRVレコードを構成する方法を示しています。正常なサーバーのAレコードで動作させるにはどうすればよいですか。

領事からバインドアスクレコードを伝える必要がありますが、どうすればよいですか?私のサンプルゾーンファイル:

$TTL    300 ;
$Origin example.com.
@  1D  IN  SOA ns1.example.com. hostmaster.example.com. (
                2002022401 ; serial
                3H ; refresh
                15 ; retry
                1w ; expire
                3h ; nxdomain ttl
               )
www    IN  A      192.168.0.2  ; how can i tell bind using consul as IP resolver on this record

解決のためにポートを使用している領事と、代わりに領事を使用するようにバインドに指示するにはどうすればよいですか。

2
sweb

ええと...悲しいことに、あなたは本番環境でこれを行うのにちょっと苦労するでしょう。

問題の50%は、正常なサーバーを指すように「正常な」レコードを更新することです。 bindを使用して動的更新を行う方法はいくつかありますが、残念ながら、サーバーが正常であるかどうかを確認するために何らかのチェックを行うようにbind自体を説得する方法はありません。正常/異常ステータスに達したときに動的更新をトリガーする方法を理解する必要があります。

問題の50%はキャッシュでもあります。現実には、DNSはキャッシュされるように設計されています。 DNSレコードには、基本的にレコードをキャッシュするための定義済みの時間である、定義済みの「TTL」フィールドがあります。 「正常な」レコードを更新すると、クライアントはTTLに到達し、レコードが再クエリされるまで待機する必要があります。一部のアプリケーションには、再クエリを試みる組み込みメソッドがあります。 -接続が切断された場合、または接続を確立できなかった場合にレコードを照会しますが、これが行われる保証はありません。

ファイアウォールルールを使用して異常なサーバー上の接続を拒否し、DNSサーバーに依存して両方のサーバーをアドバタイズし、アプリケーションが一方を試行してからもう一方を試行できるようにする(ラウンドロビン)方がよいでしょう。

4
TheCompWiz

誰もがBINDサーバーに集中しすぎていると思います。 Consulのドキュメントによると、BINDは DNSクエリを転送する Consulが使用するポート53からポート8600にのみ必要です。領事は、この設定のDNSサーバーです。

領事は チェック を使用して、2つ(またはそれ以上)のサーバーのどちらが「正常な」サーバーであるかを判別します。

次に、ドキュメントに示されているように、 AレコードとSRVレコードの両方 で応答できます。

したがって、領事館のドキュメント全体を読んで機能する構成を考え出すように依頼する代わりに、構成ファイルを提供して、期待どおりに機能していないものを教えてください。そうすれば、当面の問題をより簡単に解決できるようになります。

領事からバインドアスクレコードを伝える必要がありますが、どうすればよいですか?

その正確な質問への答えは ドキュメント にあります!ドキュメントをお読みください!

4
Tommiie