1. 程式人生 > >004.etcd叢集部署-發現

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 [[email protected] ~]# curl https://discovery.etcd.io/new?size=3	#使用公共etcd發現服務
  2 https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
  提示:size為叢集節點數量,若未指定數量,則預設位3。

2.5 啟動叢集

  1 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# etcdctl member list
  2 [[email protected] ~]# etcdctl cluster-health
  14

三 叢集部署-DNS發現