三台主机:
node01 10.1.1.1
node02 10.1.1.2
node03 10.1.1.3
etcd会监听2379和2380两个端口,2379用于用户访问,2380用于集群通信,交换选举等信息。
为了性能,我们将etcd的数据文件存储在独立分区/etcd_data上。
通常为了安全会使用证书进行通信加密,我们的这个集群会跑在内网,为了性能,不使用证书,如需要配置证书,请见参考文档1。
0. 所有主机上编辑hosts文件
]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6
localhost6.localdomain6
10.1.1.1 node01
10.1.1.2 node02
10.1.1.3 node03
1. 在所有主机上安装etcd
]# yum install etcd
2. 所有主机上编辑etcd.conf配置文件
以node01为例,node02和node03对应修改即可。
]# cat /etc/etcd/etcd.conf
# [member]
ETCD_NAME=etcd-node01
ETCD_DATA_DIR=/etcd_data
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNTER="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#[cluster]
ETCD_INITIAL_CLUSTER="etcd-node01=http://node01:2380,etcd-node02=https://node02:2380,etcd-node03=https://node03:2380"
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://node01:2380
ETCD_ADVERTISE_CLIENT_URLS=http://node01:2379
ETCD_LISTEN_PEER_URLS=http://node01:2380
ETCD_LISTEN_CLIENT_URLS="http://node01:2379"
#[proxy]
ETCD_PROXY="off"
-------------------
主要配置说明:
ETCD_NAME
节点名称,默认为default,本例中三台机器分别为:etcd-node01,etcd-node02,etcd-node03
ETCD_DATA_DIR 服务运行数据保存的路径,本例中指定独立分区,/etcd_data
ETCD_LISTEN_PEER_URLS
监听的同伴通信的地址,比如http://ip:2380,如果有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用
localhost!
ETCD_LISTEN_CLIENT_URLS 监听的客户端服务地址
ETCD_ADVERTISE_CLIENT_URLS
对外公告的该节点客户端监听地址,这个值会告诉集群中其他节点。
ETCD_INITIAL_ADVERTISE_PEER_URLS
对外公告的该节点同伴监听地址,这个值会告诉集群中其他节点
ETCD_INITIAL_CLUSTER
集群中所有节点的信息,格式为node1=http://ip1:2380,node2=http://ip2:2380,…,注意:这里的
node1 是节点的 --name 指定的名字;后面的 ip1:2380 是
--initial-advertise-peer-urls 指定的值。
ETCD_INITIAL_CLUSTER_STATE 新建集群的时候,这个值为 new;假如加入已经存在的集群,这个值为
existing。
ETCD_INITIAL_CLUSTER_TOKEN
集群的ID,多个集群的时候,每个集群的ID必须保持唯一,否则会引发不可知错误,可以访问
https://discovery.etcd.io/new 生成一个token。
3.启动etcd服务
]# systemctl start etcd
4.etcd集群状态确认
]# etcdctl member list
7bf3dc7e1bfc9229: name=etcd-node03
peerURLs=http://10.1.1.3:2380 clientURLs=http://10.1.1.3:2379
isLeader=true
b19e62a463d4b18e: name=etcd-node02
peerURLs=http://10.1.1.2:2380 clientURLs=http://10.1.1.2:2379
isLeader=false
b22cf29c2bebb484: name=etcd-node01
peerURLs=http://10.1.1.1:2380 clientURLs=http://10.1.1.1:2379
isLeader=false
]# etcdctl --endpoints http://10.1.1.1:2379
cluster-health
member 7bf3dc7e1bfc9229 is healthy: got healthy result from
http://10.1.1.3:2379
member b19e62a463d4b18e is healthy: got healthy result from
http://10.1.1.2:2379
member b22cf29c2bebb484 is healthy: got healthy result from
http://10.1.1.1:2379
上述就是配置etcd集群的简要过程,关于故障修复,增加节点,数据备份等内容,见参考文档4.
参考文档:
1.
http://cloudgeekz.com/1192/bootstrapping-etcd-cluster.html
2.
https://qiita.com/hana_shin/items/602f98bd9b153d22e50c
3. https://www.cnblogs.com/xishuai/p/docker-etcd.html
4. http://www.cnblogs.com/breg/p/5728237.html