亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    confd+etcd實現(xiàn)高可用自動發(fā)現(xiàn)

    Confd是什么

    Confd是一個輕量級的配置管理工具。通過查詢后端存儲,結(jié)合配置模板引擎,保持本地配置最新,同時具備定期探測機(jī)制,配置變更自動reload。
    對應(yīng)的后端存儲可以是etcd,redis、zookeeper等等
    我們以etcd為后端來演示confd的使用,用最簡單粗暴的方式教大家學(xué)會動態(tài)生成配置

    一.準(zhǔn)備confd依賴的存儲etcd

    etcd -listen-client-urls="http://0.0.0.0:2379" --advertise-client-urls="http://0.0.0.0:2379" &

    etcd搭建如果不會可以查看前面一篇文章《從零開始搭建etcd分布式存儲系統(tǒng)+web管理界面》

    二.安裝confd

    # 下載  wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64    # 安裝  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配置文件默認(rèn)在/etc/confd中,可以通過參數(shù)-confdir指定。目錄中包含兩個子目錄,分別是:conf.d templates。
    • confd會先讀取conf.d目錄中的配置文件(toml格式),然后根據(jù)文件指定的模板路徑去渲染模板,再執(zhí)行<RELOAD_CMD>。

    我們先創(chuàng)建

    mkdir -p /etc/confd/{conf.d,templates}

    confd的配置文件,主要包含配置的生成邏輯,例如模板源,后端存儲對應(yīng)的keys,命令執(zhí)行等。
    templates:配置模板Template,即基于不同組件的配置,修改為go語言的模板文件。

    三.配置使用confd

    1. 創(chuàng)建配置文件 /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",  ]  # 生成文件后執(zhí)行的命令  reload_cmd = "echo 'light weight baby' >> /home/chenqionghe/test/confd/reaload.txt"

    2. 創(chuàng)建模板文件 /etc/confd/templates/chenqionghe.tmpl

    [陳瓊和]  深蹲 = {{getv "/chenqionghe/deap_squat"}}  臥槽 = {{getv "/chenqionghe/bench_press"}}  硬拉 = {{getv "/chenqionghe/dead_lift"}}

    3.初始化etcd中的數(shù)據(jù)

    endpoints=http://127.0.0.1:2379  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的服務(wù)

    confd支持以daemon或者onetime兩種模式運(yùn)行
    onetime模式:只會生成一次配置,之后key無論變化不會再生成

        confd -onetime -backend etcd -node http://127.0.0.1:2379
    • daemon模式:confd會監(jiān)聽后端存儲的配置變化,根據(jù)配置模板動態(tài)生成目標(biāo)配置文件。

    confd支持以daemon或者onetime兩種模式運(yùn)行

    • daemon模式:confd會監(jiān)聽后端存儲的配置變化,并根據(jù)配置模板動態(tài)生成目標(biāo)配置文件。
    confd -watch -backend etcd -node http://127.0.0.1:2379 &      

    我們以daemon模式運(yùn)行,然后改變key的值,觀察文件變化,
    可以看到reload.txt文件在持續(xù)的追加light weight baby
    confd+etcd實現(xiàn)高可用自動發(fā)現(xiàn)

    gym-data.txt跟隨3個key的變化不斷的更新
    confd+etcd實現(xiàn)高可用自動發(fā)現(xiàn)

    四.關(guān)于-模板語法

    confd使用的模板就是go語言的template,對go語言熟悉的同學(xué)應(yīng)該會覺得非常簡單
    confd已經(jīng)集成了很多模板函數(shù),參考鏈接

    五.思考擴(kuò)展-confd能做些什么

    我們大概知道了confd的原理
    1.讀取配置文件 -> 2.使用模板生成指定文件 -> 3.運(yùn)行重載命令(可選)

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

    • nginx動態(tài)生成upstream實現(xiàn)服務(wù)發(fā)現(xiàn)
    • prometheus動態(tài)生成prometheus.yml實現(xiàn)自動報警
    • php-fpm動態(tài)生成php.ini文件實現(xiàn)動態(tài)性能調(diào)參
    • 動態(tài)生成報表文件再發(fā)送通知

    只有想不到,沒有做不到,以前想過自己寫一個nginx的動態(tài)生成upstream,沒想到已經(jīng)有人寫出來了,真的是厲害,小伙伴們趕緊high起來吧

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號