etcd集群部署


  etcd集群有兩種啟動方式 — 靜態配置、服務發現。其中服務發現又包含etcd自發現和DNS自發現兩種模式,本文首先簡單介紹一下這兩種集群啟動方式,然后以靜態配置為例,進行實踐,講解etcd集群的部署過程。
 
 
etcd集群的部署方式
1. 靜態配置
  比較適用於線下環境,集群節點個數已知,各節點地址也已知的情況。一旦集群啟動后,后續“--initial-cluster”參數的更新將會被忽略。
  同一個集群各個節點的配置參數需要保持相同。
2. 服務發現
(1)etcd自發現模式
  新集群的每個etcd節點通過現有的etcd集群進行自注冊,一旦所有的member都注冊完成,就組成了一個新集群。
  新集群節點啟動時使用參數 --discovery 指定服務發現URL,這個URL可以是你自己現有的etcd集群節點地址,也可以使用etcd公共的服務發現,但首先需要先設置集群的節點數量。以etcd公共的服務發現為例,設置集群大小為3:
curl https://discovery.etcd.io/new?size=3
此請求會返回一個服務發現URL,假設其為:https://discovery.etcd.io/cce153802aeb2adc70eb142c2e5ccf92,則新集群節點啟動設置參數為:

--discovery https://discovery.etcd.io/cce153802aeb2adc70eb142c2e5ccf92
另外,同一個集群的每個節點都必須使用參數 --name 設置一個唯一標識自己的名稱,否則服務發現會因為重名而失敗。
(3)DNS自發現模式
  etcd還支持使用DNS的SRV記錄進行服務發現,啟動集群。此方式需要先在DNS服務器上進行相應的配置,然后在etcd集群節點啟動時使用參數 --discovery-srv 指定DNS服務器域名。
 
 
靜態配置部署etcd集群
  接下來使用靜態配置的方式進行實踐,部署一個三節點的etcd集群。三個節點名稱與ip分別如下:
etcd01:192.168.3.102
etcd02:192.168.3.105
etcd03:192.168.3.103
對每個節點都按如下步驟進行部署。
 
1. 下載安裝包
這里下載最新版本:v3.5.0
 
2. 解壓
tar -zxvf etcd-v3.5.0-linux-amd64.tar.gz
解壓后將文件夾改名為 etcd,放在 /usr/local/ 目錄下。
 
3. 創建數據存儲目錄
mkdir /usr/local/etcd/data

解壓后將文件夾改名為 etcd,放在 /usr/local/ 目錄下。

 
4. 設置配置文件
創建配置文件 /usr/local/etcd/conf.yml,三個節點配置文件內容分別如下:
(1)etcd01:192.168.3.102
name: etcd01
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: http://192.168.3.102:2380
listen-peer-urls: http://192.168.3.102:2380
listen-client-urls: http://192.168.3.102:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.3.102:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
initial-cluster-state: new
(2)etcd02:192.168.3.105
name: etcd02
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: http://192.168.3.105:2380
listen-peer-urls: http://192.168.3.105:2380
listen-client-urls: http://192.168.3.105:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.3.105:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
initial-cluster-state: new
(3)etcd03:192.168.3.103
name: etcd03
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: http://192.168.3.103:2380
listen-peer-urls: http://192.168.3.103:2380
listen-client-urls: http://192.168.3.103:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.3.103:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=http://192.168.3.102:2380,etcd02=http://192.168.3.105:2380,etcd03=http://192.168.3.103:2380
initial-cluster-state: new
配置參數解析:
name:當前etcd節點名稱。
data-dir:數據存儲目錄。
initial-advertise-peer-urls:集群的其他節點通過該地址與當前節點通信。
listen-peer-urls:當前節點通過該地址監聽集群其他節點發送的信息。
listen-client-urls:當前節點通過該地址監聽客戶端發送的信息。
advertise-client-urls:客戶端通過該地址與當前節點通信
initial-cluster-token:用於區分不同的集群,同一集群的所有節點配置相同的值。
initial-cluster:當前集群的所有節點信息,當前節點根據此信息與其他節點取得聯系。
initial-cluster-state: 本次是否為新建集群,有兩個取值:new和existing。
 
5. 開放端口
etcd server默認使用2379端口監聽客戶端的請求,使用2380端口監聽其他server的請求。本文配置使用的也是2379和2380兩個端口。
(1)開放 2379 和 2380 兩個端口:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
(2)重啟防火牆:
firewall-cmd --reload
(3)驗證端口是否開放成功:
firewall-cmd --zone=public --query-port=2379/tcp
firewall-cmd --zone=public --query-port=2380/tcp
 
6. 配置服務
(1)創建服務配置文件 /usr/lib/systemd/system/etcd.service,內容如下:
[Unit]
Description=etcd
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/etcd/etcd --config-file=/usr/local/etcd/conf.yml

[Install]
WantedBy=multi-user.target
(2)啟動服務:
systemctl daemon-reload
systemctl start etcd.service
(3)查看服務是否啟動成功:
systemctl status etcd.service
(4)設置服務為開機自啟動:
systemctl enable etcd.service
 
7. 驗證
(1)將 etcdctl 二進制文件復制到 /usr/local/bin/ 目錄下,方便執行命令:
cp /usr/local/etcd/etcdctl /usr/local/bin/
(2)查看集群成員列表:
(3)查看集群成員健康情況:
(4)查看etcd版本
可使用 etcd 二進制進行查看,也可執行 etcdctl 進行查看,其中etcd二進制支持離線查看。
(5)在其中一個節點設置一個key-value,到其他節點查看。
 
8. 開啟鑒權
(1)添加root用戶
在開啟鑒權之前必須先創建root用戶,否則無法啟用身份認證功能。
etcd默認創建root用戶時即創建了root角色,並為其綁定了該角色,該角色擁有所有權限。
(2)開啟鑒權
(3)驗證
開啟鑒權后,客戶端請求etcd server需要使用選項 --user 帶上用戶名和密碼,否則會報錯。
 
 
 


免責聲明!

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



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