まだtsuruでアプリをデプロイが失敗中です。いわゆるService Discovery
ですが、Wildcard DNS
とHipacheだけでは足りなくて、ローカルにDNSサーバーを建てる必要があるみたいです。
tsuruでドメイン名を指定するとLAN内でもグローバルIPアドレスで他のコンテナを探してしまい見つかりません。
dnsmasqとhostsで対応しようと思ったのですが、Wildcardが使えないのでした。
DNS Forwarding
DNS Forwarding
用のBindの構築方法は、DigitalOceanのHow To Configure Bind as a Caching or Forwarding DNS Server on Ubuntu 14.04が詳しいので参考にします。
tsuruにも、Howto install a dns forwarderのドキュメントがあります。
Bindをインストールします。
$ sudo apt-get -y install bind9 bind9utils |
DNS Forwarders
の設定
named.conf.optionsの設定は、DigitalOceanを参考に書きました。
$ egrep -v '//|^$' /etc/bind/named.conf.options |
ゾーンファイルは別ファイルに書きます。
zone "masato.pw" { |
ゾーンファイルはtsuruのドキュメントを参考に書きました。
; |
Bindを再起動します。
$ sudo named-checkconf |
IDCFクラウドのresolv.conf
IDCFクラウドの場合、DHCP経由でDNSサーバーの情報が配布されます。
nameserver 10.1.0.1 |
DHCPでDNSサーバーの情報を受けつかない方法を調べたのですが、うまく機能しないので、
headに情報を追加して、配布されるDNSサーバーの前に来るようにしました。
nameserver 10.1.1.17 |
resolv.confを更新します。
$ sudo resolvconf -u |
うまく設定が入りました。
nameserver 10.1.1.17 |
Dockerホストのresolv.confを変更した場合、Dockerコンテナのresolv.confが変更できなかったので、
一度破棄してrunし直します。
Dockerホストでping確認
Wildcard DNS
がプライベートIPアドレスを返すようになったので、ローカルDNSで名前解決されるようになりました。
$ ping -c 2 blog.masato.pw |
tusuアプリ(Dockerコンテナ)でping確認
tsuruアプリにSSH接続します。
$ ssh ubuntu@172.17.0.19 -i /var/lib/tsuru/.ssh/id_rsa |
resolv.confもローカルのDNSサーバーが先に書かれています。
$ cat /etc/resolv.conf |
pingすると、ローカルのDNSで名前解決ができています。
$ sudo ping -c 2 tsuru-dashboard.masato.pw |
まとめ
ローカルDNSで名前解決ができるようになったので、トラブルシュートの手順で、tsuruを再インストールします。
ようやくtsuruアプリをデプロイできる環境になった気がします。