docker 创建etcd集群

1、本文采用etcd3.5.1版本,首先下载etcd3.5.1 docker镜像

docker pull quay.io/coreos/etcd:v3.5.1

2、在自己设定的目录,比如/home/etcd下创建docker-compose.yml,内容如下

##xx.xx.xx.xx  为自己服务器ip地址
version: "3.7"

services:
  etcd0:
    image: "quay.io/coreos/etcd:v3.5.1"
    container_name: etcd0
    ports:
      - "23800:2380"
      - "23790:2379"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_NAME=etcd0
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://xx.xx.xx.xx:23790
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://xx.xx.xx.xx:23800
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_INITIAL_CLUSTER=etcd0=http://xx.xx.xx.xx:23800,etcd1=http://xx.xx.xx.xx:23801,etcd2=http://xx.xx.xx.xx:23802
      - ETCD_INITIAL_CLUSTER_STATE=new

  etcd1:
    image: "quay.io/coreos/etcd:v3.5.1"
    container_name: etcd1
    ports:
      - "23801:2380"
      - "23791:2379"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_NAME=etcd1
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://xx.xx.xx.xx:23791
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://xx.xx.xx.xx:23801
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_INITIAL_CLUSTER=etcd0=http://xx.xx.xx.xx:23800,etcd1=http://xx.xx.xx.xx:23801,etcd2=http://xx.xx.xx.xx:23802
      - ETCD_INITIAL_CLUSTER_STATE=new

  etcd2:
    image: "quay.io/coreos/etcd:v3.5.1"
    container_name: etcd2
    ports:
      - "23802:2380"
      - "23792:2379"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_NAME=etcd2
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://xx.xx.xx.xx:23792
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://xx.xx.xx.xx:23802
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      - ETCD_INITIAL_CLUSTER=etcd0=http://xx.xx.xx.xx:23800,etcd1=http://xx.xx.xx.xx:23801,etcd2=http://xx.xx.xx.xx:23802
      - ETCD_INITIAL_CLUSTER_STATE=new

3、在home/etcd目录下执行docker-compose up -d

4、验证是否成功,输入docker ps

 然后根据容器id,查看每个容器中 etcd集群内成员信息,正常情况下,三个容器出现的结果是一致的。

[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it 2b900596bc82  etcdctl member list 
10708a1c20394730, started, etcd1, http://xx.xx.xx.xx:23801, http://xx.xx.xx.xx:23791, false
816ab764a1780c22, started, etcd2, http://xx.xx.xx.xx:23802, http://xx.xx.xx.xx:23792, false
e87b893102f81d9f, started, etcd0, http://xx.xx.xx.xx:23800, http://xx.xx.xx.xx:23790, false
[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it cf932f70bd6a  etcdctl member list 
10708a1c20394730, started, etcd1, http://xx.xx.xx.xx:23801, http://xx.xx.xx.xx:23791, false
816ab764a1780c22, started, etcd2, http://xx.xx.xx.xx:23802, http://xx.xx.xx.xx:23792, false
e87b893102f81d9f, started, etcd0, http://xx.xx.xx.xx:23800, http://xx.xx.xx.xx:23790, false
[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it 208ae882d104  etcdctl member list 
10708a1c20394730, started, etcd1, http://xx.xx.xx.xx:23801, http://xx.xx.xx.xx:23791, false
816ab764a1780c22, started, etcd2, http://xx.xx.xx.xx:23802, http://xx.xx.xx.xx:23792, false
e87b893102f81d9f, started, etcd0, http://xx.xx.xx.xx:23800, http://xx.xx.xx.xx:23790, false

测试一下,在容器A(etcd0)中创建一个key,在容器B(etcd1)和容器C(etcd2)中读取。

[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it cf932f70bd6a  etcdctl put Test "hello etcd"
OK
[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it 2b900596bc82  etcdctl get Test --prefix
Test
hello etcd
[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# docker exec -it 208ae882d104  etcdctl get Test --prefix
Test
hello etcd
[root@iZbp1bq6vb70qq3lbmjlh0Z ~]# 

可以看到,三个容器中的etcd已实现了数据同步过程。至此,etcd利用docker容器生成多节点模拟多台服务器来完成etcd集群的部署已完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值