レジストリDNSサーバーは、デプロイされたアプリケーションによってHadoopレジストリに投稿された情報への標準的なDNSインターフェースを提供します。DNSサービスは、以下の機能を果たします。
curl http://solr-0.solr-service.devuser.yarncluster:8983/solr/admin/collections?action=LIST
)。既存のHadoopサービスレジストリは、DNSサービスの情報ソースとして利用されます。
DNSサーバーは、以下のコア機能をサポートしています。
生成されたレコードのDNS名は、次の要素(ラベル)で構成されます。これらの要素はDNSの規則と互換性がある必要があります(RFC 1035の「推奨される名前構文」を参照)。
DNSサービスの主要な機能は、次の図に示されています。
次の図は、DNSレコードの作成と登録シーケンスをもう少し詳細に示しています(注:サービスレコードの更新は、異なるイベントタイプによって区別されるだけで、同様のシーケンスの手順に従います)。
同様に、レコードの削除も同様のシーケンスに従います。
(注:DNSゾーンは削除メソッドの引数としてレコードを必要とするため、削除する特定のレコードを特定するための同様の解析ロジックが必要です)。
デフォルトでは、DNSサーバーは非特権ポート`5335`で実行されます。次のコマンドでサーバーを起動します。
hadoop --daemon start registrydns
DNSサーバーが標準的な特権ポート`53`を使用するように構成されている場合、`hadoop-env.sh`ファイルで環境変数`HADOOP_REGISTRYDNS_SECURE_USER`と`HADOOP_REGISTRYDNS_SECURE_EXTRA_OPTS`のコメントを外す必要があります。その後、DNSサーバーをrootとして起動し、ポートがバインドされた後にjsvcを使用してデーモンの権限を下げる必要があります。
レジストリDNSサーバーは、`core-site.xml`ファイルから構成プロパティを読み取ります。DNS関連の構成プロパティを以下に示します。
名前 | 説明 |
---|---|
hadoop.registry.zk.quorum | HadoopレジストリのZooKeeperクォーラムを定義する、カンマ区切りのホスト名:ポートのペアのリスト。 |
hadoop.registry.dns.enabled | クラスタでDNS機能が有効になります。デフォルトはfalseです。 |
hadoop.registry.dns.domain-name | Hadoopクラスタ関連レコードのドメイン名。 |
hadoop.registry.dns.bind-address | DNSリスナーがバインドするネットワークインターフェースに関連付けられたアドレス。 |
hadoop.registry.dns.bind-port | DNSリスナーのポート番号。デフォルトポートは5335です。 |
hadoop.registry.dns.dnssec.enabled | DNSSECサポートが有効かどうかを示します。デフォルトはfalseです。 |
hadoop.registry.dns.public-key | サーバーの公開鍵のbase64表現。DNSSECクライアント要求のために提供されるDNSKEYレコードの作成に使用されます。 |
hadoop.registry.dns.private-key-file | 標準的なDNSSEC秘密鍵ファイルへのパス。DNS起動アイデンティティのみが読み取り可能である必要があります。dnssec-keygen のドキュメントを参照してください。 |
hadoop.registry.dns-ttl | DNSレコードに関連付けるデフォルトのTTL値。デフォルト値は1に設定されています(0の値は動作が未定義です)。典型的な値は、YARNが失敗したコンテナを再起動するのにかかる時間とほぼ同じである必要があります。 |
hadoop.registry.dns.zone-subnet | クラスタコンテナに関連付けられたIP範囲の指標。この設定は、リバースゾーン名の生成に使用されます。 |
hadoop.registry.dns.zone-mask | ゾーンIP範囲に関連付けられたネットワークマスク。指定されている場合、可能なIP範囲を特定し、適切なリバースゾーン名を作成するために使用されます。 |
hadoop.registry.dns.zones-dir | ゾーン初期化中に読み取るゾーン設定ファイルを含むディレクトリ。このディレクトリには、zone-name.zoneという名前のゾーンマスターファイルを含めることができます。こちらでゾーンマスターファイルのドキュメントを参照してください。 |
<property> <description>The domain name for Hadoop cluster associated records.</description> <name>hadoop.registry.dns.domain-name</name> <value>ycluster</value> </property> <property> <description>The port number for the DNS listener. The default port is 5335. If the standard privileged port 53 is used, make sure start the DNS with jsvc support.</description> <name>hadoop.registry.dns.bind-port</name> <value>5335</value> </property> <property> <description>The DNS functionality is enabled for the cluster. Default is false.</description> <name>hadoop.registry.dns.enabled</name> <value>true</value> </property> <property> <description>Address associated with the network interface to which the DNS listener should bind.</description> <name>hadoop.registry.dns.bind-address</name> <value>localhost</value> </property> <property> <description>A comma separated list of hostname:port pairs defining the zookeeper quorum for the Hadoop registry</description> <name>hadoop.registry.zk.quorum</name> <value>localhost:2181</value> </property>
172.17.0.0/24
のリバースルックアップを提供するようにレジストリDNSを設定するには
<property> <description>The network mask associated with the zone IP range. If specified, it is utilized to ascertain the IP range possible and come up with an appropriate reverse zone name.</description> <name>hadoop.registry.dns.zone-mask</name> <value>255.255.255.0</value> </property> <property> <description>An indicator of the IP range associated with the cluster containers. The setting is utilized for the generation of the reverse zone name.</description> <name>hadoop.registry.dns.zone-subnet</name> <value>172.17.0.0</value> </property>
システムでレジストリDNSを使用するように/etc/resolv.conf
を編集できます。例として以下に示します。ここで、192.168.154.3
はDNSホストのIPアドレスです。これは、クラスタで使用されるドメインのルックアップでNXDOMAINを返す名前サーバーの前に表示される必要があります。
nameserver 192.168.154.3
あるいは、組織内に企業DNSがある場合は、ゾーン転送を設定して、レジストリDNSがクラスタで使用されるドメインのホスト名を解決するようにすることができます。