● –data-dir 指定節點的數據存儲目錄,若不指定,則默認是當前目錄。這些數據包括節點ID,集羣ID,集羣初始化配置,Snapshot文件,若未指 定–wal-dir,還會存儲WAL文件 html
● –wal-dir 指定節點的was文件存儲目錄,若指定了該參數,wal文件會和其餘數據文件分開存儲 vim
● –name 節點名稱 服務器
● –initial-advertise-peer-urls 告知集羣其餘節點的URL,tcp2380端口用於集羣通訊 app
● –listen-peer-urls 監聽URL,用於與其餘節點通信 tcp
● –advertise-client-urls 告知客戶端的URL, 也就是服務的URL,tcp2379端口用於監聽客戶端請求 ide
● –initial-cluster-token 集羣的ID url
● –initial-cluster 集羣中全部節點 spa
● –initial-cluster-state 集羣狀態,new爲新建立集羣,existing爲已存在的集羣orm
建立etcd高可用集羣:htm
kuberntes 系統使用 etcd 存儲全部數據,本文檔介紹部署一個三節點高可用 etcd 集羣的步驟,這三個節點複用 kubernetes master 機器
搭建etcd集羣須要注意的是etcd最少須要三臺才能發揮其高可用的功能,由於etcd集羣內部使用的是選舉制度,經過內部選舉一臺Leader,而若是當集羣內部主機少於三臺時,etcd的Leader選舉功能就出現問題,致使Leader選舉失敗,從而etcd不能正常與外界通信
yum -y install etcd
vim /etc/etcd/etcd.conf
#[Member]
ETCD_NAME="etcd1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://當前服務器IP:2380"
ETCD_LISTEN_CLIENT_URLS="http://當前服務器IP:2379,http://127.0.0.1:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://當前服務器IP:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://當前服務器IP:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.9:2380,etcd2=http://192.168.10.10:2380,etcd3=http://192.168.10.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
vim /usr/lib/systemd/system/etcd.service //修改etcd啓動文件
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
• 指定 etcd 的工做目錄爲 /var/lib/etcd,數據目錄爲 /var/lib/etcd,需在啓動服務前建立這兩個目錄;
• 注意三臺etcd的配置文件中ETCD_NAME的配置,這裏三臺分別設置的是etcd1、etcd2、etcd3。
啓動etcd服務:
待三臺etcd都搭建完成以後,可依次啓動(在etcd集羣中若是隻單獨啓動一臺etcd會出現報錯)
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl start etcd
[root@master01 ~]# systemctl enable etcd
驗證etcd是否正確啓動:
[root@test ~]# etcdctl cluster-health
member 8c632555af4d958d is healthy: got healthy result from http://192.168.10.10:2379
member bc34c6bd673bdf9f is healthy: got healthy result from http://192.168.10.11:2379
member ec065b41856af137 is healthy: got healthy result from http://192.168.10.9:2379
cluster is healthy
[root@test ~]#集羣啓動正常
添加證書後的集羣驗證
export ETCDCTL_API=3
etcdctl --cacert=/etc/etcd/ssl/etcd-root-ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem --endpoints=https://192.168.10.9:2379,https://192.168.10.10:2379,https://192.168.10.11:2379 cluster-health
特別提醒:使用前,務必設置環境變量 ETCDCTL_API=3
在 /etc/profile 中加入如下內容:
export ETCDCTL_API=3
注意:若是不設置 ETCDCTL_API=3,則默認是的API版本是2: