Consul-bootstrapping-dns
Consul-ブートストラップとDNS
この章では、Consulで次のコンポーネントがどのように使用されるかについて説明します。
- 自動ブートストラップ
- 手動ブートストラップ
- DNS転送を使用する
- DNSキャッシング
次に、これらのそれぞれについて詳しく説明します。
自動ブートストラップ
ブートストラップは、Consulのコア機能の1つです。 consulを初めてインストールすると、consulは、遭遇したノードを検出、識別、および参加するように自動的に構成されます。 クラスタの形成中、自動ブートストラップはConsulの組み込み機能です。 領事に関する詳細情報を得るための最良の方法は、以下のコマンドを使用することです-
出力は、次のスクリーンショットのようになります。
このコマンドは、*実際の作業シナリオ*でのconsulの実際の作業を表示します。 Consulで動作するRaft Algorithmが表示されます。 自動ブートストラップコマンドは、次のコマンドを使用して表示することができます-
- -devモードでは自動ブートストラップは実行できません。*
このオプションは、予想されるサーバーノードの数をConsulに通知し、サーバーが利用可能になると自動的にブートストラップします。
手動ブートストラップ
手動ブートストラップは、Consulの古くて便利な機能です。 実際、Consulの以前のバージョンでは、初めてconsulをインストールして使用するときにブートストラップを手動で行う必要があります。 後に、このコマンドライン操作を異なる時間に実行することは不可能であることがわかりました。 したがって、自動ブートストラップが導入されました。 次のコマンドを使用して、手動でブートストラップをいつでも使用できます。
この場合、3ノードのconsulクラスターが構築されると仮定します。
手動ブートストラップを行うには2つのオプションがあります
- 2つのノードでコマンドを実行する:ノードBとノードCでは、次のことができます-
- 1ノードでコマンドを実行する-
DNS転送を使用する
DNSは*ポート53 から提供されます。 DNS転送は、 *BIND、dnsmasq 、および iptables を使用して実行できます。 デフォルトでは、Consulエージェントはポート8600でリッスンするDNSサーバーを実行します。 ConsulエージェントのDNSサーバーにDNS要求を送信することにより、関心のあるサービスを実行しているノードのIPアドレスを取得できます。
Consul DNSインターフェイスは、* SRVレコード*を介してサービスのポート情報を利用できるようにします。 コードに手動でロジックを追加しなくても、通常はIPアドレス情報のみに制限されます(つまり、 クエリするサービスのレコード)。
最良のオプションは、それぞれがConsulエージェントをローカルで実行する複数のBINDサーバーを持つことです。 BINDサーバーが受信したクエリは、ローカルのConsul Agent DNSサーバーに転送されます。
バインドの使用
バインド機能を使用してDNS転送を使用できます。 次のコマンドを使用して実行できます。
出力は、次のスクリーンショットのようになります。
次のコマンドで/etc/bind/named.confファイルを編集してみましょう。
ファイルでは、コードの最後の行の下に次の行を追加してください。
出力は、次のスクリーンショットのようになります。
次のBindコマンドを使用して、Consulを構成できます。
ファイルを作成するときに次の行を追加します-
これで、次のコマンドを使用して、consulエージェントの実行を開始できます。 (bind9サービスも再起動することを忘れないでください。)
ローカルConsulエージェントのDNSサーバーにクエリを送信するようにシステムを構成する必要があります。 これは、システム上の resolv.conf ファイルを更新して127.0.0.1を指すようにすることで実行されます。 ほとんどの場合、ポート53で実行するようにConsulを構成する必要があります。
次の情報を/etc/resolv.confに追加できます。
DNSキャッシング
Consulは、すべてのDNS結果を「0 TTL」(Time to Live)値で提供します。 これにより、キャッシングが防止されます。 ただし、TTL値により、ConsulのダウンストリームでDNS結果をキャッシュできるように設定できます。 TTL値を高くすると、Consulサーバーでのルックアップの数が減り、クライアントのルックアップが高速になりますが、結果は古くなっています。
この目的のために、以下の方法を使用してDNSキャッシングを使用します-
出力は、次のスクリーンショットのようになります。
今、私たちは非常に簡単な構成を行うことができます-
ここで行っているのは、ポート8600で127.0.0.1のDNSサーバーが処理する領事サービスのDNS要求を指定することだけです。 consulのデフォルトを変更しない限り、これは機能するはずです。
通常は、次のコマンドを使用する必要があります。
出力は、次のスクリーンショットのようになります。