序章

このチュートリアルでは、マスターDNSサーバーからスレーブへの自動レプリケーションを使用してマスター/スレーブ構成でPowerDNSをセットアップする方法を学習します。 このチュートリアルは、Ubuntu用のPowerDNSシリーズの2番目のチュートリアルです。

マスター/スレーブ構成は、追加の信頼性を提供します。 PowerDNSサーバーの1つがダウンした場合、要求を処理するためのセカンダリサーバーがあります。

これらのサーバーを別々のデータセンターにプロビジョニングすることをお勧めします。 それらが2つの物理的な場所にある場合は、データセンターが停止してもDNSサービスに影響はありません。

このチュートリアルの終わりまでに、マスター/スレーブレプリケーションを使用する2つの機能するPowerDNSサーバーができあがります。

前提条件

次の要件を満たしてください。

前のチュートリアルでは、3つのサブドメインが1つのPowerDNSサーバーを指していました。 これらのサブドメインの1つを使用して、スレーブサーバーをポイントします。 この例では、マスターサーバーIPは次のようになります。 111.111.111.111、およびスレーブサーバーIP222.222.222.222.

それに応じて、プロバイダーで接着剤レコードを更新する必要があります。 以下の情報をガイドとして使用してください。 DNSレコードの構成の詳細については、前のPowerDNSチュートリアルを参照してください。

  • hostmaster.example-dns.com 111.111.111.111 (マスターサーバー)
  • ns1.example-dns.com 111.111.111.111 (マスターサーバー)
  • ns2.example-dns.com 222.222.222.222 (スレーブサーバー)

ネームサーバー自体に使用されるドメインについては、レジストラでグルーレコードとSOAレコードの両方を設定する必要があることに注意してください。 一方、カスタムネームサーバーでゾーンファイルをホストする他のドメインのSOAレコードのみが必要です。

ステップ1—両方のサーバーにPowerDNSをインストールする

まず、2つの機能するPowerDNSサーバーが必要です。 1台のサーバーがマスターサーバーになり、2台目のサーバーがスレーブサーバーになります。

まだ行っていない場合は、前のチュートリアル Ubuntu14.04でMariaDBバックエンドを使用してPowerDNSをインストールおよび構成する方法に従ってください。

マスターサーバーの完全なチュートリアルに従う必要があります。

セカンダリサーバーにPoweradminは必要ないため、スレーブサーバーで手順1〜7を実行できます。

2つの機能するPowerDNSサーバーがあり、そのうちの少なくとも1つがPoweradminを実行している場合は、次の手順に進むことができます。

