なぜやるの?
dockerをマルチホストで運用したい
どうやるの?
- etcdのインストール
- etcdのクラスタを組む <- ここまでqiitaに書く
- serviceとして登録する
- flannelのインストール
- flannelの設定をやる
- serviceとして登録する
- dockerの設定をやる
環境
- Centos7 hostname master01
- Centos7 hostname master02
- Centos7 hostname master03
etcdのインストール
環境はCentos7を使っている今回はクラスタを組みたいだけなので,
パッケージマネージャの恩恵にあやかる
$ yum seach etcd
etcd.x86_64 : A highly-available key value store for shared configuration
$ yum install etcd
$ etcd -v
etcdmain: etcd Version: 3.2.22
install完了
etcdのクラスタを組む
etcdのクラスタを組む方法は主に3つあるようだ->CoreOSのサイト
- Static
- etcd Discovery
- DNS Discovery
staticはetcdにお互いのホストの情報をいろいろ流し込まないといけないので大変だった.
etcd Discoveryはetcdのtoken url(後述)を発行すればある程度簡単にクラスタを組んでくれるのでお勧め
DNS DiscoveryはよくわからなかったDNSのSRVレコードを使うようだがSRVレコードのへの知識がなかったので試さなかった.
今度試してみたい.
今回はetcd Discovery方式を使ってetcdのクラスタを組むことにする.
$ curl https://discovery.etcd.io/new
https://discovery.etcd.io/<token>
のようにクラスタを組むためのurl tokenを発行してくれる
$ etcd --name=<etcdの名前> --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://<自分のip>:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://<自分のip>:2380 --discovery <token>
--<name=etcd>
の名前は好きな名前を付けていいはずだ
今回はmaster01,master02,master03を付けている
上のコマンドを
- master01
- master02
- master03
で実行する
これでetcdのクラスタを組むことができる
まとめ
etcd Discovery方式を使うと簡単にクラスタを組むことができる
やることはどのホストでも同じなのでansibleでの構築自動化はやりやすいと思う