2015年12月3日木曜日

CoreOS etcd2でDNS Discoveryでクラスタ構成を組む

DNS Discoveryを利用したCoreOSのetcd2クラスタ環境を構築しました。
DNSサーバにSRVレコード追加するだけですので本番環境ではDNS Discovery方式が簡単かつメンテナンスしやすいのではないでしょうか。

参考URL
https://coreos.com/etcd/docs/2.0.12/clustering.html#dns-discovery

上記にて
listen-client-urls http://infra0.example.com:2379
とあるのですが
listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001
としないとクラスタ組めませんでした。

【準備】
 ディスカバリ用のDNSサーバを構築します。
  etcdクラスタのAレコード及びSRVレコードを作成します。
 めんどくさいのでWindowsサーバにDNSの役割追加して以下のレコード構成にしました。


[DNSサーバ]
 -[前方参照ゾーン]
  -[test.com]
      (親フォルダと同じ) CNAME [DNSサーバ].test.com
      (親フォルダと同じ) NS [DNSサーバ]
      (親フォルダと同じ) SOA  [DNSサーバ]
      [DNSサーバ] A  192.168.159.160
      etcd001 A 192.168.159.161
      etcd001 A 192.168.159.162
      etcd001 A 192.168.159.163
      -[_tcp]
        _etcd-server SRV [0][0][2380]etcd001.test.com
        _etcd-server SRV [0][0][2380]etcd002.test.com
        _etcd-server SRV [0][0][2380]etcd003.test.com


 SRVレコードはサービスに[_etcd-server] ポート番号に[2380]を指定してクラスタ参加ホストを登録します。

後は以下の要領でcloud-config.ymlを登録します。


#cloud-config

hostname: etcd00[1-3]
coreos:
  units:
    - name: vmtoolsd.service
      command: start
      content: |
        [Unit]
        Description=VMware Tools Agent
        Documentation=http://open-vm-tools.sourceforge.net/
        ConditionVirtualization=vmware

        [Service]
        ExecStartPre=/usr/bin/ln -sfT /usr/share/oem/vmware-tools /etc/vmware-tools
        ExecStart=/usr/share/oem/bin/vmtoolsd
        TimeoutStopSec=5
    - name: 10-static.network
      runtime: no
      content: |
        [Match]
        Name=eno16777984

        [Network]
        Address=192.168.159.16[1-3]/24
        Gateway=192.168.159.2
        DNS=192.168.159.160  
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: docker.service
      command: start
  oem:
    bug-report-url: "https://github.com/coreos/bugs/issues"
    id: vmwarea
    name: VMWare
    version-id: "9.10.0-r1"

  etcd2:
    name: etcd00[1-3]
    discovery-srv: test.com
    initial-advertise-peer-urls: http://etcd00[1-3].test.com:2380
    initial-cluster-token: etcd-cluster-1
    initial-cluster-state: new
    advertise-client-urls: http://etcd00[1-3].test.com:2379
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://etcd00[1-3].test.com:2380



クラスタ追加する場合はSRVレコードにホストを登録するだけですので非常に管理もしやすいですね。

0 件のコメント:

コメントを投稿