etcd集群的部署和添加刪除節(jié)點

簡介

etcd是一種高可用的、分布式數據庫,以鍵值對的方式存儲數據。在kubernetes環(huán)境里,用戶在master所做的一切比如創(chuàng)建pod、刪除pod等操作都記錄在etcd里,所安裝的flannel或者calico網絡的配置也保存在etcd數據庫里。

主機清單

角色 主機
etcd1 172.16.210.53
etcd2 172.16.210.54
etcd3 172.16.210.55

部署etcd

三臺主機提前寫入hosts,關閉防火墻,selinux

1.所有節(jié)點安裝etcd

yum install -y etcd

2.編輯etcd1主機的配置文件

[root@etcd1 ~]# cd /etc/etcd/
[root@etcd1 etcd]# vim etcd.conf 
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.210.53:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.210.53:2379,http://localhost:2379"
ETCD_NAME="etcd1"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.210.53:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.210.53:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://172.16.210.53:2380,etcd2=http://172.16.210.54:2380,etcd3=http://172.16.210.55:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

參數詳解

ETCD_NAME 節(jié)點名稱,默認為default
ETCD_DATA_DIR 服務運行數據保存的路徑
ETCD_LISTEN_PEER_URLS 監(jiān)聽的同伴通信的地址,比如http://ip:2380,如果有多個,使用逗號分隔。需
要所有節(jié)點都能夠訪問,所以不要使用 localhost!
ETCD_LISTEN_CLIENT_URLS 監(jiān)聽的客戶端服務地址
ETCD_ADVERTISE_CLIENT_URLS 對外公告的該節(jié)點客戶端監(jiān)聽地址,這個值會告訴集群中其他節(jié)點。
ETCD_INITIAL_ADVERTISE_PEER_URLS 對外公告的該節(jié)點同伴監(jiān)聽地址,這個值會告訴集群中其他節(jié)點
ETCD_INITIAL_CLUSTER 集群中所有節(jié)點的信息,格式為
ETCD_INITIAL_CLUSTER_STATE 新建集群的時候,這個值為 new;假如加入已經存在的集群,這個值為
existing。
ETCD_INITIAL_CLUSTER_TOKEN 集群的ID,多個集群的時候,每個集群的ID必須保持唯一

3.拷貝配置文件到其他兩個節(jié)點

[root@etcd1 etcd]# scp etcd.conf 172.16.210.54:/etc/etcd/
[root@etcd1 etcd]# scp etcd.conf 172.16.210.55:/etc/etcd/

4.修改其他兩個節(jié)點的配置文件

[root@etcd2 etcd]# vim etcd.conf ####修改etcd節(jié)點名稱和監(jiān)聽的地址,其他參數保持不變
ETCD_LISTEN_PEER_URLS="http://172.16.210.54:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.210.54:2379,http://localhost:2379"
ETCD_NAME="etcd2"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.210.54:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.210.54:2379,http://localhost:2379"
[root@etcd3 etcd]# vim etcd.conf
ETCD_LISTEN_PEER_URLS="http://172.16.210.55:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.210.55:2379,http://localhost:2379"
ETCD_NAME="etcd3"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.210.55:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.210.55:2379,http://localhost:2379"

5.重啟3個節(jié)點的etcd

systemctl restart etcd

6.查看節(jié)點狀態(tài)

[root@etcd1 etcd]# etcdctl member list ##可以看到3個節(jié)點都已經加入進來
1e986f07f84e3d22: name=etcd3 peerURLs=http://172.16.210.55:2380 clientURLs=http://172.16.210.55:2379,http://localhost:2379 isLeader=true
78ce7c84d3112610: name=etcd1 peerURLs=http://172.16.210.53:2380 clientURLs=http://172.16.210.53:2379,http://localhost:2379 isLeader=false
91c3d42e32b4b5fe: name=etcd2 peerURLs=http://172.16.210.54:2380 clientURLs=http://172.16.210.54:2379,http://localhost:2379 isLeader=false 

7.測試同步性

在節(jié)點1創(chuàng)建目錄

[root@etcd1 ~]# etcdctl mkdir /aaa

在其他節(jié)點查看

[root@etcd2 ~]# etcdctl ls /
/aaa
[root@etcd3 ~]# etcdctl ls /
/aaa

可以看到在etcd1上創(chuàng)的目錄可以在其他節(jié)點查看到,注意這個/aaa 目錄不是系統(tǒng)的目錄,是etcd數據庫的目錄

8.增加一個節(jié)點

