Step 1
Mac 下安装 etcd
brew install etcd
执行
etcd --version
确保安装成功
Step 2
使用 docker-machine 创建 3 个 docker 主机
docker-machine create --driver virtualbox box0
docker-machine create --driver virtualbox box1
docker-machine create --driver virtualbox box2
确认生成成功,记住每个 docker 主机的 ip 地址
docker-machine ls
Step 3
创建三个目录 node1,node2,node3 在下一步会将主机的 node1,node2,node3 目录通过 –volume=nodex:/etcd-data 挂载到相应的 container。
使用 docker-machine ssh 登入三个 docker 主机
docker-machine ssh box0
Step 4
在三个 docker 主机上启动 etcd。
box0 主机上执行
docker run --rm --name etcd \
-p 2379:2379 \
-p 2380:2380 \
--volume=node1:/etcd-data \
quay.io/coreos/etcd \
/usr/local/bin/etcd \
--data-dir=/etcd-data --name node1 \
--initial-advertise-peer-urls http://192.168.99.106:2380 --listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://192.168.99.106:2379 --listen-client-urls http://0.0.0.0:2379 \
--initial-cluster-state new \
--initial-cluster-token docker-etcd \
--initial-cluster node1=http://192.168.99.106:2380,node2=http://192.168.99.107:2380,node3=http://192.168.99.108:2380
box1 主机上执行
docker run --rm --name etcd \
-p 2379:2379 \
-p 2380:2380 \
--volume=node2:/etcd-data \
quay.io/coreos/etcd \
/usr/local/bin/etcd \
--data-dir=/etcd-data --name node2 \
--initial-advertise-peer-urls http://192.168.99.107:2380 --listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://192.168.99.107:2379 --listen-client-urls http://0.0.0.0:2379 \
--initial-cluster-state new \
--initial-cluster-token docker-etcd \
--initial-cluster node1=http://192.168.99.106:2380,node2=http://192.168.99.107:2380,node3=http://192.168.99.108:2380
box2 主机上执行
docker run --rm --name etcd \
-p 2379:2379 \
-p 2380:2380 \
--volume=node3:/etcd-data \
quay.io/coreos/etcd \
/usr/local/bin/etcd \
--data-dir=/etcd-data --name node3 \
--initial-advertise-peer-urls http://192.168.99.108:2380 --listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://192.168.99.108:2379 --listen-client-urls http://0.0.0.0:2379 \
--initial-cluster-state new \
--initial-cluster-token docker-etcd \
--initial-cluster node1=http://192.168.99.106:2380,node2=http://192.168.99.107:2380,node3=http://192.168.99.108:2380
PS:将 ip 地址换成各自通过 docker-machine ls 命令看到的 ip
正常执行后应该通过 docker ps 能够看到
Step 5
查看集群成员状态
在任意一台 docker 主机上进入 docker 容器
docker exec -it 49a0eeb7e3df /bin/sh
执行 etcdctl member list 可查看到所有成员的状态
Step 6
确认
访问任何一台 docker 主机的 ip
curl http://192.168.99.106:2379/v2/members