手順2—マスターサーバーを構成する( ns1.example-dns.com

これで、マスターPowerDNSサーバーを構成する準備が整いました。

これは、Poweradminがインストールされているサーバーである必要があり、プライマリDNSサーバーと見なされます。 Poweradminが両方のサーバーにインストールされている場合は、どちらか一方を使用できます。 この例に従っている場合、これはns1.example-dns.comである必要があります。

元の構成ファイルをバックアップします。

  1. cd /etc/powerdns
  2. sudo mv pdns.conf pdns.conf.orig

新しい構成ファイルを作成します。

  1. sudo nano pdns.conf

以下の詳細は、単一のスレーブサーバーを使用する標準のマスターサーバー構成に関するものです。 スレーブサーバーのIPアドレスを入力して、このマスターサーバーと通信できるようにします。 以下の独自のスレーブサーバーのIPアドレスに置き換えることを忘れないでください。

注:/ 32は単一のIPサブネットであり、この構成に必要です。

/etc/powerdns/pdns.conf
allow-recursion=0.0.0.0/0
allow-axfr-ips=222.222.222.222/32
config-dir=/etc/powerdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=yes
slave=no
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

変更を有効にするには、PowerDNSサービスを再起動します。

  1. sudo service pdns restart

手順3—スレーブサーバーを構成する( ns2.example-dns.com

これで、スレーブサーバーを構成する準備が整いました。 このサーバーは、構成したマスターサーバーからDNSゾーンを複製します。 例に従っている場合、これはns2.example-dns.comである必要があります。

元の構成ファイルをバックアップします。

  1. cd /etc/powerdns
  2. sudo mv pdns.conf pdns.conf.orig

新しい構成ファイルを作成します。

  1. sudo nano pdns.conf

以下の詳細は、60秒の更新間隔を持つ標準のスレーブサーバー構成に関するものです。 構成を正確にコピーできます。

/etc/powerdns/pdns.conf
allow-recursion=0.0.0.0/0
config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=no
slave=yes
slave-cycle-interval=60
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

60秒ごとに、スレーブサーバーはマスターサーバーにゾーンの更新を問い合わせます。 通常、ゾーンが更新されると、マスターサーバーはそのゾーンに割り当てられたスレーブサーバーに通知を送信します。 ただし、ゾーンの更新中に接続の問題が発生した場合、これにより、更新が再びオンラインになったときに、最終的にスレーブサーバーに伝播されます。

次に、PowerDNSにマスターサーバーとの通信方法を指示する必要があります。

前のチュートリアルで作成したPowerDNSのユーザー名とパスワードを使用してMariaDBにログインします。 使用した例 powerdns_user.

  1. mysql -u powerdns_user -p

プロンプトでパスワードを入力します。

Output
Enter password:

前のチュートリアルで構成したPowerDNSデータベースに変更します。 私たちの推薦は powerdns.

  1. USE powerdns;

次に、新しい行を作成します supermasters テーブル。 この行は、マスターサーバーのIP アドレスと、現在構成しているスレーブサーバーの完全修飾ドメイン名(FQDN)を指定します。

  1. insert into supermasters values ('111.111.111.111', 'ns2.example-dns.com', 'admin');

これで、MariaDBシェルを終了できます。

  1. exit;

変更を有効にするには、PowerDNSサービスを再起動します。

  1. sudo service pdns restart

ステップ4—マスター/スレーブ接続をテストする

この手順では、 ns1.example-dns.com がマスターサーバーを指し、ns2.example-dns.comがスレーブサーバーを指している必要があります。

グルーレコード、SOAレコード、およびAレコードがまだ伝播されていない場合は、オーバーライドを追加できます。 /etc/hosts ファイル。 これは、両方のサーバーで実行する必要があります。

を開きます /etc/hosts nanoを使用します。

  1. sudo nano /etc/hosts

エントリをに追加します /etc/hosts ファイル。

/ etc / hosts
111.111.111.111 ns1.example-dns.com
222.222.222.222 ns2.example-dns.com

2台のサーバーが通信できることを確認しましょう。

マスターサーバーから、両方のホスト名にpingを実行します。

  1. ping ns1.example-dns.com

結果は次のようになります。

Output
64 bytes from ns1.example-dns.com (111.111.111.111): icmp_seq=1 ttl=64 time=0.061 ms

スレーブサーバーにpingを実行します。

  1. ping ns2.example-dns.com

期待される結果:

Output
64 bytes from ns2.example-dns.com (222.222.222.222): icmp_seq=1 ttl=64 time=48.8 ms

次に、同じコマンドを使用して、スレーブサーバーから両方のホスト名にpingを実行します。 両方のサーバーから両方のサーバーにpingを実行できるようになったら、続行します。

ステップ5—レプリケーションを使用してDNSゾーンを構成する

両方のサーバーが適切に通信している場合、マスター/スレーブレプリケーションを使用して最初のDNSゾーンを作成する準備ができています。

訪問してマスターサーバーのPoweradminにログインします http://111.111.111.111/poweradmin/ ブラウザで。

以前に設定した管理者の資格情報を使用してログインします。

マスターゾーンの追加リンクをクリックして、新しいゾーンファイルを作成します。 これは、元の名前または新しいドメインtest.comでテストできます。

トップレベルドメイン名を入力し、ゾーンの追加ボタンをクリックしてゾーンを作成します。

ネームサーバーのNSエントリを作成します。

レプリケーションをテストするために、少なくとも1つのAレコードを作成します。

注:スレーブサーバーがゾーンのネームサーバーとしてリストされていない場合、ゾーンは複製されません。

数秒後、新しいエントリがスレーブサーバーに伝播するはずです。

ns1.example-dns.comに保存されているDNSレコードを使用してテストします dig.

  1. dig test.com A @ns1.example-dns.com

以下のような結果で応答するはずです。

Output
root@ns1:/etc/powerdns# dig test.com A @ns1.example-dns.com ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns1.example-dns.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44833 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 2800 ;; QUESTION SECTION: ;test.com. IN A ;; ANSWER SECTION: test.com. 86400 IN A 104.131.174.138 ;; Query time: 2 msec ;; SERVER: 45.55.217.94#53(45.55.217.94) ;; WHEN: Tue Apr 28 18:06:54 EDT 2015 ;; MSG SIZE rcvd: 53

ns2.example-dns.comに保存されているDNSレコードを使用してテストします dig.

  1. dig test.com A @ns2.example-dns.com

以下のような結果で応答するはずです。

Output
root@ns1:/etc/powerdns# dig test.com A @ns2.example-dns.com ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns2.example-dns.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11530 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 2800 ;; QUESTION SECTION: ;test.com. IN A ;; ANSWER SECTION: test.com. 86400 IN A 104.131.174.138 ;; Query time: 3 msec ;; SERVER: 45.55.217.132#53(45.55.217.132) ;; WHEN: Tue Apr 28 18:08:06 EDT 2015 ;; MSG SIZE rcvd: 53

test.com の設定は、ネームサーバーをns1.example-dns.comおよびns2.example-dns.comに設定した後にのみアクティブになることに注意してください。レジストラで。

結論

これで、マスター/スレーブ構成でMariaDBバックエンドを使用する2つの機能するPowerDNSサーバーができました。

マスターサーバー上のマスターゾーンに変更が加えられると、独自のNSレコードでリストされているすべてのスレーブサーバーに通知されます。

スレーブサーバーは、最近更新されていないレコードをマスターサーバーに自動的に照会し、DNSレコードがPowerDNSノード間で同期されていることを確認します。