005.基於docker部署etcd集群部署


一 環境准備

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基礎配置

  1 # mkdir -p /var/log/etcd/			        #建議創建etcd日志保存目錄
  2 # mkdir -p /data/etcd				#建議創建單獨的etcd數據目錄
  3 # REGISTRY=gcr.io/etcd-development/etcd		#配置etcd鏡像的倉庫,不推薦使用
  4 # REGISTRY=quay.io/coreos/etcd			#建議使用此倉庫
  5 # ETCD_VERSION=latest				#設置etcd版本
  6 # TOKEN=my-etcd-01				        #設置唯一集群ID
  7 # CLUSTER_STATE=new				        #置為新建集群
  8 # NAME_1=etcd1
  9 # NAME_2=etcd2
 10 # NAME_3=etcd3					#設置三個節點的name
 11 # HOST_1=172.24.8.71
 12 # HOST_2=172.24.8.72
 13 # HOST_3=172.24.8.73				#設置三個節點的IP
 14 # CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380					                        #設置集群所有節點信息
 15 # DATA_DIR=/data/etcd				#設置集群etcd數據節點
 
提示:以上所有操作需要在所有節點操作。

2.3 啟動docker etcd集群

  1 [root@etcd1 ~]# THIS_NAME=${NAME_1}
  2 [root@etcd1 ~]# THIS_IP=${HOST_1}
  3 [root@etcd1 ~]# docker run \
  4   -p 2379:2379 \
  5   -p 2380:2380 \
  6   --volume=${DATA_DIR}:/etcd-data \
  7   --name etcd ${REGISTRY}:${ETCD_VERSION} \
  8   /usr/local/bin/etcd \
  9   --data-dir=/etcd-data --name ${THIS_NAME} \
 10   --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
 11   --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
 12   --initial-cluster ${CLUSTER} \
 13   --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
 14 
 15 [root@etcd2 ~]# THIS_NAME=${NAME_2}
 16 [root@etcd2 ~]# THIS_IP=${HOST_2}
 17 [root@etcd2 ~]# docker run \
 18   -p 2379:2379 \
 19   -p 2380:2380 \
 20   --volume=${DATA_DIR}:/etcd-data \
 21   --name etcd ${REGISTRY}:${ETCD_VERSION} \
 22   /usr/local/bin/etcd \
 23   --data-dir=/etcd-data --name ${THIS_NAME} \
 24   --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
 25   --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
 26   --initial-cluster ${CLUSTER} \
 27   --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
 28 
 29 [root@etcd3 ~]# THIS_NAME=${NAME_3}
 30 [root@etcd3 ~]# THIS_IP=${HOST_3}
 31 [root@etcd3 ~]# docker run \
 32   -p 2379:2379 \
 33   -p 2380:2380 \
 34   --volume=${DATA_DIR}:/etcd-data \
 35   --name etcd ${REGISTRY}:${ETCD_VERSION} \
 36   /usr/local/bin/etcd \
 37   --data-dir=/etcd-data --name ${THIS_NAME} \
 38   --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
 39   --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
 40   --initial-cluster ${CLUSTER} \
 41   --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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM