基于Docker的ETCD分布式集群

目录

[1. 说明](#1. 说明)

[2. 配置表](#2. 配置表)

[3. 步骤](#3. 步骤)

[3.1 放行端口](#3.1 放行端口)

[3.2 docker-compose 文件](#3.2 docker-compose 文件)

[3.3 部署到3台服务器](#3.3 部署到3台服务器)

[3.4 相关命令](#3.4 相关命令)

[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_settings
      image: quay.io/coreos/etcd:v3.5.16
      entrypoint: /usr/local/bin/etcd
      ports:
        - 4001:4001
        - 2380:2380
        - 2379:2379
          
services:
  etcd0:
    container_name: etcd0
    restart: always
    <<: *common_settings
    command:
      - '--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_settings
      image: quay.io/coreos/etcd:v3.5.16
      entrypoint: /usr/local/bin/etcd
      ports:
        - 4001:4001
        - 2380:2380
        - 2379:2379
          
services:
  etcd1:
    container_name: etcd1
    restart: always
    <<: *common_settings
    command:
      - '--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_settings
      image: quay.io/coreos/etcd:v3.5.16
      entrypoint: /usr/local/bin/etcd
      ports:
        - 4001:4001
        - 2380:2380
        - 2379:2379
          
services:
  etcd2:
    container_name: etcd2
    restart: always
    <<: *common_settings
    command:
      - '--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. 参考

相关推荐
亚空间仓鼠4 小时前
Docker容器化高可用架构部署方案(六)
docker·容器·架构
前端老曹4 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
covco6 小时前
分布式架构实战:全平台矩阵管理系统的技术实现与性能优化
分布式·矩阵·架构
咖啡里的茶i6 小时前
在Docker环境中安装Hadoop cluster 实验报告一
hadoop·docker·容器
rabbit_pro6 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
咖啡里的茶i8 小时前
在Docker环境中安装Hadoop cluster 实验报告三
docker
笑洋仟8 小时前
docker的overlay2目录占用磁盘空间很大,清理办法
运维·docker·容器
木雷坞8 小时前
2026 年 5 月国内可用 Docker 镜像源列表与配置方法
运维·docker·容器
咖啡里的茶i10 小时前
从云端数据分析平台数据图实验报告
docker
gQ85v10Db11 小时前
Redis分布式锁进阶第三十一篇
数据库·redis·分布式