etcd+confd生成配置文件_etcdadm 生成config_chenlvzhou的博客-程序员秘密

技术标签: 工具  etcd+confd生成配置文件  

etcd

etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备。

  1. 安装:
    a.wget https://github.com/coreos/etcd/releases/download/v3.1.4/etcd-v3.1.4-linux-amd64.tar.gz
    b. tar zxvf etcd-v3.1.4-linux-amd64.tar.gz
    c.mv etcd etcdctl /usr/bin/
    d.etcd --listen-client-urls http://10.8.16.221:2379 --advertise-client-urls http://10.8.16.221:2379

confd

管理本地应用配置文件,使用etcd或consul存储的数据渲染模板,还支持redis、zookeeper等。confd有一个watch功能,通过HTTP API定期监测对应的etcd中目录变化,获取最新的Value,然后渲染模板,更新配置文件。

  1. 安装:
    a.wget https://github.com/kelseyhightower/confd/releases/download/v0.11.0/confd-0.11.0-linux-amd64
    b.mv confd-0.11.0-linux-amd64 /usr/bin/confd
    c.创建配置目录

    mkdir -p /etc/confd/{conf.d,templates}
    conf.d # 资源模板,下面文件必须以toml后缀
    templates # 配置文件模板,下面文件必须以tmpl后缀

    d.创建资源模板

    [template]
    src = “app01.conf.tmpl” # 默认在/etc/confd/templates目录下
    dest = “/usr/local/nginx/conf/vhost/app01.conf” # 要更新的配置文件
    keys = [
    “/nginx”, # 监测的key
    ]
    reload_cmd ="/usr/local/nginx/sbin/nginx -s reload" # 最后执行的命令

    e.创建Nginx配置文件模板

    upstream www.{ {getv “/nginx/www/server_name”}} {
    { {range getvs “/nginx/www/upstream/*”}}
    server { {.}};
    { {end}}
    }
    server {
    server_name www.{ {getv “/nginx/www/server_name”}};
    location / {
    proxy_pass http://www.{ {getv “/nginx/www/server_name”}};
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }

    f.向etcd添加k/v

    etcdctl -C http://10.8.16.221:2379 set /nginx/www/server_name “domain.com
    etcdctl -C http://10.8.16.221:2379 set /nginx/www/upstream/server01 “192.168.1.10:80”
    etcdctl -C http://10.8.16.221:2379 set /nginx/www/upstream/server02 “192.168.1.11:80”

    g.启动confd监测etcd中的keys

    confd -watch -backend=“etcd” -node=http://10.8.16.221:2379

    h.运行confd

    [[email protected] vagrant]# /usr/bin/confd -watch -backend=“etcd” -node=http://10.8.16.221:2379
    2018-10-11T09:11:33Z bogon /usr/bin/confd[4394]: INFO Backend set to etcd
    2018-10-11T09:11:33Z bogon /usr/bin/confd[4394]: INFO Starting confd
    2018-10-11T09:11:33Z bogon /usr/bin/confd[4394]: INFO Backend nodes set to http://10.8.16.221:2379
    ^C2018-10-11T09:12:27Z bogon /usr/bin/confd[4394]: INFO Captured interrupt. Exiting…
    [[email protected] vagrant]# /usr/bin/confd -watch -backend=“etcd” -node=http://10.8.16.221:2379
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO Backend set to etcd
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO Starting confd
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO Backend nodes set to http://10.8.16.221:2379
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO /usr/local/nginx/conf/vhost/app01.conf has md5sum 6a15d712bfd00eb045f78db9e6e32c7d should be ac90788f22fba60f7bcd614e63a9d162
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO Target config /usr/local/nginx/conf/vhost/app01.conf out of sync
    2018-10-11T09:12:27Z bogon /usr/bin/confd[4398]: INFO Target config /usr/local/nginx/conf/vhost/app01.conf has been updated

    i.查看配置文件

    [[email protected] vagrant]# cat /usr/local/nginx/conf/vhost/app01.conf
    upstream www.domain.com {
    server 192.168.1.10:80;
    server 192.168.1.11:80;
    }
    server {
    server_name www.domain.com;
    location / {
    proxy_pass http://www.domain.com;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }

参考资料:
[1]: https://www.cnblogs.com/breg/p/5756558.html
[2]: http://etcd.doczh.cn/documentation/
[3]: http://blog.51cto.com/lizhenliang/1910150
[4]: https://www.cnblogs.com/Anker/p/6112022.html
[5]: https://github.com/kelseyhightower/confd
[6]:https://blog.csdn.net/ztsinghua/article/details/51643732

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenlvzhou/article/details/83016125

智能推荐

C语言 求一个3*3的整型矩阵对角线元素之和_求一个3×3的整型矩阵对角线之和_sirket的博客-程序员秘密

#include<stdio.h>int main(){ int a[3][3],i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) for(j=0;j<3;j++) { if(i==j) sum+=a[i][j]; else if(i+j==2) sum+=a[i].

自定义流式布局,标签展示_猛虎细嗅o蔷薇的博客-程序员秘密

效果图:这是在某个群看到的需求,觉得界面清新,很养眼,所以好奇这是怎么实现的,就搜锁了一下,在github上找到一个流式布局https://github.com/ApmeM/android-flowlayout在其基础上稍作修改就好了com.example.githubflowview.FlowLayoutpackage com.example.githubfl

POJ2480(欧拉函数)_Cai_Haiq的博客-程序员秘密

欧拉函数的题目,一脸懵逼。 公式: ∑i=1ngcd(i,n)=∑d|ndφ(nd)\sum_{i=1}^n{gcd(i,n)}=\sum_{d|n}dφ({n \over d}) 既然都有了公式,剩下的嘿嘿嘿 蜜汁TLE 为什么不加等于2的判断就超时了???? 很不理解。。。 AC code:#include<stdio.h>#include<string.h>#include<

重定向后路径上自动添加jsessionid=_微信扫码之后重定向出现jessionid_csdnY_88的博客-程序员秘密

案发场景浏览器地址栏输入Web服务器地址,并访问(http://www.XXX.cn/aaa/bbb)Web服务器查询资源地址,并拼接完整路径(resultLink=“http://www.XXX.cn/TT/index.html?param=params”)使用语句(return “redirect:”+resultLink;)重定向,地址栏显示路径为http://www.XXX.cn/TT/index.html**;jsessionid=XXXXXX**?param=params,导致访问报4

Java 面试复习_1_水不要鱼的博客-程序员秘密

Java 面试复习_1OOP 思想final, finally, finalize 的区别基本类型和包装类重载和重写(覆盖)接口和抽象类反射和注解HTTP 请求方式session 与 cookie2019-5-17作者:水不要鱼(注:能力有限,如有说错,请指正!)OOP 思想封装 (基础)把一些内部实现隐藏,只公开一部分“想公开”的内容。外界只需要使用这部分公开的内容即可...

web应用与开发知识梳理2——波里个波创作!_web应用与开发作品_波里个波!的博客-程序员秘密

HTML常用标签“第一弹”一.列表标签1.有序列表(1)&lt; ol &gt;&lt; /ol &gt;二.多媒体和超链接标签在此,波里个波友情提示:由于该知识点很多所以分几弹完成,因为作为一名学习者我也需要消化好才能给大家更好的帮助。一.列表标签1.有序列表语法如下:&lt; ol &gt;&lt; li &gt; 列表项1 &lt; /li &gt;&lt; li &gt; 列表项2 &lt; /li &gt;…&lt; /ol &gt;(1)&lt; ol &gt;&lt; /o

随便推点

TestNG简单的学习(十二)TestNG运行_suite exclude class_Seven7707的博客-程序员秘密

文档来自官方地址:http://testng.org/doc/documentation-main.html#testng-listeners转自:http://topmanopensource.iteye.com/blog/1983735 1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外...

图解 Python 编程(18) | 函数(附要点速查表·完结)_ShowMeAI的博客-程序员秘密

在Python中,函数(Function)是组织好的、可重复使用的、用来实现单一,或相关联功能的代码段。内建函数和用户自定义函数提高了应用的模块性和代码的重复利用率。

OutOfRangeError: RandomShuffleQueue '_83_shuffle_batch_7/random_shuffle_queue' is closed and has ins_out of range: randomshufflequeue '_7_shuffle_batch_z2539329562的博客-程序员秘密

tensorflow 执行代码时出现以下错误 OutOfRangeError: RandomShuffleQueue '_83_shuffle_batch_7/random_shuffle_queue' is closed and has insufficient elements (requested 100, current size 0)def read_csv(batch_si...

法拉克机器人自动怎么调_发那科机器人的简单设置你知道吗_小六说酒的博客-程序员秘密

发那科机器人使用后台逻辑时,可以在后台执行只包含对应后台逻辑指令的TP程序。程序从*初到*后被反复执行,该执行不受急停、暂停、报警的影响。设定后台逻辑的步骤非常简单:1.按下MENU键2.选择SETUP3.选择BG LOGIC,进入如下画面这里分三块内容进行简要说明:(1)后台逻辑的程序类别为TP程序,不可以包含运动组,即程序属性必须是这样的:TP程序中可使用的指令、数据及运算符有:(2)后台逻辑...

一种基于平衡二叉树(AVL树)插入、查找和删除的简易图书管理系统_图书管理系统二叉树_Sylvan Ding的博客-程序员秘密

本文介绍了一种基于AVL树的插入、查找和删除操作的简易图书管理系统。重点分析了如何在插入和删除一颗AVL树中结点的同时,还能确保树的平衡性。借助文字和图片结合的形式,充分分析了各种情况。

推荐文章

热门文章

相关标签