13

Click here to load reader

Mobageの技術を体験(MyDNS編)

Embed Size (px)

DESCRIPTION

Mobageで利用されているMyDNSを少し使ってみました。 社内での勉強会で発表した資料です。

Citation preview

Page 1: Mobageの技術を体験(MyDNS編)

Mobageのインフラ構成を

体験してみる~MyDNS編~

Tech-Talk   Daisuke Ikeda

Page 2: Mobageの技術を体験(MyDNS編)

MyDNSとは

・レコードをDB(MySQL or PostgreSQL)管理するDNSサーバ・内部ドメインの管理用DNSサーバとして立てることが可能・最新はver.1.2.8.31(MyDNSとMyDNS-NGの違いに注意)・ゾーン転送についてはNOTIFY,AXFRにも対応・IPv6にも対応・ENUM対応(NAPTRレコード)・DNSSECには未対応?・移行用コマンド(mydnsimport)有り

※ MyDNS http://mydns.bboy.net/ ※ MyDNS-NG http://mydns.bboy.net/

Page 3: Mobageの技術を体験(MyDNS編)

Mobageでの使われ方

Mobageでは負荷分散のためのロードバランシングにMyDNSのDNSラウンドロビンを活用

大量機器の冗長構成を支えるためにこの方式を採用

※ Mobageを支える技術~ソーシャルゲームの舞台裏~  著:DeNA

Page 4: Mobageの技術を体験(MyDNS編)

BINDとMyDNS

・OSSのDNSサーバとしてはBINDが有名・何が違う? - BINDはこのようなファイル形式でレコード情報格納

- MyDNSはDBのテーブルでレコード情報格納

   ・SOAテーブル、RRテーブルに2テーブルで全て管理

・大規模環境や、動的に変化するような環境ではファイル管理の仕組みは厳しい

$TTL 86400@ IN SOA localhost. root.localhost. ( 2003121301 ; serial 3600 ; refresh 1hr 900 ; retry 15min 604800 ; expire 1w 86400 ; min 24hr) IN NS localhost. IN A 127.0.0.1 IN AAAA ::1

options { directory "/var/named"; pid-file "/var/run/named/named.pid"; listen-on-v6{ any; (1) }};

zone "localhost" { type master; file "local.zone";};

Page 5: Mobageの技術を体験(MyDNS編)

MyDNSインストール&設定

OS: CentOS5.5DB: MySQL5.0系 (mydns用DB、ユーザ作成済み)

# yum install mydns mydns-mysql

インストール 設定(/etc/mydns.conf)

db-host = localhost # SQL server hostnamedb-user = username # SQL server usernamedb-password = password # SQL server passworddatabase = mydns # MyDNS database name

listen = * # Listen on these addresses ('*' for all)no-listen = # Do not listen on these addresses

rr-where =などなど

DB初期化

# mydns --create-tables | mysql -u mydns -p mydns

管理画面用php配置

mydnsデーモン起動

# cp /usr/share/mydns/admin.php /var/www/html/

# mydns -b

UDP53ポートで待ち受け開始(必要に応じてiptables変更)

Page 6: Mobageの技術を体験(MyDNS編)

MyDNS DNSレコード設定

・管理画面からGUIで登録

Page 7: Mobageの技術を体験(MyDNS編)

MyDNS DNSレコード設定

・SQL文で登録

mysql> select * from rr;+----+------+-----------+--------------------------+-----+-----+-------+| id | zone | name | data | aux | ttl | type |+----+------+-----------+--------------------------+-----+-----+-------+| 1 | 1 | server1 | 10.1.1.1 | 0 | 300 | A | | 2 | 1 | server1 | 10.1.1.2 | 0 | 300 | A | | 3 | 1 | server1v6 | fe80::20c:29ff:f116:c11b | 50 | 300 | AAAA | | 5 | 1 | server2 | server1.example.com. | 50 | 300 | CNAME | | 6 | 1 | server1 | x86_64 CentOS | 0 | 300 | HINFO | +----+------+-----------+--------------------------+-----+-----+-------+5 rows in set (0.00 sec)

mysql> select * from soa;+----+--------------+----------------------+------------------+------------+---------+-------+--------+---------+-------+| id | origin | ns | mbox | serial | refresh | retry | expire | minimum | ttl |+----+--------------+----------------------+------------------+------------+---------+-------+--------+---------+-------+| 1 | example.com. | test-dns.example.com | mail.example.com | 2012072401 | 28800 | 7200 | 604800 | 86400 | 86400 | +----+--------------+----------------------+------------------+------------+---------+-------+--------+---------+-------+1 row in set (0.00 sec)

INSERT INTO rr (zone,name,data,aux,ttl,type) VALUES (1,'server3','10.1.1.3',50,300,'A');

Page 8: Mobageの技術を体験(MyDNS編)

MyDNSを使ってDNSラウンドロビン

同一ホスト名のAレコードを登録すればOK

aux値の大小で振り分け量を調節可能(数値の小さい方がより多く振り分けられる)aux値が0のレコードがあれば全リクエストが0の方に振り分けられる

mydns.confに以下の指定をしていると、aux>0のレコードにしか割り振られない

有効にするrrレコードの条件指定が可能

rr-where = aux > 0

Page 9: Mobageの技術を体験(MyDNS編)

DNSラウンドロビンとロードバランサ

・DNSラウンドロビンを使えば振り分けは可能

・但し、振り分け先が存在しない場合、失敗・Mobageでは、振り分け先が疎通できるか確認し、RRを書き換える仕組みを独自構築・ロードバランサを使った場合

Page 10: Mobageの技術を体験(MyDNS編)

その他DB型DNS

・PrimDNS(GREEさんが作られた国産DNS) - 検索性能UPのためエンジン周りの実装に工夫があるらしい

  → ゾーン毎にエンジンを変えて処理させること可能 - BINDの設定を移行できる機能あり - 機能面で不十分な点があるらしい?

NOTIFY,AXFR未対応?

・PowerDNS - DNSSECに対応させることも可能らしい

- 利用事例が多そう(情報が多い)(MyDNS.jpが採用)

- PowerDNS on Railsという管理ツールもあり

- BIND設定を移行するツールあり(zone2sql)

Page 11: Mobageの技術を体験(MyDNS編)

AmazonRoute53 - AWS上のDNSサービス

- ユーザはAPI経由でレコード登録するのみでOK

- 従量課金制

・ 1ゾーン毎の課金$0.5/月(25ゾーンまで。それ以上の場合は$0.1/月)

・ 100万リクエスト毎の課金$0.5/月(10億リクエストまで。それ以上の場合は$0.25/月)

- 重み付きルーティングにも対応

・ 0~255の重み付が可能(数字が大きい方により多くのルーティング)

・ 0に設定することでそのノードへのルーティングをストップすることが可能

・ 全て0に設定すれば全レコード均等に配分

- AWS Management Consoleから簡単に設定可能

Page 12: Mobageの技術を体験(MyDNS編)

AmazonRoute53

Page 13: Mobageの技術を体験(MyDNS編)

まとめ

・レコードの管理は楽・各サーバの稼働状況を確実に監視する必要あり - 監視ツールと連携させれば自動化も可能かも・MyDNSの情報少ない・・・ - MyDNS.JPばかり検索される