Etcd集羣搭建

要: Etcd集羣搭建 環境信息 主機1 主機2 主機3 10.25.72.164 10.25.72.233 10.25.73.196 安裝etcd yum install -y etcd 安裝etcd 配置第一臺 編輯etcd配置文件 vim /etc/etcd/etcd.

Etcd集羣搭建

環境信息

主機1 主機2 主機3
10.25.72.164 10.25.72.233 10.25.73.196

安裝etcd

yum install -y etcd 安裝etcd

配置第一臺

編輯etcd配置文件

vim /etc/etcd/etcd.conf

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  #etcd數據保存目錄
ETCD_LISTEN_CLIENT_URLS="http://10.25.72.164:2379,http://localhost:2379"  #供外部客戶端使用的url
ETCD_ADVERTISE_CLIENT_URLS="http://10.25.72.164:2379,http://localhost:2379" #廣播給外部客戶端使用的url
ETCD_NAME="etcd1"   #etcd實例名稱

ETCD_LISTEN_PEER_URLS="http://10.25.72.164:2380"  #集羣內部通信使用的URL
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.25.72.164:2380"  #廣播給集羣內其他成員訪問的URL
ETCD_INITIAL_CLUSTER="etcd1=http://10.25.72.164:2380,etcd2=http://10.25.72.233:2380,etcd3=http://10.25.73.196:2380"    #初始集羣成員列表
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" #集羣的名稱
ETCD_INITIAL_CLUSTER_STATE="new"  #初始集羣狀態,new爲新建集羣

然後執行systemctl start etcd啓動etcd進程

其他兩臺

etcd2和etcd3爲加入etcd-cluster集羣的實例,需要將其ETCD_INITIAL_CLUSTER_STATE設置爲"exist"

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  
ETCD_LISTEN_CLIENT_URLS="http://10.25.72.233:2379,http://localhost:2379"  
ETCD_ADVERTISE_CLIENT_URLS="http://10.25.72.233:2379,http://localhost:2379" 
ETCD_NAME="etcd2"  

ETCD_LISTEN_PEER_URLS="http://10.25.72.233:2380" 
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.25.72.233:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://10.25.72.164:2380,etcd2=http://10.25.72.233:2380,etcd3=http://10.25.73.196:2380"  
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="exist"  

搭建完畢,可以查看集羣節點來確定有沒有搭建成功

[root@SZD-L0110301 default.etcd]# etcdctl member list
4536e7d0bdb3b43c: name=etcd3 peerURLs=http://10.25.73.196:2380 clientURLs=http://10.25.73.196:2379,http://localhost:2379 isLeader=false
c441e6c11a47ff3d: name=etcd1 peerURLs=http://10.25.72.164:2380 clientURLs=http://10.25.72.164:2379,http://localhost:2379 isLeader=true
ddc007546c89f163: name=etcd2 peerURLs=http://10.25.72.223:2380 clientURLs=http://10.25.72.223:2379,http://localhost:2379 isLeader=false

Etcd使用

集羣數據操作命令

設鍵值

[root@SZD-L0110301 default.etcd]# etcdctl set /testdir/testkey "hello world"
hello world
  • key存在的方式和zookeeper類似,爲 /路徑/key
  • 設置完之後,其他集羣也可以查詢到該值
  • 如果dirkey不存在,該命令會創建對應的項

查看鍵值

切換到另外一個節點

[root@SZD-L0110303 etcd]# etcdctl get /testdir/testkey
hello world

不存在的時候會報錯

更新

當鍵不存在時,會報錯

[root@SZD-L0110303 etcd]# etcdctl update /testdir/testkey "hello bruce"
hello bruce

刪除

[root@SZD-L0110303 etcd]# etcdctl rm /testdir/testkey
PrevNode.Value: hello bruce

更多的操作命令省略,可以見help

查看API的版本

[root@SZD-L0072834 ~]# etcdctl -version
etcdctl version: 3.1.10
API version: 2

切換API版本

export ETCDCTL_API=3

集羣管理命令

查看API的版本

[root@SZD-L0072834 ~]# etcdctl -version
etcdctl version: 3.1.10
API version: 2

切換API版本

export ETCDCTL_API=3

查看集羣健康狀態

[root@SZD-L0110301 default.etcd]# etcdctl cluster-health
member 4536e7d0bdb3b43c is healthy: got healthy result from http://10.25.73.196:2379
member c441e6c11a47ff3d is healthy: got healthy result from http://10.25.72.164:2379
member ddc007546c89f163 is healthy: got healthy result from http://10.25.72.223:2379
cluster is healthy

backup

備份 etcd 的數據,參數有:

--data-dir etcd 的數據目錄

--backup-dir 備份到指定路徑

watch

監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值並退出。

[root@SZD-L0110301 default.etcd]# etcdctl watch /testdir/testkey
hello bruce
[root@SZD-L0110303 etcd]# etcdctl update /testdir/testkey "hello bruce"
  • 在第二個節點update之後,第一個watch的纔有結果輸出
  • watch會直接退出,如果不想退出可以設置 --forever參數, 這樣就會一直監測,直到用戶按 CTRL+C 退出

exec-watch

監測一個鍵值的變化,一旦鍵值發生更新,就執行給定命令。

[root@SZD-L0110301 default.etcd]# etcdctl exec-watch /testdir/testkey -- sh -c 'ls'
member

版權聲明:本文內容由互聯網用戶自發貢獻,版權歸作者所有,本社區不擁有所有權,也不承擔相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:[email protected] 進行舉報,並提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。

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