etcd 集群搭建【docker-compose】
文章目录
- 环境准备
- 部署
- 创建文件夹
- 进入文件夹
- 生成密钥
- 启动
- 查看集群成员
- 查看节点状态
- 结果
- 检查
- 配置解说
环境准备
IP | ROLE | ETCD_NAME |
---|---|---|
192.168.142.157 | master | etcd0 |
192.168.142.156 | slave | etcd1 |
192.168.142.155 | slave02 | etcd2 |
192.168.142.158 | slave03 | etcd3 |
部署
创建文件夹
mkdir -p /docker/etcd/data
mkdir -p /docker/etcd/ca-certificates
进入文件夹
cd /docker/etcd
编辑 docker-compose.yml 文件
services:etcd:image: bitnami/etcdcontainer_name: etcdrestart: alwaysports:- 4001:4001- 2380:2380- 2379:2379volumes:- /docker/etcd/ca-certificates/:/etc/ssl/certs- /docker/etcd/data:/bitnami/etcd/dataenvironment:- TZ=Asia/Shanghai- ETCD_NAME=etcd0- ETCD_DATA_DIR=/bitnami/etcd/data- ETCD_ROOT_PASSWORD=123456- ETCD_CLIENT_CERT_AUTH=true- ETCD_PEER_CLIENT_CERT_AUTH=true- ETCD_ADVERTISE_CLIENT_URLS=http://192.168.142.157:2379,http://192.168.142.157:4001- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.142.157:2380- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1- ETCD_INITIAL_CLUSTER=etcd0=http://192.168.142.157:2380,etcd1=http://192.168.142.156:2380,etcd2=http://192.168.142.155:2380,etcd3=http://192.168.142.158:2380- ETCD_INITIAL_CLUSTER_STATE=new- ETCD_CERT_FILE=/etc/ssl/certs/etcd.crt- ETCD_KEY_FILE=/etc/ssl/certs/etcd.key- ETCD_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt- ETCD_PEER_CERT_FILE=/etc/ssl/certs/etcd.crt- ETCD_PEER_KEY_FILE=/etc/ssl/certs/etcd.key- ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt- ETCD_CLIENT_CERT_AUTH=true
所有主机的配置都差不多,略微差别,可以根据上述表格进行更改就行
生成密钥
具体操作请查看:etcd 快速入门
启动
docker-compose.yml
查看集群成员
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 member list
查看节点状态
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 endpoint health
结果
b7201f17edd745e, started, etcd2, http://192.168.142.155:2380, http://192.168.142.155:2379,http://192.168.142.155:4001, false
a3ece45ece93beee, started, etcd0, http://192.168.142.157:2380, http://192.168.142.157:2379,http://192.168.142.157:4001, true
e7c67df1418afbf6, started, etcd3, http://192.168.142.158:2380, http://192.168.142.158:2379,http://192.168.142.158:4001, false
f749462fb1703251, started, etcd1, http://192.168.142.156:2380, http://192.168.142.156:2379,http://192.168.142.156:4001, false
http://192.168.142.157:2379 is healthy: successfully committed proposal: took = 1.309654ms
看到这两个结果就说明集群部署基本成功了
检查
在主机点上插入数据
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 put /mykey "myValue"
在从节点上查看
docker exec -it etcd etcdctl --endpoints=http://192.168.142.158:2379 --user=root:123456 get /mykey
返回
/mykey
myvalue
配置解说
TZ=Asia/Shanghai: 设置容器的时区为上海时区。
ETCD_NAME=etcd0: 设置 etcd 节点的名称为 etcd0。
ETCD_DATA_DIR=/bitnami/etcd/data: 指定 etcd 存储数据的目录。
ETCD_ROOT_PASSWORD=123456: 设置 etcd 节点的根用户密码。注意:这不是官方 etcd 配置的一部分,可能是 Bitnami 镜像特有的设置。
ETCD_CLIENT_CERT_AUTH=true: 启用客户端证书认证。
ETCD_PEER_CLIENT_CERT_AUTH=true: 启用对等证书认证。
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.142.157:2379,http://192.168.142.157:4001: 定义 etcd 节点向客户端广告的 URL,包括 HTTP 和 HTTPS 端口。
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001: 定义 etcd 节点监听客户端请求的 URL,包括 HTTP 和 HTTPS 端口。
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.142.157:2380: 定义 etcd 节点向其他 etcd 节点广告的对等 URL。
ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380: 定义 etcd 节点监听来自其他 etcd 节点的对等请求的 URL。
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1: 设置初始集群的令牌,用于集群成员之间的发现。
ETCD_INITIAL_CLUSTER=etcd0=http://192.168.142.157:2380,etcd1=http://192.168.142.156:2380,etcd2=http://192.168.142.155:2380,etcd3=http://192.168.142.158:2380: 定义初始集群的配置,包括每个成员的名称和对等 URL。
ETCD_INITIAL_CLUSTER_STATE=new: 设置集群的初始状态为 new,表示这是一个新集群。
ETCD_CERT_FILE=/etc/ssl/certs/etcd.crt: 指定 etcd 节点的客户端证书文件路径。
ETCD_KEY_FILE=/etc/ssl/certs/etcd.key: 指定 etcd 节点的客户端密钥文件路径。
ETCD_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt: 指定 etcd 节点信任的 CA 证书文件路径。
ETCD_PEER_CERT_FILE=/etc/ssl/certs/etcd.crt: 指定 etcd 节点的对等证书文件路径。
ETCD_PEER_KEY_FILE=/etc/ssl/certs/etcd.key: 指定 etcd 节点的对等密钥文件路径。
ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt: 指定 etcd 节点信任的对等 CA 证书文件路径。
ETCD_CLIENT_CERT_AUTH=true: 再次设置客户端证书认证为启用状态。