采用docker部署之前,需要先检查系统是否安装了docker,没安装可自行安装后再做下面的操作。
环境
系统版本:CentOS 7.6 64bit
docker版本:1.13.1
etcd容器版本:3.5.0
服务器信息:172.16.0.17(etcd1),172.16.0.2(etcd2),172.16.0.3(etcd3)
镜像
此处选取的镜像是quay.io/coreos/etcd:v3.5.0,可先使用下面的命令拉取到本地:
docker pull quay.io/coreos/etcd:v3.5.0
当然,也可以直接在创建etcd的docker容器的时候拉取。
命令
1.创建目录:在三台机器分别执行mkdir -p var/etcd创建目录
2.创建容器:在三台机器分别执行如下命令创建容器(主要是IP不一样)
a.172.16.0.17机器
docker run --restart=always --net host -it --name etcd1 -d \
-p 2379:2379 \
-p 2380:2380 \
-v var/etcd:/var/etcd \
-v etc/localtime:/etc/localtime \
quay.io/coreos/etcd:v3.5.0 \
etcd --name etcd-s1 \
--auto-compaction-retention=1 --max-request-bytes=33554432 --quota-backend-bytes=8589934592 \
--data-dir=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.0.17:2380 \
--advertise-client-urls http://172.16.0.17:2379,http://172.16.0.17:2380 \
--initial-cluster-state new \
--initial-cluster-token etcd-cluster \
--initial-cluster "etcd-s1=http://172.16.0.17:2380,etcd-s2=http://172.16.0.2:2380,etcd-s3=http://172.16.0.3:2380"
b.172.16.0.2机器
docker run --restart=always --net host -it --name etcd2 -d \
-p 2379:2379 \
-p 2380:2380 \
-v var/etcd:/var/etcd \
-v etc/localtime:/etc/localtime \
quay.io/coreos/etcd:v3.5.0 \
etcd --name etcd-s2 \
--auto-compaction-retention=1 --max-request-bytes=33554432 --quota-backend-bytes=8589934592 \
--data-dir=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.0.2:2380 \
--advertise-client-urls http://172.16.0.2:2379,http://172.16.0.2:2380 \
--initial-cluster-state new \
--initial-cluster-token etcd-cluster \
--initial-cluster "etcd-s1=http://172.16.0.17:2380,etcd-s2=http://172.16.0.2:2380,etcd-s3=http://172.16.0.3:2380"
c.172.16.0.3机器
docker run --restart=always --net host -it --name etcd3 -d \
-p 2379:2379 \
-p 2380:2380 \
-v var/etcd:/var/etcd \
-v etc/localtime:/etc/localtime \
quay.io/coreos/etcd:v3.5.0 \
etcd --name etcd-s3 \
--auto-compaction-retention=1 --max-request-bytes=33554432 --quota-backend-bytes=8589934592 \
--data-dir=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.0.3:2380 \
--advertise-client-urls http://172.16.0.3:2379,http://172.16.0.3:2380 \
--initial-cluster-state new \
--initial-cluster-token etcd-cluster \
--initial-cluster "etcd-s1=http://172.16.0.17:2380,etcd-s2=http://172.16.0.2:2380,etcd-s3=http://172.16.0.3:2380"
检查
1.查看容器:执行创建容器的命令后,执行docker ps可查看容器运行状况
2.查看集群:可进入任意一台机器,执行etcdctl member list查看集群信息
效果

测试
在一台机器执行etcdctl put abc 123:

在另一台机器执行etcdctl get abc,即可发现能获取到数据:





