1. zembutsu

    誤字修正と表記調整

    zembutsu
Changes in body
Source | HTML | Preview

概要

SkyDNS2 の実行環境を構築し、実行するまでの手順のまとめ。前提条件としての Etcd の環境構築と、SkyDNS の構築手順を含む。ただし、SkyDNS の実行や Etcd の運用に関する技術は扱わない。

また、当文章における SkyDNS とは、特に明示が無い限り2014年6月に再構成された SkyDNS2を指す。SkyDNS2 は、サービス検出(Service Discovery)と告知(Announcement)するシステムで、GitHubDiscovery)と告知(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起動例
# etcd -peer-addr 127.0.0.1:7001 -addr 127.0.0.1:4001 \
    -data-dir /opt/etcd -name machine1
skydns起動例
# 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: DNSSED を有効化
  • hostmaster: hostmaster(管理者)が使うメールアドレス
  • local: skydns インスタンス向けの、オプションのユニーク値であり、デフォルトは none。この状態では local.dns.skydns.local を返す。
  • round_robbin: A や AAAA レコードの応答をラウンドロビンによる並び替えを有効化します。デフォルトは trueo.
  • 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。