概要
SkyDNS2 の実行環境を構築し、実行するまでの手順のまとめ。前提条件としての Etcd の環境構築と、SkyDNS の構築手順を含む。ただし、SkyDNS の実行や Etcd の運用に関する技術は扱わない。
また、当文章における SkyDNS
とは、特に明示が無い限り2014年6月に再構成された SkyDNS2
を指す。SkyDNS2 は、サービス検出(Service Discovery)と告知(Announcement)をするシステムで、GitHub 上のプロジェクト https://github.com/skynetservices/skydns である。元々 SkyDNS として公開されていた SkyDNS1 とは構造が異なる。大きく違うのは、データ保存のバックエンド・システムは Etcd に全面依存している。
Consul と SkyDNS の違い
Consul と SkyDNS は、どちらもサービス検出(Service Discovery)を行う事ができる。前者がオーケストレーションツールであるのに対し、SkyDNS はサービス検出と DNS 回答に特化している。Consul は独自で KVS を持つが、SkyDNS はバックエンドに Etcd を採用している。いずれも Raft プロトコルによるデータ永続性を保証。
詳細:Consul vs. SkyDNS - Consul
http://www.consul.io/intro/vs/skydns.html
構築に必要な環境
- Go 言語の開発環境 version 1.2 以上
構築手順
SkyDNS を実行する為には、バックエンドである Etcd のセットアップが必須である。そのため、作業の流れは Etcd の構築の後、SkyDNS を構築する。
1. Etcd のセットアップ
バイナリを使う方法(v.0.4.5 / x86_64)
curl -o etcd-v0.4.5-linux-amd64.tar.gz \
-L https://github.com/coreos/etcd/releases/download/v0.4.5/etcd-v0.4.5-linux-amd64.tar.gz
tar xvfz etcd-v0.4.5-linux-amd64.tar.gz
sudo cp etcd-v0.4.5-linux-amd64/etcd /usr/bin/etcd
コードから構築する方法
git clone https://github.com/coreos/etcd
cd etcd
./build
sudo cp ./bin/etcd /usr/bin/etcd
2. SkyDNS のセットアップ
[zem@sakura1 go]$ go get -d -v github.com/coreos/go-etcd/etcd
github.com/coreos/go-etcd (download)
[zem@sakura1 go]$ go get -d -v github.com/skynetservices/skydns
github.com/skynetservices/skydns (download)
github.com/coreos/go-log (download)
bitbucket.org/kardianos/osext (download)
github.com/coreos/go-systemd (download)
github.com/miekg/dns (download)
github.com/miekg/go-metrics (download)
github.com/influxdb/influxdb (download)
github.com/rcrowley/go-metrics (download)
github.com/stathat/go (download)
[zem@sakura1 go]$ cd ~/go/src/github.com/skynetservices/skydns/
[zem@sakura1 skydns]$ go build
[zem@sakura1 skydns]$ sudo cp ./skydns /usr/bin/skydns
起動手順
Etcd が稼働した状態で、SkyDNS の起動を試みること。
# etcd -peer-addr 127.0.0.1:7001 -addr 127.0.0.1:4001 \
-data-dir /opt/etcd -name machine1
# export ETCD_MACHINES='http://127.0.0.1:4001'
# skydns
なお、デフォルトでは Port 53 を使用とするが、ポート重複を避けたい場合は skydns -addr=127.0.0.1:10053
のように実行する。
skydns の起動時オプション
-
addr
: SkyDNS がリッスンする IP:port の情報で、デフォルトは127.0.0.1:53
-
domain
: SkyDNS に権威があるドメインで、デフォルトはskydns.local.
-
dnssec
: DNSSEC を有効化 -
hostmaster
: hostmaster(管理者)が使うメールアドレス -
local
: skydns インスタンス向けの、オプションのユニーク値であり、デフォルトは none。この状態ではlocal.dns.skydns.local
を返す。 -
round_robbin
: A や AAAA レコードの応答をラウンドロビンによる並び替えを有効化します。デフォルトは true. -
nameservers
: ドメインの権威が無い問い合わせが届いた時、DNS リクエストを指定したネームサーバ(IP:ポート の組み合わせの配列)に転送します。 -
read_timeout
: ネットワーク読み込みのタイムアウトで、etcd に DNS 問い合わせを行う時のもの -
ttl
: ノードが etcd にセットされてから応答するまでのデフォルト TTL 秒で、デフォルトは 3600。 -
min_ttl
: NXDOMAIN 時の最小 TTL 秒を指定します。デフォルトは 30。 -
scache
: DNSSEC シグニチャ・キャッシュの上限値で、指定しない場合のデフォルとは 10,000 レコード。 -
rcache
: レスポンス・キャッシュの上下値で、指定しない場合のデフォルトは 0 。 -
rcache-ttl
: レスポンス・キャッシュの TTL で、指定しない場合のデフォルトは 0。