Etcd 服务介绍和简单配置

2019-06-02 0 By admin

Etcd是由CoreOS团队发的一个分布式一致性的KV存储系统,可用于服务注册发现和共享配置。
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。
在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。

一、使用说明

Etcd推荐使用奇数作为集群节点个数。因为奇数个节点和其配对的偶数个节点相比,容错能力相同,却可以少一个节点。
综合考虑性能和容错能力,etcd官方文档推荐的etcd集群大小是3,5,7。
由于etcd使用是Raft算法,每次写入数据需要有2N+1个节点同意可以写入数据,所以部分节点由于网络或者其他不可靠因素延迟收到数据更新,但是最终数据会保持一致,高度可靠。
随着节点数目的增加,每次的写入延迟会相应的线性递增,除了节点数量会影响写入数据的延迟,如果节点跟接节点之间的网络延迟,也会导致数据的延迟写入。

1.1、总结:

1.节点数并非越多越好,过多的节点将会导致数据延迟写入。
2.节点跟节点之间的跨机房,专线之间网络延迟,也将会导致数据延迟写入。
3.受网络IO和磁盘IO的延迟
4.为了提高吞吐量,etcd通常将多个请求一次批量处理并提交Raft,
5.增加节点,读性能会提升,写性能会下降,减少节点,写性能会提升。

二、Etcd 服务配置过程

2.1、Etcd 集群配置主机说明

etcd集群服务节点:
host1:172.16.216.135
host2:172.16.216.136
host3:172.16.216.137

2.2、Etcd 服务配置过程

1、etcd 服务安装
#yum install etcd -y
2、配置第一个节点
#grep -v "^#" etcd.conf
[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.216.135:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.216.135:2379"
ETCD_NAME="host1"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.216.135:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.216.135:2379"
ETCD_INITIAL_CLUSTER="host1=http://172.16.216.135:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

3、查看etcd集群成员信息
etcdctl --endpoints=http://172.16.216.135:2379 member list
7da3c4c0da38592a: name=host1 peerURLs=http://172.16.216.135:2380 clientURLs=http://172.16.216.135:2379 isLeader=true

4、添加etcd集群新成员
执行下面添加新成员的时候,要保证新成员没有启动,并且将新成员的存储内容(/var/lib/etcd/default.etcd”)中成员的信息删除到。
#etcdctl --endpoints=http://172.16.216.135:2379 member add host2 http://172.16.216.136:2380
Added member named host2 with ID f53d3c8ba9a25c25 to cluster
ETCD_NAME="host2"
ETCD_INITIAL_CLUSTER="host1=http://172.16.216.135:2380,host2=http://172.16.216.136:2380"
ETCD_INITIAL_CLUSTER_STATE="existing

5、根据上面的提示,配置host2 主机上的etcd服务;然后启动此服务。
然后按照上面的步骤,配置host3 主机服务。
最后统一etcd服务的ETCD_INITIAL_CLUSTERETCD_INITIAL_CLUSTER_STATE 配置项。