etcd高可用集羣

ETCD參數說明: 

● –data-dir 指定節點的數據存儲目錄,若不指定,則默認是當前目錄。這些數據包括節點ID,集羣ID,集羣初始化配置,Snapshot文件,若未指 定–wal-dir,還會存儲WAL文件 

● –wal-dir 指定節點的was文件存儲目錄,若指定了該參數,wal文件會和其他數據文件分開存儲 

● –name 節點名稱 

● –initial-advertise-peer-urls 告知集羣其他節點的URL,tcp2380端口用於集羣通信 

● –listen-peer-urls 監聽URL,用於與其他節點通訊 

● –advertise-client-urls 告知客戶端的URL, 也就是服務的URL,tcp2379端口用於監聽客戶端請求 

● –initial-cluster-token 集羣的ID 

● –initial-cluster 集羣中所有節點 

● –initial-cluster-state 集羣狀態,new爲新創建集羣,existing爲已存在的集羣


創建etcd高可用集羣:

kuberntes 系統使用 etcd 存儲所有數據,本文檔介紹部署一個三節點高可用 etcd 集羣的步驟,這三個節點複用 kubernetes master 機器

搭建etcd集羣需要注意的是etcd最少需要三臺才能發揮其高可用的功能,因爲etcd集羣內部使用的是選舉制度,通過內部選舉一臺Leader,而如果當集羣內部主機少於三臺時,etcdLeader選舉功能就出現問題,導致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"

ETCD TLS 配置的坑Etcd 各個節點間必須保證時鐘同步,否則會造成啓動失敗等錯誤

 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的配置,這裏三臺分別設置的是etcd1etcd2etcd3

啓動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:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章