目录
1. 说明
2. 配置表
3. 步骤
3.1 放行端口
3.2 docker-compose 文件
3.3 部署到3台服务器
3.4 相关命令
4. 参考
1. 说明
- 以docker容器方式实现ETCD分布式集群,为其他项目提供支持,经过反复试验成功部署(网上资料大都过期或部署失败)。
- 三个ETCD服务点供访问
2. 配置表
服务器 | etcd name | ip | 备注 |
---|---|---|---|
center01.dev.sb | etcd0 | 172.16.20.20 | 硬件配置:16核32G 软件配置:ubuntu22.04 + 宝塔面板 |
host004.dev.sb | etcd1 | 172.16.20.63 | ... |
host004.dev.sb | etcd2 | 172.16.20.64 | ... |
3. 步骤
3.1 放行端口
分别放行 4001, 2380, 2379
3.2 docker-compose 文件
docker-compose.etcd0.yml
x-variables:flag_initial_cluster_token: &flag_initial_cluster_token '--initial-cluster-token=etcd-cluster'common_settings: &common_settingsimage: quay.io/coreos/etcd:v3.5.16entrypoint: /usr/local/bin/etcdports:- 4001:4001- 2380:2380- 2379:2379services:etcd0:container_name: etcd0restart: always<<: *common_settingscommand:- '--name=etcd0'- '--advertise-client-urls=http://172.16.20.20:2379,http://172.16.20.20:4001'- '--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001'- '--initial-advertise-peer-urls=http://172.16.20.20:2380'- '--listen-peer-urls=http://0.0.0.0:2380'- '--initial-cluster=etcd0=http://172.16.20.20:2380,etcd1=http://172.16.20.63:2380,etcd2=http://172.16.20.64:2380'- '--initial-cluster-state=new'logging:driver: "json-file"options:max-size: "1m"max-file: "5"
docker-compose.etcd1.yml
x-variables:flag_initial_cluster_token: &flag_initial_cluster_token '--initial-cluster-token=etcd-cluster'common_settings: &common_settingsimage: quay.io/coreos/etcd:v3.5.16entrypoint: /usr/local/bin/etcdports:- 4001:4001- 2380:2380- 2379:2379services:etcd1:container_name: etcd1restart: always<<: *common_settingscommand:- '--name=etcd1'- '--advertise-client-urls=http://172.16.20.63:2379,http://172.16.20.63:4001'- '--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001'- '--initial-advertise-peer-urls=http://172.16.20.63:2380'- '--listen-peer-urls=http://0.0.0.0:2380'- '--initial-cluster=etcd0=http://172.16.20.20:2380,etcd1=http://172.16.20.63:2380,etcd2=http://172.16.20.64:2380'- '--initial-cluster-state=new'logging:driver: "json-file"options:max-size: "1m"max-file: "5"
docker-compose.etcd2.yml
x-variables:flag_initial_cluster_token: &flag_initial_cluster_token '--initial-cluster-token=etcd-cluster'common_settings: &common_settingsimage: quay.io/coreos/etcd:v3.5.16entrypoint: /usr/local/bin/etcdports:- 4001:4001- 2380:2380- 2379:2379services:etcd2:container_name: etcd2restart: always<<: *common_settingscommand:- '--name=etcd2'- '--advertise-client-urls=http://172.16.20.64:2379,http://172.16.20.64:4001'- '--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001'- '--initial-advertise-peer-urls=http://172.16.20.64:2380'- '--listen-peer-urls=http://0.0.0.0:2380'- '--initial-cluster=etcd0=http://172.16.20.20:2380,etcd1=http://172.16.20.63:2380,etcd2=http://172.16.20.64:2380'- '--initial-cluster-state=new'logging:driver: "json-file"options:max-size: "1m"max-file: "5"
3.3 部署到3台服务器
服务拉起来:
3.4 相关命令
# 列出节点成员
docker exec etcd0 etcdctl --write-out=table member list# 查看节点状态
docker exec etcd0 etcdctl --write-out=table endpoint status# 查看节点健康
docker exec etcd0 etcdctl --write-out=table endpoint health# 在etcd0中放入KV
docker exec etcd0 etcdctl put name ben# 在etcd1中获取
docker exec etcd1 etcdctl get name
4. 参考
- Running etcd under Docker | etcd
- docker-compose-etcd/docker-compose.yml at master · guessi/docker-compose-etcd · GitHub