004.etcd叢集部署-發現
阿新 • • 發佈:2018-11-07
一 etcd發現簡介
1.1 需求背景
在實際環境中,叢集成員的ip可能不會提前知道。如使用dhcp自動獲取的情況,在這些情況下,使用自動發現來引導etcdetcd叢集,而不是指定靜態配置,這個過程被稱為“發現”。- etcd Discovery
- DNS發現
1.2 實現機制
Discovery service protocol幫助新的etcd成員使用共享URL在叢集引導階段發現所有其他成員。 該協議使用新的發現令牌來引導一個唯一的etcd叢集。一個發現令牌只能代表一個etcd叢集。只要此令牌上的發現協議啟動,即使它中途失敗,也不能用於引導另一個etcd叢集。1.3 協議工作流程
Discovery protocol是使用內部etcd叢集來協調新叢集的載入程式。首先,所有新成員都與發現服務互動,並幫助生成預期的成員列表。然後,每個新成員使用此列表引導其伺服器,該列表執行與--initial-cluster標誌相同的功能,即設定所有叢集的成員資訊。二 叢集部署-etcd自帶發現
2.1 環境準備
ntp配置:略 #建議配置ntp服務,保證時間一致性 etcd版本:v3.3.9 防火牆及SELinux:關閉防火牆和SELinux1 # 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