DNS ラウンドロビン問題を解決する「MyDNS」
そこで、モバゲータウンのシステムではDNSサーバーに「MyDNS」というフリーソフトウェアを採用している。MyDNSはIPアドレスとホスト名の関連付けをゾーンファイルではなくMySQL上のデータベースで管理し、ロードバランシング機能も備えるDNSサーバーである。また、BIND namedからMyDNSへの移行も至って簡単である。
導入手順は次の通りである。
1.MyDNSのインストール
MyDNSのインストールは、以下のコマンドを入力することにより行なう。
#wget http://mydns.bboy.net/download/mydns-1.1.0.tar.gz #tar xvfz mydns-1.1.0.tar.gz #cd mydns-1.1.0 #./configure #make #make install
2.データベーステーブルの作成
MySQLにMyDNSで使用するデータベーステーブルを作成するには、以下のコマンドを入力して行なう。
$mysqladmin -u <username> -p create mydns $ mysql -u <user> -p mydns mysql>GRANT SELECT ON mydns.* TO <user>@localhost IDENTIFIED BY '<password>'; $/usr/local/sbin/mydns --create-tables | mysql -u <user> -p mydns
3.SOA/RRレコードのinsert
SOA/RRレコードを同名のテーブルにinsertするには、LIST2に示すコマンドを入力する。SOAレコードの値はゾーンファイルで記述するものと同じでかまわない(RRレコードのaux値については後述する)。
mysql>insert into soa (id,origin,ns,mbox,serial,refresh,retry,expire, minimum,ttl)values (1,'mydns.dena.ne.jp.','ns','postmaster.mydns. dena.ne.jp',20070325,10800,3600,3600000,300,300); mysql>insert into rr (zone,name,type,data,aux,ttl) values (1,'mydb00' ,'A','192.168.20.1',100,300); mysql>insert into rr (zone,name,type,data,aux,ttl) values (1,'mydb00' ,'A','192.168.20.2',200,300);
4.mydns.confファイルの設定
confファイルへの設定は、以下のコマンドを入力する。
#make conf #vi /etc/mydns.conf db-user = mydns # SQL server username db-password = mydns # SQL server password database = mydns # MyDNS database name
5.起動と/etc/resolv.conf編集
最後に、デーモンを以下のコマンドで起動する。
# mydns -background
その後DNSクライアントとなるマシンの/etc/resolv.confのnameserver行でMyDNS実行サーバーのIPアドレスを指定すれば完了である。