領事-ブートストラップとDNS

この章では、領事館で次のコンポーネントがどのように使用されるかについて説明します。

  • 自動ブートストラップ
  • 手動ブートストラップ
  • DNS転送の使用
  • DNSキャッシング

これらのそれぞれについて詳しく説明しましょう。

自動ブートストラップ

ブートストラップは、Consulのコア機能の1つです。領事館を初めてインストールすると、遭遇したノードを検出、識別、参加するように自動的に構成されます。クラスター形成中、自動ブートストラップはConsulの組み込み機能です。執政官に関する詳細情報を入手するには、以下のコマンドを使用するのが最善の方法です。

$ sudo consul info

出力は、次のスクリーンショットに示すようになります。

このコマンドは、執政官の実際の働きを示します real working scenarios。領事で機能しているいかだアルゴリズムが表示されます。自動ブートストラップコマンドは、次のコマンドを使用して表示できます-

$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3

Automatic bootstrapping cannot be done in -dev mode.

このオプションは、予想されるサーバーノードの数をConsulに通知し、サーバーが使用可能になると自動的にブートストラップします。

手動ブートストラップ

手動ブートストラップは、Consulの古くて便利な機能です。実際、Consulの以前のバージョンでは、Consulを初めてインストールして使用するときに、ブートストラップを手動で実行する必要がありました。その後、このコマンドライン操作を異なる時間に実行することは不可能であることがわかりました。そのため、自動ブートストラップが導入されました。次のコマンドを使用して、いつでも手動でブートストラップを使用できます。

In this case, we will assume that a 3-node consul cluster is to be built.

手動ブートストラップを行うには2つのオプションがあります

  • 2つのノードでコマンドを実行する:ノードBとノードCでは、次の操作を実行できます。

$ consul join <Node A Address>
  • 1ノードでコマンドを実行-

$ consul join <Node B Address> <Node C Address>

DNS転送の使用

DNSはから提供されます port 53。DNS転送は、を使用して実行できますBIND, dnsmasq そして iptables。デフォルトでは、領事エージェントはポート8600でリッスンしているDNSサーバーを実行します。領事エージェントのDNSサーバーにDNS要求を送信することにより、関心のあるサービスを実行しているノードのIPアドレスを取得できます。

Consul DNSインターフェースは、サービスのポート情報を SRV records。コードに手動でロジックを追加しないと、通常、クエリを実行しているサービスのIPアドレス情報(つまりレコード)のみに制限されます。

最良のオプションは、それぞれがローカルでConsulエージェントを実行している複数のBINDサーバーを持つことです。BINDサーバーが受信したクエリはすべて、ローカルのConsul AgentDNSサーバーに転送されます。

バインドの使用

バインド機能を使用してDNS転送を使用できます。次のコマンドを使用して実行できます。

$ sudo apt-get install bind9 bind9utils bind9-doc

出力は、次のスクリーンショットに示すようになります。

次のコマンドを使用して、/ etc / bind /named.confファイルを編集してみましょう。

$ sudo vim /etc/bind/named.conf

ファイル内で、コードの最後の行の下に次の行を追加してください。

options {
   directory "/var/cache/bind";
   recursion yes;
   allow-query { localhost; };
   
   forwarders {
      8.8.8.8;
      8.8.4.4;
   };
   dnssec-enable no;
   dnssec-validation no;
   auth-nxdomain no; # conform to RFC1035
   listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";

出力は、次のスクリーンショットに示すようになります。

次のBindコマンドを使用して、Consulを構成できます。

$ sudo vim /etc/bind/consul.conf

ファイルを作成するときに次の行を追加します-

zone "consul" IN {
   type forward;
   forward only;
   forwarders { 127.0.0.1 port 8600; };
};

これで、次のコマンドを使用して領事エージェントの実行を開始できます。(bind9サービスも再起動することを忘れないでください。)

$ sudo service bind9 restart
$ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]

システムは、ローカルの領事エージェントのDNSサーバーにクエリを送信するように構成する必要があります。これは、resolv.conf127.0.0.1を指すようにシステム上のファイル。ほとんどの場合、領事はポート53で実行するように構成する必要があります。

次の情報を/etc/resolv.confに追加できます。

nameserver 127.0.0.1

DNSキャッシング

Consulは、すべてのDNS結果を「0TTL」(存続時間)値で提供します。これにより、キャッシュが防止されます。ただし、TTL値により、DNS結果をConsulのダウンストリームにキャッシュできるように設定できます。TTL値を高くすると、Consulサーバーでのルックアップの数が減り、クライアントのルックアップが高速化されますが、結果はますます古くなります。

この目的のために、以下の方法を使用してDNSキャッシングを使用します-

$ sudo apt-get install dnsmasq

出力は、次のスクリーンショットに示すようになります。

これで、非常に簡単な構成を行うことができます-

$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

ここで行っているのは、ポート8600の127.0.0.1にあるDNSサーバーによって処理される領事サービスのDNS要求を指定することだけです。領事のデフォルトを変更しない限り、これは機能するはずです。

通常、次のコマンドを使用する必要があります。

$ dig @127.0.0.1 -p 8600 web.service.consul

Dnsmasq、次のコマンドを使用する必要があります。

$ dig web.service.consul

出力は、次のスクリーンショットに示すようになります。