本稿は「OpenStack (2枚目) Advent Calendar 2014」12/20 分です。
OpenStackもいろいろプロジェクトが増えてきているのですが、DNSのサービスについてまとめたいと思います。
DesignateはクラウドDNSサービスとしてDNSをRESTful APIにて管理できるサービスです。
ゆえに、Junoなどにneutron dhcp agentが駆動するdhcp serverとして入っているdnsmasqのdnsとは内容が異なり、DNSをホスティング用に機能を持っていると言えます。
DesignateはHP Helion Public Cloud とRackspace に該当する機能が商用化されており、HP Herilon OpenStack Distributionのインストール imageとしてもあるようです。
もともとは、Monikerというプロジェクト名でしたが、Designateにリネームされました。
当初は、PowerDNS(MySQL backend) (DNS master) + NDS4 (Slave) という構成だけでしたが、最近のupdateによって、ISC bind も使えるようになっています。また、3rd Partyドライバとして、外部クラウドDNSサービス(Dyn.com用; DynECTのManaged DNS API)を使えるようにしているようです。
現在まで、Icehouse(stable), Juno(stable)と順調に機能の充実と安定化がはかられており、readthedocsにあるlatestのドキュメントが見やすい感じですね。
DNSを安定稼働するには、コンテンツが有るDNSやcache DNSでもセキュリティ対策に気をつける必要があり(DNS spoofing、DNSのソフトウェアのセキュリティ対策)、以外にリソースを消費しがちなものです。サービスとしてのDNSは今のインターネットアクセスの基盤技術であり、clientやcache dnsからのすべてのリクエストをqpsレベルですべて捌き切る必要があり、dns server上の搭載ドメイン数が多くなればなるほどシステム構成に気を使う必要があります。
Designateは小規模から巨大規模までのDNSを運用可能な複数台のDNS Master – Slave構成が最初にデザインされ、外部のクラウドDNSとしてDyn.comに運用を任せてしまうという選択肢も導入されています。
bacnekd driver Dyn.com (github)
AWS Route53 backendとかGoogle Cloud PlatformのCloud DNSのドライバもなんとなく書けそうな気がしますが、おそらく、公式には入らない気がします。Dyn.comが3rd party driverとして最初に入ったのはDNSに特化しているからだと思いますね。
Designateはpkgになっているdistributionは、まだ少ないと思います。
いまのところ、自分はmasterを追っかけていますが、DBに格納する情報も種類も多いので、DBの構成が変わると結合やられます。
ということで、構築ではgit masterからsourceで持ってきて構築が一番良さそうです。
designate Getting start (docs OpenStack developer)
designate Getting start (readthedocs)
システム上の特徴として、MQはDesignateの内部だけで完結するようになっており、既存のOpenStackとは別のMQが使われます。既存のOpenStackとはAPI(keystone)をメインに接続するようになっていて、rpcの接続はありません。over cloud アプリケーションといった体裁になっています。
さて、使い方はドキュメント見ていただくとして、興味深いのはHP Cloudでは、records APIにおいて、逆引きレコード(PTR)を設定できないようにして公開しており、rackspaceはtenant_idをAPI URLに入れているみたいで若干仕様が違うように見受けられますね(2011から公開されている)。こちらは、rdns(revers dns)という別APIで逆引きレコードの編集機能があります。
References