基于docker部署etcd集群部署

目录

  • 一 环境准备
  • 二 docker etcd集群部署
    • 2.1 安装docker
    • 2.2 etcd基础配置
    • 2.3 启动docker etcd集群
    • 2.4 确认验证

 


回到顶部

一 环境准备

ntp配置:略 #建议配置ntp服务,保证时间一致性

etcd版本:v3.3.9

防火墙及SELinux:关闭防火墙和SELinux

名称

地址

主机名

备注

etcd1

172.24.8.71

etcd1.example.com

 

etcd2

172.24.8.72

etcd2.example.com

 

etcd3

172.24.8.73

etcd3.example.com

 
  1 # hostnamectl set-hostname etcd1.example.com
  2 # hostnamectl set-hostname etcd2.example.com
  3 # hostnamectl set-hostname etcd3.example.com

 

回到顶部

二 docker etcd集群部署

2.1 安装docker

见《docker版本及安装》。

2.2 etcd基础配置

# mkdir -p /var/log/etcd/                    #建议创建etcd日志保存目录
# mkdir -p /data/etcd                #建议创建单独的etcd数据目录
# REGISTRY=gcr.io/etcd-development/etcd        #配置etcd镜像的仓库,不推荐使用
# REGISTRY=quay.io/coreos/etcd            #建议使用此仓库
# ETCD_VERSION=latest                #设置etcd版本
# TOKEN=my-etcd-01                        #设置唯一集群ID
# CLUSTER_STATE=new                        #置为新建集群
# NAME_1=etcd1
# NAME_2=etcd2
# NAME_3=etcd3                    #设置三个节点的name
# HOST_1=172.24.8.71
# HOST_2=172.24.8.72
# HOST_3=172.24.8.73                #设置三个节点的IP
# CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380                                            #设置集群所有节点信息
# DATA_DIR=/data/etcd                #设置集群etcd数据节点

 

提示:以上所有操作需要在所有节点操作。

2.3 启动docker etcd集群

[root@etcd1 ~]# THIS_NAME=${NAME_1}
[root@etcd1 ~]# THIS_IP=${HOST_1}
[root@etcd1 ~]# docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

[root@etcd2 ~]# THIS_NAME=${NAME_2}
[root@etcd2 ~]# THIS_IP=${HOST_2}
[root@etcd2 ~]# docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

[root@etcd3 ~]# THIS_NAME=${NAME_3}
[root@etcd3 ~]# THIS_IP=${HOST_3}
[root@etcd3 ~]# docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

 

提示:quay.io/coreos/etcd镜像国内可能无法pull,可在国外节点pull,然后scp至集群节点。

2.4 确认验证

  1 [root@etcd1 ~]# docker ps

15

  1 [root@etcd2 ~]# docker ps

16

  1 [root@etcd3 ~]# docker ps

17

  1 [root@etcd1 ~]# docker exec -it 21e6cf6e5e89 /usr/local/bin/etcdctl cluster-health

18

  1 [root@etcd1 ~]# netstat -nltp | grep 2380

19

你可能感兴趣的:(docker)