confd confd etcd實現高可用自動發現

2021-10-12 15:57:45 字數 2467 閱讀 2411

confd是什麼

confd是乙個輕量級的配置管理工具。

通過查詢後端儲存,結合配置模板引擎,保持本地配置最新,同時具備定期探測機制,配置變更自動reload。

對應的後端儲存可以是etcd,redis、zookeeper等等

我們以etcd為後端來演示confd的使用,用最簡單粗暴的方式教大家學會動態生成配置

一.執行etcd

etcd -listen-client-urls="" --advertise-client-urls="" &

二.安裝confd

wget

# 安裝

mv confd-0.16.0-linux-amd64 /usr/local/bin/confd

chmod +x /usr/local/bin/confd

#檢查是否安裝成功

root@ubuntu:/home/chenqionghe/test/confd# confd --version

confd 0.16.0 (git sha: 7217b0ca, go version: go1.10.2)

confd配置檔案預設在/etc/confd中,可以通過引數-confdir指定。目錄中包含兩個子目錄,分別是:conf.d templates。

confd會先讀取conf.d目錄中的配置檔案(toml格式),然後根據檔案指定的模板路徑去渲染模板,再執行。

我們先建立

mkdir -p /etc/confd/

confd的配置檔案,主要包含配置的生成邏輯,例如模板源,後端儲存對應的keys,命令執行等。

templates:配置模板template,即基於不同元件的配置,修改為go語言的模板檔案。

三.配置使用confd

1. 建立配置檔案 /etc/confd/conf.d/chenqionghe.toml

[template]

# 模板檔案路徑

src = "chenqionghe.tmpl"

# 生成最終檔案路徑

dest = "/home/chenqionghe/test/confd/gym-data.txt"

keys = [

"/chenqionghe/deap_squat",

"/chenqionghe/bench_press",

"/chenqionghe/dead_lift",

# 生成檔案後執行的命令

reload_cmd = "echo 'light weight baby' >> /home/chenqionghe/test/confd/reaload.txt"

2. 建立模板檔案 /etc/confd/templates/chenqionghe.tmpl

[陳瓊和]

深蹲 = }

臥槽 = }

硬拉 = }

3. 初始化etcd中的資料

endpoints=

etcdctl --endpoints=$endpoints set /chenqionghe/deap_squat '130kg'

etcdctl --endpoints=$endpoints set /chenqionghe/bench_press '100kg'

etcdctl --endpoints=$endpoints set /chenqionghe/dead_lift '160kg'

4. 啟動confd的服務

confd支援以daemon或者onetime兩種模式執行

onetime模式:只會生成一次配置,之後key無論變化不會再生成

confd -onetime -backend etcd -node

daemon模式:confd會監聽後端儲存的配置變化,根據配置模板動態生成目標配置檔案。

confd -watch -backend etcd -node &

我們以daemon模式執行,然後改變key的值,觀察檔案變化,

可以看到reload.txt檔案在持續的追加light weight baby

gym-data.txt跟隨3個key的變化不斷的更新

四.關於-模板語法

confd使用的模板就是go語言的template,對go語言熟悉的同學應該會覺得非常簡單

confd已經整合了很多模板函式,參考鏈結

五.思考擴充套件-confd能做些什麼

我們大概知道了confd的原理

1.讀取配置檔案 -> 2.使用模板生成指定檔案 -> 3.執行過載命令(可選)

所以基本使用配置和reload命令的地方都可以使用confd,比如下邊的需求

nginx動態生成upstream實現服務發現

prometheus動態生成prometheus.yml實現自動報警

php-fpm動態生成php.ini檔案實現動態效能調參

動態生成報表檔案再傳送通知

只有想不到,沒有做不到,以前想過自己寫乙個nginx的動態生成upstream,沒想到已經有人寫出來了,真的是厲害,小夥伴們趕緊high起來吧

實變函式 實分析總結

一 概述。實變函式,又叫實分析,整本書滿滿的證明就講了乙個勒貝格積分。最為大家所熟知的是用牛頓 萊布尼茨公式算的黎曼積分。但是黎曼積分本身依賴於函式的連續性,像不連續的狄利克雷函式就無法積分了。為了解決這一問題,勒貝格利用分割值域的方法,使得函式可積。但是分割出來的值域,只能放在一起,形式集合。如果...

NestedScrollWebview實現與優化

nestedscrollwebview實現與優化 原文如下 好久沒寫了,好像也沒什麼人關注我,呵呵,但我還是堅持寫一下,希望能幫到有需要的人!今天我來說一下nestedscrollwebview。最近在弄乙個需求,我需要用到coordinatorlayout webview 實現滾動互動效果,但要實...

saltstack keepalived實現高可用

本篇部落格承接saltstack安裝部署和saltstack grains,pillar,jinja模組的使用 建立目錄。root server1 keepalived vim files keepalived.conf configuration file for keepalived globa...