confd和etcd 的安裝與使用

2021-10-24 03:01:44 字數 3582 閱讀 5994

當系統變的複雜,配置項越來越多,一方面配置管理變得繁瑣,另一方面配置修改後需要重新上線同樣十分痛苦。這時候,需要有一套集中化配置管理系統,一方面提供統一的配置管理,另一方面提供配置變更的自動下發,及時生效。

上述的集中配置中心使用的時候,部署圖大致是這樣的:

server端只需要呼叫config-server對應客戶端獲取配置,和監聽配置變更就可以了。總體來說沒有太大難度。

接下來要說一下confd,它提供了一種新的整合思路。confd的存在有點類似於快遞員,買了東西不需要自己到店去取貨了,confd這個快遞員回把貨取過來,然後送到家裡,並且通知你貨已經送到了。加入confd之後的架構大致是這樣的:

confd使用時有幾個概念需要熟悉,並且熟悉他們之間的依賴關係,才能理解如何配置confd,不然會比較懵。這裡我們先看一下confd配置的幾個概念之間是如何互動的:

以下linux系統為例。

# 安裝wget

[root@master01 ~

]# yum -y install wget

# 檢視wget是否安裝成功

# 重新命名二進位制檔案,並移動到path的目錄下

mv confd-

0.16

.0-linux-amd64 /usr/local/bin/confd

chmod +x /usr/local/bin/confd

# 驗證是否安裝成功

confd --help

confd通過讀取後端儲存的配置資訊來動態更新對應的配置檔案,對應的後端儲存可以是etcd,redis等,其中etcd的v3版本對應的儲存後端為etcdv3

confdir底下包含兩個目錄:

sudo mkdir -p /etc/confd/
模板源配置檔案是toml格式的檔案,主要包含配置的生成邏輯,例如模板源,後端儲存對應的keys,命令執行等。預設目錄在/etc/confd/conf.d。引數說明:

必要引數

可選引數

例子

[template]

prefix =

src =

"nginx.tmpl"

dest =

owner =

"nginx"

mode =

"0644"

keys =

["/services/web"

]check_cmd =

"/usr/sbin/nginx -t -c }"

reload_cmd =

"/usr/sbin/service nginx reload"

template定義了單一應用配置的模板,預設儲存在/etc/confd/templates目錄下,模板檔案符合go的text/template格式。

模板檔案常用函式有basegetgetslsdirjson等。具體可參考

例子:/etc/confd/templates/nginx.tmpl

}upstream }}

} server }}

:80;}

} server

}.example.com;

location /};}}}

以etcdv3儲存為例,在etcd中建立以下資料。

etcdctl --endpoints=$endpoints set /services/web/cust1/2''

etcdctl --endpoints=$endpoints set /services/web/cust2/2''

etcdctl --endpoints=$endpoints set /services/web/cust2/1''

etcdctl --endpoints=$endpoints set /services/web/cust1/

1''

confd支援以daemon或者onetime兩種模式執行,當以daemon模式執行時,confd會監聽後端儲存的配置變化,並根據配置模板動態生成目標配置檔案。

如果以daemon模式執行,則執行以下命令:

以onetime模式執行。其中對應的後端儲存型別是etcdv3。

這塊作者遇到了個問題,etcdv3獲取不到資料,檔案正確建立出來裡面無內容,使用etcd正常獲取資料。

# 執行命令

以定時機制執行。只要伺服器端的資料變化,客戶端隔60秒後去更新配置檔案,預設值是600秒

}confd環境和伺服器儲存環境搭建好後,以daemon模式或定時機制執行confd,就可以實現。

etcd在生產環境中一般推薦集群方式部署。我這邊主要是進行confd和etcd的結合使用etcd是單機安裝

#通過yum源安裝etcd

yum -y install etcd

#啟動etcd服務

systemctl start etcd

#檢視啟動狀態

systemctl status etcd

pyenv virtualenv 的安裝與使用

1 安裝pyenv 建立安裝目錄 mkdir pyenvgit clone pyenv git clone pyenv plugins pyenv virtualenvecho export pyenv root home pyenv bash profile echo export path py...

Spotlight on Unix 的安裝與使用

1.本文背景 直接點選 next 按鈕,切換到選擇安裝路徑介面 選擇安裝路徑,點選 next 按鈕,切換到安裝許可協議介面 選擇同意,點選 next 按鈕,切換到安裝資訊檢查介面 確認無誤後點選 next 按鈕,開始安裝 spotlight 到電腦 安裝結束後提示安裝成功 點選 finish 按鈕結...

etcd的安裝與命令列使用

etcd是coreos團隊於2013年6月發起的乙個開源專案,它是乙個優秀的高可用分布式鍵值對儲存資料庫。etcd內部採用了raft協議作為一致性演算法,且使用go實現。wget 其中3.3.25為etcd的版本號,目前etcd主要有v2和v3兩個大版本。我們也可以將版本號改為更早的版本,可以在位址...