etcd 是一个分布式键值存储系统,用于共享配置和服务发现等任务。它使用简单的 HTTP API 和基于 RESTful 的数据模型,可以通过多种语言进行访问。
在启动 etcd 时,需要指定一个配置文件。本文将对 etcd 配置文件中常见的几个参数进行详解。
参数说明
name
- 默认值:default
- 描述:该节点的名称,在集群中必须唯一。如果不指定,则默认为 default。
data-dir
- 默认值:/var/lib/etcd
- 描述:保存 etcd 数据的目录路径。在这个目录下会生成多个文件和子目录来保存节点信息、快照和日志等数据。
listen-peer-urls
- 默认值:http://localhost:2380
- 描述:监听同伴(peer)节点连接的 URL 列表。当新节点加入或者已有节点断开连接时,都会通过这些 URL 进行通信。例如:
listen-peer-urls: http://192.168.1.101:2380,http://192.168.1.102:2380,http://192.168.1.103:2380
表示该节点监听三个 IP 地址上的 2380 端口,以便与其他同伴节点进行通信。
listen-client-urls
- 默认值:http://localhost:2379
- 描述:监听客户端连接的 URL 列表。当用户通过 etcdctl 或者 API 发起请求时,就会使用这些 URL 进行通信。例如:
listen-client-urls: http://192.168.1.101:2379,http://192.168.1.102:2379,http://192.168.1.103:2379
表示该节点监听三个 IP 地址上的 2379 端口,以便接受客户端请求。
initial-advertise-peer-urls
- 默认值:同 listen-peer-urls
- 描述:告诉其他同伴节点自己的地址,用于新节点加入时进行发现。例如:
initial-advertise-peer-urls: http://192.168.1.101:2380
表示该节点在加入集群时,向其他同伴节点发送的地址为 http://192.168.1.101:2380。
advertise-client-urls
- 默认值:同 listen-client-urls
- 描述:告诉客户端自己的地址,以便它们能够正确地连接到该节点。例如:
advertise-client-urls: http://192.168.1.101:2379
表示该节点对外暴露的客户端地址为 http://192.168.1.101:2379。
initial-cluster-token
- 默认值:etcd-cluster
- 描述:用于标识一个 etcd 集群,在多个集群同时运行时必须不同。例如:
initial-cluster-token: my-etcd-cluster
表示当前集群的 token 为 my-etcd-cluster。
initial-cluster
- 默认值:无
- 描述:用于指定初始的同伴节点列表。例如:
initial-cluster: node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380
表示当前集群中有三个节点,它们的名称分别为 node1、node2 和 node3,地址分别为 http://192.168.1.101:2380、http://192.168.1.102:2380 和 http://192.168.1.103:2380。
initial-cluster-state
- 默认值:new
- 描述:用于标识当前节点在集群中的状态。当该值为 new 时,表示该节点是新加入的;当该值为 existing 时,表示该节点已经存在于集群中。例如:
initial-cluster-state: existing
表示当前节点已经存在于集群中。
示例
下面是一个完整的 etcd 配置文件示例:
name: node1
data-dir: /var/lib/etcd/data
listen-peer-urls: http://192.168.1.101:2380,http://192.168.1.102:2380,http://192.168.1.103:2380
listen-client-urls: http://192.168.1.101:2379,http://127.:2379
advertise-client-urls: http://192.:2379
initial-advertise-peer-urls: http://19.:2380
initial-cluster-token: my-etcd-cluster
initial-cluster-state: existing
initial-cluster:
node1=http://192.168.1.101:2380
node2=http://192.168.1.102:2380
node3=http://192.168.1.103:2380
该配置文件中,node1 是当前节点的名称,data-dir 指定了 etcd 数据存储的目录。listen-peer-urls 和 listen-client-urls 分别指定了同伴和客户端连接使用的 URL 列表。
initial-advertise-peer-urls 和 advertise-client-urls 分别告诉其他同伴节点和客户端自己的地址。initial-cluster-token 表示当前集群的 token,而 initial-cluster-state 表示当前节点在集群中的状态。
initial-cluster 则是一个键值对列表,用于指定初始的同伴节点列表。每个键值对由节点名称和监听地址组成。在这个例子中,该节点已经存在于集群中,所以 initial-cluster-state 的值为 existing。