004.etcd集群部署-動態發現


一 etcd發現簡介

1.1 需求背景

在實際環境中,集群成員的ip可能不會提前知道。如使用dhcp自動獲取的情況,在這些情況下,使用自動發現來引導etcdetcd集群,而不是指定靜態配置,這個過程被稱為“發現”。
  • etcd Discovery
使用已有的 etcd cluster 來注冊和啟動
  • DNS發現
使用 DNS 啟動。

1.2 實現機制

Discovery service protocol幫助新的etcd成員使用共享URL在集群引導階段發現所有其他成員。
該協議使用新的發現令牌來引導一個唯一的etcd集群。一個發現令牌只能代表一個etcd集群。只要此令牌上的發現協議啟動,即使它中途失敗,也不能用於引導另一個etcd集群。
提示:Discovery service protocol僅用於集群引導階段,不能用於運行時重新配置或集群監視。

1.3 協議工作流程

Discovery protocol是使用內部etcd集群來協調新集群的引導程序。首先,所有新成員都與發現服務交互,並幫助生成預期的成員列表。然后,每個新成員使用此列表引導其服務器,該列表執行與--initial-cluster標志相同的功能,即設置所有集群的成員信息。

二 集群部署-etcd自帶發現

2.1 環境准備

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
  4 # vi /etc/hosts
  5 #……
  6 172.24.8.71 etcd1.example.com
  7 172.24.8.72 etcd2.example.com
  8 172.24.8.73 etcd3.example.com
提示:CentOS6.x則修改/etc/sysconfig/network,以上為建議配置項。

2.2 安裝etcd

  1 # ETCD_VER=v3.3.9
  2 # GITHUB_URL=https://github.com/coreos/etcd/releases/download
  3 # DOWNLOAD_URL=${GITHUB_URL}
  4 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
  5 # rm -rf /tmp/etcd-download-test
  6 # mkdir -p /tmp/etcd-download-test		#創建下載保存目錄
  7 # curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
  8 # tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
  9 # cp /tmp/etcd-download-test/etcd /usr/local/bin/
 10 # cp /tmp/etcd-download-test/etcdctl /usr/local/bin/
 11 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
 12 
 13 # rm -rf /tmp/etcd-download-test/
 14 # ETCDCTL_API=3
 15 # etcd --version
 16 # etcdctl --version				#查看已安裝版本
提示:所有節點均需要安裝etcd。

2.3 啟動前准備

  1 # mkdir -p /var/log/etcd/			#建議創建etcd日志保存目錄
  2 # mkdir -p /data/etcd			#建議創建單獨的etcd數據目錄

2.4 創建集群發現

  1 [root@etcd1 ~]# curl https://discovery.etcd.io/new?size=3	#使用公共etcd發現服務
  2 https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8

提示:size為集群節點數量,若未指定數量,則默認位3。

2.5 啟動集群

  1 [root@etcd1 ~]# etcd --name etcd1 --data-dir /data/etcd \
  2 --initial-advertise-peer-urls http://172.24.8.71:2380 \
  3 --listen-peer-urls http://172.24.8.71:2380 \
  4 --listen-client-urls http://172.24.8.71:2379,http://127.0.0.1:2379 \
  5 --advertise-client-urls http://172.24.8.71:2379 \
  6 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
  7 
  8 [root@etcd2 ~]# etcd --name etcd2 --data-dir /data/etcd \
  9 --initial-advertise-peer-urls http://172.24.8.72:2380 \
 10 --listen-peer-urls http://172.24.8.72:2380 \
 11 --listen-client-urls http://172.24.8.72:2379,http://127.0.0.1:2379 \
 12 --advertise-client-urls http://172.24.8.72:2379 \
 13 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
 14 
 15 [root@etcd3 ~]# etcd --name etcd3 --data-dir /data/etcd \
 16 --initial-advertise-peer-urls http://172.24.8.73:2380 \
 17 --listen-peer-urls http://172.24.8.73:2380 \
 18 --listen-client-urls http://172.24.8.73:2379,http://127.0.0.1:2379 \
 19 --advertise-client-urls http://172.24.8.73:2379 \
 20 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
 
提示:每個成員必須指定不同的名稱標志,否則發現將因重復的名稱而失敗。

2.6 集群檢測

  1 [root@etcd1 ~]# etcdctl member list
  2 [root@etcd1 ~]# etcdctl cluster-health
 
14_thumb1

三 集群部署-DNS發現

參考官方文檔:

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md


免責聲明!

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



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