Docker-单节点多Etcd部署
数据目录
mkdir /data/docker/etcd/etcd{1..3} -p
docker-compose.yaml
version: "3.7"
services:
etcd1:
image: "bitnami/etcd:3.5"
container_name: "etcd1"
restart: "always"
ports:
- 12379:12379
environment:
- TZ=Asia/Shanghai
# 允许无认证访问
- ALLOW_NONE_AUTHENTICATION=yes
# 名称
- ETCD_NAME=etcd1
# 列出这个成员的伙伴 URL 以便通告给集群的其他成员
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380
# 用于监听伙伴通讯的URL列表
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
# 用于监听客户端通讯的URL列表
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:12379
# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token
- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd
# 列出这个成员的客户端URL,通告给集群中的其他成员
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:12379
# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
# 初始化集群状态,这里写 new 就行
- ETCD_INITIAL_CLUSTER_STATE=new
volumes:
- /data/docker/etcd/etcd1:/bitnami/etc
etcd2:
image: "bitnami/etcd:3.5"
container_name: "etcd2"
restart: "always"
ports:
- 22379:22379
environment:
- TZ=Asia/Shanghai
# 允许无认证访问
- ALLOW_NONE_AUTHENTICATION=yes
# 名称
- ETCD_NAME=etcd2
# 列出这个成员的伙伴 URL 以便通告给集群的其他成员
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380
# 用于监听伙伴通讯的URL列表
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
# 用于监听客户端通讯的URL列表
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:22379
# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token
- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd
# 列出这个成员的客户端URL,通告给集群中的其他成员
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:22379
# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
# 初始化集群状态,这里写 new 就行
- ETCD_INITIAL_CLUSTER_STATE=new
volumes:
- /data/docker/etcd/etcd2:/bitnami/etc
etcd3:
image: "bitnami/etcd:3.5"
container_name: "etcd3"
restart: "always"
ports:
- 32379:32379
environment:
- TZ=Asia/Shanghai
# 允许无认证访问
- ALLOW_NONE_AUTHENTICATION=yes
# 名称
- ETCD_NAME=etcd3
# 列出这个成员的伙伴 URL 以便通告给集群的其他成员
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
# 用于监听伙伴通讯的URL列表
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
# 用于监听客户端通讯的URL列表
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:32379
# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token
- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd
# 列出这个成员的客户端URL,通告给集群中的其他成员
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:32379
# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
# 初始化集群状态,这里写 new 就行
- ETCD_INITIAL_CLUSTER_STATE=new
volumes:
- /data/docker/etcd/etcd3:/bitnami/etc
测试集群
[root@VM-0-14-centos ~]# docker exec etcd1 /bin/sh -c "etcdctl --endpoints=localhost:12379 put /t v"
[root@VM-0-14-centos ~]# docker exec etcd1 /bin/sh -c "etcdctl --endpoints=localhost:12379 get /t"
/t
v
[root@VM-0-14-centos ~]# docker exec etcd2 /bin/sh -c "etcdctl --endpoints=localhost:12379 get /t"
^C
[root@VM-0-14-centos ~]# docker exec etcd2 /bin/sh -c "etcdctl --endpoints=localhost:22379 get /t"
/t
v
[root@VM-0-14-centos ~]# docker exec etcd3 /bin/sh -c "etcdctl --endpoints=localhost:32379 get /t"
/t
v
Last updated