docker部署etcd集群及使用

docker部署etcd集群

etcd版本:v3.5.5

创建etcd数据目录

mkdir -p etcd-node{1,2,3}

创建docker网络

docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 etcd-cluster

docker-compose.yml

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

启动集群

docker-compose up -d

验证集群

docker exec -it etcd-node1 bash
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

在这里插入图片描述

可以看出etcd-node2为leader。

读写数据

etcdctl put /foo bar
etcdctl get /foo

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

节点故障测试1

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

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

节点故障测试2

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

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

添加节点

etcd4.yml

创建数据目录

mkdir etcd-node4
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

启动:

docker-compose -f etcd4.yml up -d

进入任意容器执行:

etcdctl member add etcd-node4 --peer-urls=http://172.20.0.13:2380

重启容器:

docker-compose -f etcd4.yml stop
docker-compose -f etcd4.yml start

验证集群。

删除节点

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
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shulu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值