站長資訊網
        最全最豐富的資訊網站

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

        Confd是什么

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

        一.準備confd依賴的存儲etcd

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

        etcd搭建如果不會可以查看前面一篇文章《從零開始搭建etcd分布式存儲系統+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配置文件默認在/etc/confd中,可以通過參數-confdir指定。目錄中包含兩個子目錄,分別是:conf.d templates。
        • confd會先讀取conf.d目錄中的配置文件(toml格式),然后根據文件指定的模板路徑去渲染模板,再執行<RELOAD_CMD>。

        我們先創建

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

        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

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

        3.初始化etcd中的數據

        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的服務

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

            confd -onetime -backend etcd -node http://127.0.0.1:2379
        • daemon模式:confd會監聽后端存儲的配置變化,根據配置模板動態生成目標配置文件。

        confd支持以daemon或者onetime兩種模式運行

        • daemon模式:confd會監聽后端存儲的配置變化,并根據配置模板動態生成目標配置文件。
        confd -watch -backend etcd -node http://127.0.0.1:2379 &      

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

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

        四.關于-模板語法

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

        五.思考擴展-confd能做些什么

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

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

        • nginx動態生成upstream實現服務發現
        • prometheus動態生成prometheus.yml實現自動報警
        • php-fpm動態生成php.ini文件實現動態性能調參
        • 動態生成報表文件再發送通知

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 午夜欧美精品久久久久久久| 久久99精品国产自在现线小黄鸭| 亚洲精品综合久久| 国产精品白浆在线观看免费| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 91麻豆精品国产自产在线观看一区 | 92精品国产自产在线观看| 久久99精品国产麻豆| 亚洲精品视频久久久| 国产日韩精品无码区免费专区国产| 国产精品亚洲а∨无码播放| 亚洲国产精品成人| 免费国产在线精品一区| 国产精品无码免费播放| 久久精品视频网| 97热久久免费频精品99 | 国产精品原创巨作?v网站| 久久国产精品久久国产精品| 国产成人精品日本亚洲网站 | 国产精品成人观看视频国产奇米| 亚洲愉拍99热成人精品热久久| 精品无码国产自产拍在线观看蜜| 四虎国产精品永久地址49| 国内精品51视频在线观看| 国产国产精品人在线观看| 亚洲AV日韩精品久久久久| 亚洲精品无码mv在线观看网站| 亚洲精品国精品久久99热| 日本精品一区二区三区在线视频| 久久久久这里只有精品| 欧美精品亚洲精品日韩专区| 久久久WWW成人免费精品| 精品国产乱码久久久久久浪潮| 国产午夜精品久久久久九九| 精品无码国产污污污免费网站国产 | 国产精品亚洲精品观看不卡| 国产成人精品手机在线观看| 国产精品美女久久久久久2018 | 久久免费精品视频| 日韩欧美精品不卡| 87国产私拍福利精品视频|