8.1 4臺節(jié)點同步hosts映射

[root@etcd1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.210.53 etcd1
172.16.210.54 etcd2
172.16.210.55 etcd3
172.16.210.56 etcd4

8.2 在第4個節(jié)點安裝etcd

[root@etcd4 ~]# yum install -y etcd

8.3 拷貝配置文件到第4個節(jié)點

[root@etcd1 ~]#scp /etc/etcd/etcd.conf 172.16.210.56:/etc/etcd/

8.4 修改配置文件

[root@etcd4 ~]# vim /etc/etcd/etcd.conf 
TCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://172.16.210.56:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.16.210.56:2379,http://localhost:2379"
ETCD_NAME="etcd4"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.210.56:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.210.56:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://172.16.210.53:2380,etcd2=http://172.16.210.54:2380,etcd3=http://172.16.210.55:2380,etcd4=http://172.16.210.56:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="existing"

8.5 重啟etcd

[root@etcd4 ~]# systemctl restart etcd ##有報錯可以先不用管
Job for etcd.service failed because the control process exited with error code. See "systemctl status etcd.service" and "journalctl -xe" for details.

8.6在節(jié)點1把節(jié)點4添加進來

[root@etcd1 ~]# etcdctl member add etcd4 http://172.16.210.56:2380

8.7回到節(jié)點4再次重啟etcd

[root@etcd4 ~]# systemctl restart etcd

8.8再次查看節(jié)點狀態(tài)

[root@etcd1 ~]# etcdctl member list ##可以看到etcd4節(jié)點已經加入進來
235ef0a0ac7f415: name=etcd4 peerURLs=http://172.16.210.56:2380 clientURLs=http://172.16.210.56:2379,http://localhost:2379 isLeader=false
1e986f07f84e3d22: name=etcd3 peerURLs=http://172.16.210.55:2380 clientURLs=http://172.16.210.55:2379,http://localhost:2379 isLeader=true
78ce7c84d3112610: name=etcd1 peerURLs=http://172.16.210.53:2380 clientURLs=http://172.16.210.53:2379,http://localhost:2379 isLeader=false
91c3d42e32b4b5fe: name=etcd2 peerURLs=http://172.16.210.54:2380 clientURLs=http://172.16.210.54:2379,http://localhost:2379 isLeader=false

9.刪除節(jié)點

命令格式 etcdctl member remove 節(jié)點id

[root@etcd1 ~]# etcdctl member remove 235ef0a0ac7f415 
Removed member 235ef0a0ac7f415 from cluster
[root@etcd1 ~]# etcdctl member list ##可以看到節(jié)點4就已經被刪除了
1e986f07f84e3d22: name=etcd3 peerURLs=http://172.16.210.55:2380 clientURLs=http://172.16.210.55:2379,http://localhost:2379 isLeader=true
78ce7c84d3112610: name=etcd1 peerURLs=http://172.16.210.53:2380 clientURLs=http://172.16.210.53:2379,http://localhost:2379 isLeader=false
91c3d42e32b4b5fe: name=etcd2 peerURLs=http://172.16.210.54:2380 clientURLs=http://172.16.210.54:2379,http://localhost:2379 isLeader=false

如果還需要再把節(jié)點添加進來.必須要要刪除節(jié)點的數據目錄

[root@etcd4 ~]#  rm -rf /var/lib/etcd/cluster.etcd/

然后在節(jié)點1把節(jié)點4添加進來

[root@etcd1 ~]# etcdctl member add etcd4 http://172.16.210.56:2380

重啟節(jié)點4的etcd并查看節(jié)點狀態(tài)

[root@etcd4 ~]# systemctl restart etcd
[root@etcd4 ~]#  etcdctl member list ##可以看到節(jié)點4已經重新加入進來
1e986f07f84e3d22: name=etcd3 peerURLs=http://172.16.210.55:2380 clientURLs=http://172.16.210.55:2379,http://localhost:2379 isLeader=true
630cc3da6c62df70: name=etcd4 peerURLs=http://172.16.210.56:2380 clientURLs=http://172.16.210.56:2379,http://localhost:2379 isLeader=false
78ce7c84d3112610: name=etcd1 peerURLs=http://172.16.210.53:2380 clientURLs=http://172.16.210.53:2379,http://localhost:2379 isLeader=false
91c3d42e32b4b5fe: name=etcd2 peerURLs=http://172.16.210.54:2380 clientURLs=http://172.16.210.54:2379,http://localhost:2379 isLeader=false

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容