aeleniumfor / rapis

0 stars 0 forks source link

etcdのstaticでのクラスタ構築する(static) #3

Closed aeleniumfor closed 5 years ago

aeleniumfor commented 5 years ago

WHY

etcdのstaticでのクラスタ構築方法(static)についてメモを残して置きたい

WHAT

参考にしたのは https://coreos.com/etcd/docs/latest/op-guide/clustering.html

aeleniumfor commented 5 years ago

etcdコマンドの引数に以下を渡して上げるようだ

etcd --name master1 --initial-advertise-peer-urls http://$IP:2380 \
  --listen-peer-urls http://$IP:2380 \
  --listen-client-urls http://$IP:2379,http://127.0.0.1:2379 \
  --advertise-client-urls http://$IP:2379 \
  --initial-cluster-token etcd-cluster \
  --initial-cluster master1=http://$IP1:2380,master2=http://IP2:2380,master3=http://IP3:2380 \
  --initial-cluster-state new

static方式ではこれで組める.

aeleniumfor commented 5 years ago

etcdのserviceを定義できない

aeleniumfor commented 5 years ago

service自体は定義できているのかを確認する

aeleniumfor commented 5 years ago

/var/lib/etcd/配下にetcd-cluster.serviceを定義していた. /etc/systemd/system/etcd-cluster.serviceに移す

aeleniumfor commented 5 years ago
$ systemctl daemon-reload
$ systemctl list-unit-files --type=service | grep etcd-cluster
etcd-cluster.service                          disabled

サービス定義できた disabledだけど...

aeleniumfor commented 5 years ago

disableの原因は lacks both ExecStart= and ExecStop= setting. Refusing. のようだ.

aeleniumfor commented 5 years ago

ExecStart= 追加した. 新たなエラー ignore pathでエラーが起きている

aeleniumfor commented 5 years ago

dockerのserviceを見てみる.

aeleniumfor commented 5 years ago
$ systemctl status docker
 docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-01-06 03:46:13 UTC; 46min ago
     Docs: https://docs.docker.com
 Main PID: 10334 (dockerd)
    Tasks: 8
   Memory: 32.1M
   CGroup: /system.slice/docker.service
           └─10334 /usr/bin/dockerd -H unix://

/usr/lib/systemd/system/docker.serviceにserviceが定義されているようだ

aeleniumfor commented 5 years ago
$ cat  /usr/lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H unix://

/usr/bin/dockerdとバイナリはフルパスでコマンドが渡っているようだ

etcdの方もバイナリをフルパスで渡してみる

ExecStart=/usr/bin/etcd 

これで

$ systemctl start etcd-cluster 
$ systemctl status -l etcd-cluster

を行う

aeleniumfor commented 5 years ago

statusの結果

$ systemctl status -l etcd-cluster
an 06 04:38:09 master01 systemd[1]: etcd-cluster.service: main process exited, code=exited, status=1/FAILURE
Jan 06 04:38:09 master01 systemd[1]: Failed to start etcd.
Jan 06 04:38:09 master01 systemd[1]: Unit etcd-cluster.service entered failed state.
Jan 06 04:38:09 master01 systemd[1]: etcd-cluster.service failed.
aeleniumfor commented 5 years ago

環境変数用の EnvironmentFile を作成してあげることで環境変数を渡すことができた.

aeleniumfor commented 5 years ago
$ systemctl status etcd-cluster
etcd-cluster.service - etcd
   Loaded: loaded (/etc/systemd/system/etcd-cluster.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-01-07 17:48:41 UTC; 23h ago
 Main PID: 6054 (etcd)
aeleniumfor commented 5 years ago

サービスでactiveになっているので完了

aeleniumfor commented 5 years ago

curl http://<クラスタを構築したip>/v2/members | jq . で確認する. pubulic設定なのでココには記述しない jqコマンドはjsonを整形してくれるコマンド