Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
16
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

SkyDNS2のセットアップ方法

概要

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起動例
# 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: 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。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
16
Help us understand the problem. What are the problem?