go+etcd(二): 使用docker模拟etcd集群的创建

一. 搭建准备

#创建docker网络
docker network  create etcdnet  --subnet 172.25.0.0/16
#创建配置文件
mkdir -p etcd/conf etcd/data
mkdir -p etcd2/conf etcd2/data
vi etcd/conf/etcd.yml
vi etcd2/conf/etcd.yml

etcd/conf/etcd.yml文件

name: etcd1
data-dir: /etcd/data
listen-client-urls: http://172.25.0.101:2379, http://127.0.0.1:2379
advertise-client-urls: http://172.25.0.101:2379
listen-peer-urls: http://172.25.0.101:2380
initial-advertise-peer-urls: http://172.25.0.101:2380
initial-cluster: etcd1=http://172.25.0.101:2380,etcd2=http://172.25.0.102:2380
initial-cluster-token: etcd-cluster-token
initial-cluster-state: new

etcd2/conf/etcd.yml文件

name: etcd2
data-dir: /etcd/data
listen-client-urls: http://172.25.0.102:2379, http://127.0.0.1:2379
advertise-client-urls: http://172.25.0.102:2379
listen-peer-urls: http://172.25.0.102:2380
initial-advertise-peer-urls: http://172.25.0.102:2380
initial-cluster: etcd1=http://172.25.0.101:2380,etcd2=http://172.25.0.102:2380
initial-cluster-token: etcd-cluster-token
initial-cluster-state: new

二. 做一个etcd docker镜像

#实例化容器
docker run --name testgo -it golang:1.12-alpine sh
#进入etcd文件夹
cd etcd33
#要保证etcd和etcdctl是可执行文件
docker cp etcd testgo:/usr/bin && docker cp etcdctl testgo:/usr/bin
#退出容器,快捷键(Ctrl+Q+P)
docker commit testgo etcd:my

三. 创建etcd容器

# 容器1
docker run -d --name etcd1 --network etcdnet --ip 172.25.0.101 -p 23791:2379 -e ETCDCTL_API=3  -v /home/gin/etcd:/etcd etcd:my /usr/bin/etcd --config-file /etcd/conf/etcd.yml
# 容器2
docker run -d  --name etcd2 --network etcdnet --ip 172.25.0.102 -p 23792:2379 -e ETCDCTL_API=3 -v /home/gin/etcd2:/etcd etcd:my  /usr/bin/etcd --config-file  /etcd/conf/etcd.yml
# 查看集群列表
./etcdctl --endpoints http://localhost:23791 member list
# 结果
97f72e8299c69562: name=etcd1 peerURLs=http://172.25.0.101:2380 clientURLs=http://172.25.0.101:2379 isLeader=true
aea8ea6030d288e8: name=etcd2 peerURLs=http://172.25.0.102:2380 clientURLs=http://172.25.0.102:2379 isLeader=false

猜你喜欢

转载自blog.csdn.net/qq_36453564/article/details/108261704