前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker部署etcd集群

docker部署etcd集群

原创
作者头像
melodyshu
发布2023-11-29 18:52:12
4380
发布2023-11-29 18:52:12
举报
文章被收录于专栏:milvus数据库milvus数据库

docker部署etcd集群

etcd版本:v3.5.5

创建etcd数据目录

代码语言:shell
复制
mkdir -p etcd-node{1,2,3}

创建docker网络

代码语言:shell
复制
docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 etcd-cluster

docker-compose.yml

代码语言:yaml
复制
version: '3'

networks:
  etcd-cluster:
    external: true

services:
  etcd-node1:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: etcd-node1
    ports:
      - "12379:2379"
      - "12380:2380"
    restart: always
    volumes:
      - ./etcd-node1:/data/app/etcd
    command: etcd --name etcd-node1 --data-dir /data/app/etcd/ --advertise-client-urls http://172.20.0.10:2379 --initial-advertise-peer-urls http://172.20.0.10:2380 --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster --initial-cluster "etcd-node1=http://172.20.0.10:2380,etcd-node2=http://172.20.0.11:2380,etcd-node3=http://172.20.0.12:2380" --initial-cluster-state new
    networks:
      etcd-cluster:
        ipv4_address: 172.20.0.10

  etcd-node2:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: etcd-node2
    ports:
      - "22379:2379"
      - "22380:2380"
    restart: always
    volumes:
      - ./etcd-node2:/data/app/etcd
    command: etcd --name etcd-node2 --data-dir /data/app/etcd/ --advertise-client-urls http://172.20.0.11:2379 --initial-advertise-peer-urls http://172.20.0.11:2380 --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster --initial-cluster "etcd-node1=http://172.20.0.10:2380,etcd-node2=http://172.20.0.11:2380,etcd-node3=http://172.20.0.12:2380" --initial-cluster-state new
    networks:
      etcd-cluster:
        ipv4_address: 172.20.0.11

  etcd-node3:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: etcd-node3
    ports:
      - "32379:2379"
      - "32380:2380"
    restart: always
    volumes:
      - ./etcd-node3:/data/app/etcd
    command: etcd --name etcd-node3 --data-dir /data/app/etcd/ --advertise-client-urls http://172.20.0.12:2379 --initial-advertise-peer-urls http://172.20.0.12:2380 --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster --initial-cluster "etcd-node1=http://172.20.0.10:2380,etcd-node2=http://172.20.0.11:2380,etcd-node3=http://172.20.0.12:2380" --initial-cluster-state new
    networks:
      etcd-cluster:
        ipv4_address: 172.20.0.12

启动集群

代码语言:shell
复制
docker-compose up -d

验证集群

代码语言:shell
复制
docker exec -it etcd-node1 bash
etcdctl member list -w table
代码语言:shell
复制
etcdctl --endpoints=172.20.0.10:2379,172.20.0.11:2379,172.20.0.12:2379 endpoint status -w table

可以看出etcd-node2为leader。

读写数据

代码语言:shell
复制
etcdctl put /foo bar
etcdctl get /foo

任意节点写入,任意节点都可以读取。

节点故障测试1

停掉etcd-node1节点(非leader)。进行读写测试。

恢复etcd-node1节点。进行读写测试。

节点故障测试2

停掉etcd-node2节点(leader)。观察新leader。进行读写测试。

恢复etcd-node2节点。进行读写测试。

添加节点

etcd4.yml

创建数据目录

代码语言:shell
复制
mkdir etcd-node4
代码语言:yaml
复制
version: '3'

networks:
  etcd-cluster:
    external: true

services:
  etcd-node4:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: etcd-node4
    ports:
      - "42379:2379"
      - "42380:2380"
    restart: always
    volumes:
      - ./etcd-node4:/data/app/etcd
    command: etcd --name etcd-node4 --data-dir /data/app/etcd/ --advertise-client-urls http://172.20.0.13:2379 --initial-advertise-peer-urls http://172.20.0.13:2380 --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster --initial-cluster "etcd-node1=http://172.20.0.10:2380,etcd-node2=http://172.20.0.11:2380,etcd-node3=http://172.20.0.12:2380,etcd-node4=http://172.20.0.13:2380" --initial-cluster-state existing
    networks:
      etcd-cluster:
        ipv4_address: 172.20.0.13

启动:

代码语言:shell
复制
docker-compose -f etcd4.yml up -d

进入任意容器执行:

代码语言:txt
复制
etcdctl member add etcd-node4 --peer-urls=http://172.20.0.13:2380

重启容器:

代码语言:txt
复制
docker-compose -f etcd4.yml stop
docker-compose -f etcd4.yml start

验证集群。

删除节点

代码语言:shell
复制
etcdctl member remove b7476e957868d2df
Member b7476e957868d2df removed from cluster fcb94ddca70b9db2

etcdctl member list -w table

etcdctl --endpoints=172.20.0.10:2379,172.20.0.11:2379,172.20.0.12:2379 endpoint status -w table

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker部署etcd集群
    • 创建etcd数据目录
      • 创建docker网络
        • docker-compose.yml
          • 启动集群
            • 验证集群
              • 读写数据
                • 节点故障测试1
                  • 节点故障测试2
                    • 添加节点
                      • 删除节点
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档