目的
初始化启动 etcd 服务
检测 etcd 集群健康状态
检测 etcd 集群成员
重置 etcd 集群
环境说明
角色 | 主机名 | ipaddr | os | etcd 版本 |
etcd | qemu-test6.vclound.com | xx.xxx.205.229 | centos 7 | etcd-3.0.15-1.el7.x86_64 |
etcd | qemu-test3.vclound.com | xx.xxx.205.226 | ||
etcd | qemu-test8.vclound.com | xx.xxx.205.231 |
软件安装
yum install -y etcd
配置
每个 member 根据自己主机名, IP 地址, 配置相应
/etc/etcd/etcd.conf
[root@qemu-test6 ~]# grep -v "#" /etc/etcd/etcd.conf
ETCD_NAME=qemu-test6
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://xx.xxx.205.229:2380"
ETCD_LISTEN_CLIENT_URLS="http://xx.xxx.205.229:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://xx.xxx.205.229:2380"
ETCD_INITIAL_CLUSTER="qemu-test6=http://xx.xxx.205.229:2380,qemu-test3=http://xx.xxx.205.226:2380,qemu-test8=http://xx.xxx.205.231:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-skydns-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://xx.xxx.205.229:2379"
详细说明
主机名配置
ETCD_NAME
每个机器填写自己主机名, 取 hostname -s 值即可,
监听地址
ETCD_LISTEN_CLIENT_URLS="http://xx.xxx.205.229:2379,http://127.0.0.1:2379"
用于 etcdctl 命令连接, 其中 127.0.01 用于本地连接
ETCD_LISTEN_PEER_URLS="http://xx.xxx.205.229:2380"
用于监听其他 etcd member 连接
初始化
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://xx.xxx.205.229:2380"
本地用于监听并连接其他 member 的地址
ETCD_INITIAL_CLUSTER="qemu-test6=http://xx.xxx.205.229:2380,qemu-test3=http://xx.xxx.205.226:2380,qemu-test8=http://xx.xxx.205.231:2380"
启动集群使, 使用静态连接方法, 定义每个 member 主机名 endpoint
ETCD_INITIAL_CLUSTER_STATE="new"
用于表示初始化集群
ETCD_INITIAL_CLUSTER_TOKEN="etcd-skydns-cluster"
用于标记集群唯一性的 token
启动 etcd
注意, 第一台启动的 etcd 服务器将会不断等待其他集群成员完成初始化连接, 处于 waiting 状态
systemctl start etcd
服务检测状态
[root@qemu-test6 ~]# systemctl status etcd
● etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2017-12-11 10:57:52 CST; 11s ago
Main PID: 10135 (etcd)
CGroup: /system.slice/etcd.service
└─10135 /usr/bin/etcd --name=qemu-test6 --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://xx.xxx.205.229:2379
Dec 11 10:57:56 qemu-test6 etcd[10135]: failed to reach the peerURL(http://xx.xxx.205.231:2380) of member f8ef84dbaeb0e89a (Get http://xx.xxx.205.231:2380/vers...on refused)
Dec 11 10:57:56 qemu-test6 etcd[10135]: cannot get the version of member f8ef84dbaeb0e89a (Get http://xx.xxx.205.231:2380/version: dial tcp xx.xxx.205.231:2380...on refused)
Dec 11 10:57:59 qemu-test6 etcd[10135]: peer f8ef84dbaeb0e89a became active
Dec 11 10:57:59 qemu-test6 etcd[10135]: established a TCP streaming connection with peer f8ef84dbaeb0e89a (stream MsgApp v2 writer)
Dec 11 10:57:59 qemu-test6 etcd[10135]: established a TCP streaming connection with peer f8ef84dbaeb0e89a (stream Message writer)
Dec 11 10:57:59 qemu-test6 etcd[10135]: established a TCP streaming connection with peer f8ef84dbaeb0e89a (stream Message reader)
Dec 11 10:57:59 qemu-test6 etcd[10135]: established a TCP streaming connection with peer f8ef84dbaeb0e89a (stream MsgApp v2 reader)
Dec 11 10:58:00 qemu-test6 etcd[10135]: updating the cluster version from 2.3 to 3.0
Dec 11 10:58:00 qemu-test6 etcd[10135]: updated the cluster version from 2.3 to 3.0
Dec 11 10:58:00 qemu-test6 etcd[10135]: enabled capabilities for version 3.0
Hint: Some lines were ellipsized, use -l to show in full.
关闭 etcd
systemctl stop etcd
集群健康检测
[root@qemu-test6 ~]# etcdctl cluster-health
member 3a412437d7a67c64 is healthy: got healthy result from http://xx.xxx.205.229:2379
member eb6747efc5a87825 is healthy: got healthy result from http://xx.xxx.205.226:2379
member f8ef84dbaeb0e89a is healthy: got healthy result from http://xx.xxx.205.231:2379
cluster is healthy
集群成员检测
[root@qemu-test6 ~]# etcdctl member list
3a412437d7a67c64: name=qemu-test6 peerURLs=http://xx.xxx.205.229:2380 clientURLs=http://xx.xxx.205.229:2379 isLeader=true
eb6747efc5a87825: name=qemu-test3 peerURLs=http://xx.xxx.205.226:2380 clientURLs=http://xx.xxx.205.226:2379 isLeader=false
f8ef84dbaeb0e89a: name=qemu-test8 peerURLs=http://xx.xxx.205.231:2380 clientURLs=http://xx.xxx.205.231:2379 isLeader=false
常见错误
[root@qemu-test6 ~]# etcdctl member list
Error: client: etcd cluster is unavailable or misconfigured
error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
上述问题, 是 ETCD_LISTEN_CLIENT_URLS=”http://127.0.0.1:2379” 没有提供 127 本地地址导致,那么通过指定 endpoint 方法解决
etcdctl --endpoints http://xx.xxx.205.229:2379,http://xx.xxx.205.229:4001 member list
集群初重置
1 利用 systemctl stop etcd 关闭集群, 在重新启动集群, 之前 etcd 保存的资料不会丢失
2 要对 etcd 集群进行重置, 最简单的方式是关闭集群后,
3 删除了所有 etcd member 中 ETCD_DATA_DIR 配置中定义的目录下的所有子目录
4 启动所有 member 即可