1. etcd 安装说明
启动 etcd 集群要求每个成员知道集群中的其他成员。在一些场景中,集群成员的 IP 地址可能无法提前知道。在这种情况下,etcd 集群可以在发现服务的帮助下启动。
一旦 etcd 集群启动并运行,可以通过 运行时重配置 来添加或者移除成员。为了更好的理解运行时重配置背后的设计,建议阅读 运行时重配置的设计。
这份指南将覆盖下列用于启动 etcd 集群的机制:
启动机制的每一种都将用于启动三台机器的 etcd 集群,详情如下:
名字 | 地址 | 主机 |
---|---|---|
infra0 | 10.0.1.10 | infra0.example.com |
infra1 | 10.0.1.11 | infra1.example.com |
infra2 | 10.0.1.12 | infra2.example.com |
- etcd 推荐使用奇数节点组件集群
虽然 etcd 也支持单点部署,但是在生产环境中推荐集群方式部署,一般 etcd 节点数会选择 3、5、7......。etcd 会保证所有的节点都会保存数据,并保证数据的一致性和正确性。 具体选择几个节点部署 etc 集群,可以根据成本、SLA、性能、集群规模等方面评估。
- etcd 节点数量会决定正常运行允许故障节点数
比如当集群有3个节点时,大于一半的成员数量是2,即可以允许有1个节点故障而不影响集群正常运行;同理,5个节点时可以允许2个节点故障,7个节点时允许3个节点故障,依次类推。
- etcd 节点数量会影响性能
etcd 在写入数据,要求写入的节点数大于一半才算写入成功;例如集群有3个节点时需要2个节点写入成功,7个节点时需要4个节点写入成功;节点数量越多,数据同步到一致的状态时间越大,因此节点数量越多,写入性能会越差。在读取数据时,由于 etcd 使用 raft 协议,任意一个节点可以读取到完整的数据;因此节点数量越多,读取的性能会越好。
- etcd 默认使用2379和2380端口进行与客户端建连和集群成员建连
目前默认使用 2379 端口提供 HTTP API ,用于客户端能够连接到 etcd 集群中;2380 端口提供 Peer 通信(这两个端口已经被 IANA 官方预留给 etcd),用于 etcd 集群各个成员之间通信使用。在之前的老版本中,可能会分别使用 4001 和 7001,在使用的过程中需要注意这个区别。
- etcd 支持静态部署和动态部署
etcd 的静态部署是指在初始化时就已经明确了机器各个节点的信息,统一进行集群的初始化。动态部署时指在初部署无法确定集群其他成员的具体 IP 和端口信息,通过服务发现的机制进行集群创建。