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...