etcd is 何?
分散型のkey-value store。つまり一個のサーバーで値を入れたら他のサーバーでも値が更新されている。
CoreOSの基盤の一つ。クラスタ管理機能のfleetの基盤となっているので導入する。
なおfleetを使用するにはetcdクラスタを構成した後、個々のノードでfleetdを起動すればいいが、
この際他のノードはetcd経由で探索するため、クラスタの設定としてはetcdだけで完了となる。
AURからインストールする
yaourt -S etcd
これで/usr/bin/etcd
の他に環境変数を設定する/etc/conf.d/etcd
とsystemdのサービスであるetcd.service
が入る。
etcd
は引数として監視するポート等を設定できるが、環境変数によって設定することもできるので、テスト時は引数、
導入時は環境変数として設定するのが良いだろう。
/etc/conf.d/etcd
の設定
クラスタを作る場合、他のノードをどのようにして見つけるか、という問題がある。
etcdは何通りか方法を提供している:Clustering Guide
ここではstaticの方法を取る。他の方法は試していない。
今回設定したのは以下の通り
- ETCD_NAME=host1
- ETCD_DATA_DIR="/var/lib/etcd" (default)
- ETCD_LISTEN_PEER_URLS="http://host1:7001"
- ETCD_LISTEN_CLIENT_URLS="http://host1:4001"
- ETCD_INITIAL_ADVERTISE_PEER_URLS="http://host1:7001"
- ETCD_INITIAL_CLUSTER_TOKEN="etcd_cluster" (default)
- ETCD_ADVERTISE_CLIENT_URLS="http://host1:4001"
- ETCD_INITIAL_CLUSTER="host1=http://host1:7001,host2=http://host2:7001"
これはhost1の設定でhost2では最後のを除いて入れ替える。
systemctl start etcd
でetcdが起動する。host1/2の両方で起動しないと相方が見つからないというログを出し続けるので注意。
次はfleetの導入についても書く予定。