Skip to content

Etcd集群

关键字说明

  • 字体代表
  • 字体代表

实验明细

docker-compose.yaml

yaml
# 可参考 https://hub.docker.com/r/bitnami/etcd
version: '3'
networks:
  etcd-cluster-1:
    driver: bridge
services:
  etcd1:
    image: registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15
    container_name: etcd1
    restart: unless-stopped
    volumes:
      - "./etcd1/data:/bitnami/etcd/data"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes #示例中我们不设置密码
      - ETCD_NAME=etcd1 #节点自己的名字
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379  #告知集群自己的客户端地址
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 #设置监听客户端通讯的URL列表
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380 #告知集群自己集群通讯地址
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 #用于监听伙伴通讯的URL列表
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster #etcd 集群的初始化集群记号
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 #集群成员
      - ETCD_INITIAL_CLUSTER_STATE=new #初始化集群状态, 再次启动改为existing
    ports:
      - "2379"
      - "2380"
    networks:
      - etcd-cluster-1
  etcd2:
    image: registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15
    container_name: etcd2
    restart: unless-stopped
    volumes:
      - "./etcd2/data:/bitnami/etcd/data"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes #示例中我们不设置密码
      - ETCD_NAME=etcd2 #节点自己的名字
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379  #告知集群自己的客户端地址
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 #设置监听客户端通讯的URL列表
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380 #告知集群自己集群通讯地址
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 #用于监听伙伴通讯的URL列表
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster #etcd 集群的初始化集群记号
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 #集群成员
      - ETCD_INITIAL_CLUSTER_STATE=new #初始化集群状态, 再次启动改为existing
    ports:
      - "2379"
      - "2380"
    networks:
      - etcd-cluster-1
  etcd3:
    image: registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15
    container_name: etcd3
    restart: unless-stopped
    volumes:
      - "./etcd3/data:/bitnami/etcd/data"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes #示例中我们不设置密码
      - ETCD_NAME=etcd3 #节点自己的名字
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379  #告知集群自己的客户端地址
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 #设置监听客户端通讯的URL列表
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380 #告知集群自己集群通讯地址
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 #用于监听伙伴通讯的URL列表
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster #etcd 集群的初始化集群记号
      - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 #集群成员
      - ETCD_INITIAL_CLUSTER_STATE=new #初始化集群状态, 再次启动改为existing
    ports:
      - "2379"
      - "2380"
    networks:
      - etcd-cluster-1

进入容器并测试

shell
$ docker ps
CONTAINER ID   IMAGE                                                     COMMAND                  CREATED         STATUS         PORTS                                              NAMES
d003e897f512   registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15   "/opt/bitnami/script…"   3 minutes ago   Up 3 minutes   0.0.0.0:51650->2379/tcp, 0.0.0.0:51651->2380/tcp   etcd2
757c5f377610   registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15   "/opt/bitnami/script…"   3 minutes ago   Up 3 minutes   0.0.0.0:51648->2379/tcp, 0.0.0.0:51649->2380/tcp   etcd3
ccb218db770a   registry.cn-shanghai.aliyuncs.com/odboy/ops:etcd-3.5.15   "/opt/bitnami/script…"   3 minutes ago   Up 3 minutes   0.0.0.0:51652->2379/tcp, 0.0.0.0:51653->2380/tcp   etcd1

$ docker exec -it 8ea859ca15d9 bash

$ etcdctl --endpoints=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 --write-out=table endpoint status
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|     ENDPOINT      |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://etcd1:2379 | ade526d28b1f92f7 |  3.5.15 |   20 kB |     false |      false |         6 |         15 |                 15 |        |
| http://etcd2:2379 | d282ac2ce600c1ce |  3.5.15 |   20 kB |     false |      false |         6 |         15 |                 15 |        |
| http://etcd3:2379 | bd388e7810915853 |  3.5.15 |   20 kB |      true |      false |         6 |         15 |                 15 |        |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

环境变量

pic

只读变量

pic