行至水穷处

坐看云起时

Etcd Cluster配置

环境:

host1(docker1): 172.16.199.17/24

host2(docker2):172.16.199.27/24

host3(docker2):172.16.199.37/24

目的:

配置etcd集群服务,为后续flannel网络及kubernetes(k8s)集群提供基础服务

配置步骤:

主机1安装配置:

下载etcd服务(当前版本v3.2.1)

下载完毕后,解压,将etcd及etcdctl文件拷贝到PATH可以搜索到的目录,例如/usr/bin

进入systmed的服务目录,创建etcd service使得以后可以通过systemd托管服务启动

创建名为 etcd.service文件,内容如下:

创建 /var/lib/etcd目录

创建/etc/etcd/etcd.conf 目录及文件,文件内容如下:

主机2安装配置:

方法同主机1,在etcd.conf配置文件中将ETCD_NAME,DIR以及相关IP修改为etcd02和172.16.199.27,TOKEN保持不变

启动etcd服务:

在两台主机上分别执行

systemctl daemon-reload

systemctl start etcd.service

检查/var/log/messages,以及systemctl命令本身无错误输出

systemctl enable etcd.service

检验集群服务:

测试etcd:

集群冗余测试:

停止host1 etcd服务,host2无法选举成为leader,这是因为etcd集群实际上至少需要三个节点:

恢复host1 etcd服务:

增加第三节点:

修改已有两个节点的etcd.conf中集群节点配置项

安装第三节点,配置文件如下:

注意由于集群在两个节点模式下已经测试启动过,系统已经生成的cluster id是关于两个节点的,直接修改上述配置并启动第三节点,第三节点会无法加入集群,并报以下问题:

此时需要删除host1,host2上/var/lib/etcd/**/下的member文件夹,然后重启所有etcd服务,最终结果如下:

上述新增第三节点的正确做法,应该在启动第三节点之前,在现有节点上add member

etcdctl member add new-member-name http://new-member-ip:2380

三节点冗余测试:

关闭host1上etcd服务,并在其它host上查看发现host2变成了leader:

查看停止host1 etcd服务之前创建的key,可以获得:

创建新key(在非leader上执行):

重新启动host1 etcd, 可以看到后创建的key2可以在host1上被查到。

注意:各个主机应该关闭firewalld服务,否则会出现类似提示无法获取某个节点健康状态的提示:

附录:

Active Peers Majority Failure Tolerance
1 peers 1 peers None
3 peers 2 peers 1 peer
4 peers 3 peers 1 peer
5 peers 3 peers 2 peers
6 peers 4 peers 2 peers
7 peers 4 peers 3 peers
8 peers 5 peers 3 peers
9 peers 5 peers 4 peers

http://www.infoq.com/cn/articles/etcd-interpretation-application-scenario-implement-principle/

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注