一 etcd發現簡介 1.1 需求背景 在實際環境中,集群成員的ip可能不會提前知道。如使用dhcp自動獲取的情況,在這些情況下,使用自動發現來引導etcdetcd集群,而不是指定靜態配置,這個過程被稱為“發現”。 etcd Discovery 使用已有的 etcd cluster 來註冊和啟動 D ...
一 etcd發現簡介
1.1 需求背景
在實際環境中,集群成員的ip可能不會提前知道。如使用dhcp自動獲取的情況,在這些情況下,使用自動發現來引導etcdetcd集群,而不是指定靜態配置,這個過程被稱為“發現”。- etcd Discovery
- 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:關閉防火牆和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 [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
三 集群部署-DNS發現
略參考官方文檔:
https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md