1. etcd 高可用静态部署

在生产环境或对高可用有要求的环境下,需要使用 etcd 的高可用部署方式进行部署,etcd 的 raft 协议保障各个节点数据的一致性。

1.1. 核心配置

etcd 静态部署的核心配置就是 initial-cluster 参数,该参数在节点启动时就明确指定了该集群由哪些节点组成。

etcd 集群成员之前通讯使用和客户端不同的 peer 端口。

例如,如果 client 端口是 32379 时,可以将 peer 端口配置为 32380。

环境变量的配置参数

ETCD_INITIAL_CLUSTER="etcd01=http://10.100.0.13:32380,etcd02=http://10.100.0.14:32380,etcd03=http://10.100.0.15:32380"

或者,等价的启动参数配置

--initial-cluster="etcd01=http://10.100.0.13:32380,etcd02=http://10.100.0.14:32380,etcd03=http://10.100.0.15:32380"

--initial-cluster 开头的命令行参数将在 etcd 随后的运行中被忽略。可以在初始化启动进程之后随意的删除环境变量或者命令行标记。如果配置需要稍后修改(例如,添加成员到集群或者从集群中移除成员),查看运行时配置。

1.2. systemd 配置

我们以3个节点的高可用静态方式部署 etcd,3个节点的IP地址分别是 10.100.0.1310.100.0.1410.100.0.15

由于每个节点的 IP 地址差异,每个节点上配置不完全相同;主要的差异就是当前节点的 IP 地址和命名。

例如在 10.100.0.13 上,etcd 的名称是 etcd01,IP地址是 10.100.0.13,那么其 /etc/etcd/etcd.conf 的配置内容如下:

  • 10.100.0.13 节点配置
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/data/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.100.0.13:32380"
ETCD_LISTEN_CLIENT_URLS="http://10.100.0.13:32379,http://127.0.0.1:32379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.0.13:32380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.0.13:32379"
ETCD_INITIAL_CLUSTER="etcd01=http://10.100.0.13:32380,etcd02=http://10.100.0.14:32380,etcd03=http://10.100.0.15:32380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
  • 10.100.0.14 节点配置
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/data/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.100.0.14:32380"
ETCD_LISTEN_CLIENT_URLS="http://10.100.0.14:32379,http://127.0.0.1:32379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.0.14:32380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.0.14:32379"
ETCD_INITIAL_CLUSTER="etcd01=http://10.100.0.13:32380,etcd02=http://10.100.0.14:32380,etcd03=http://10.100.0.15:32380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
  • 10.100.0.15 节点配置
ETCD_NAME="etcd03"
ETCD_DATA_DIR="/data/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.100.0.15:32380"
ETCD_LISTEN_CLIENT_URLS="http://10.100.0.15:32379,http://127.0.0.1:32379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.0.15:32380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.0.15:32379"
ETCD_INITIAL_CLUSTER="etcd01=http://10.100.0.13:32380,etcd02=http://10.100.0.14:32380,etcd03=http://10.100.0.15:32380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

然后分别启动各个节点的 etcd 服务

1.3. 查看集群状态

etcdctl --endpoints http://10.100.0.13:32379 endpoint status --cluster -w table
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|         ENDPOINT         |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://10.100.0.13:32379 | a724bcfdc0f9fe8a |  3.4.14 |   22 MB |       true |      false |         4 |       9013 |               9013 |        |
| http://10.100.0.14:32379 | a724bcfdc0f9fe8a |  3.4.14 |   22 MB |      false |      false |         4 |       9013 |               9013 |        |
| http://10.100.0.15:32379 | a724bcfdc0f9fe8a |  3.4.14 |   22 MB |      false |      false |         4 |       9013 |               9013 |        |
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

正常的集群没有 ERROR 异常,而且有一个节点的 IS LEADER 的值为 true

1.4. 读写数据

写入数据

$ etcdctl --endpoints http://10.100.0.13:32379 put ha-key ha-values
OK

读取数据

etcdctl --endpoints http://10.100.0.13:32379 get ha-key
ha-key
ha-values
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-10-26 17:23:11

results matching ""

    No results matching ""