技术标签: 工具 etcd+confd生成配置文件
etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备。
管理本地应用配置文件,使用etcd或consul存储的数据渲染模板,还支持redis、zookeeper等。confd有一个watch功能,通过HTTP API定期监测对应的etcd中目录变化,获取最新的Value,然后渲染模板,更新配置文件。
安装:
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
#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].
效果图:这是在某个群看到的需求,觉得界面清新,很养眼,所以好奇这是怎么实现的,就搜锁了一下,在github上找到一个流式布局https://github.com/ApmeM/android-flowlayout在其基础上稍作修改就好了com.example.githubflowview.FlowLayoutpackage com.example.githubfl
欧拉函数的题目,一脸懵逼。 公式: ∑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<
案发场景浏览器地址栏输入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 面试复习_1OOP 思想final, finally, finalize 的区别基本类型和包装类重载和重写(覆盖)接口和抽象类反射和注解HTTP 请求方式session 与 cookie2019-5-17作者:水不要鱼(注:能力有限,如有说错,请指正!)OOP 思想封装 (基础)把一些内部实现隐藏,只公开一部分“想公开”的内容。外界只需要使用这部分公开的内容即可...
HTML常用标签“第一弹”一.列表标签1.有序列表(1)< ol >< /ol >二.多媒体和超链接标签在此,波里个波友情提示:由于该知识点很多所以分几弹完成,因为作为一名学习者我也需要消化好才能给大家更好的帮助。一.列表标签1.有序列表语法如下:< ol >< li > 列表项1 < /li >< li > 列表项2 < /li >…< /ol >(1)< ol >< /o
文档来自官方地址:http://testng.org/doc/documentation-main.html#testng-listeners转自:http://topmanopensource.iteye.com/blog/1983735 1. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外...
linux安装mysql8.0.20版本
在Python中,函数(Function)是组织好的、可重复使用的、用来实现单一,或相关联功能的代码段。内建函数和用户自定义函数提高了应用的模块性和代码的重复利用率。
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树的插入、查找和删除操作的简易图书管理系统。重点分析了如何在插入和删除一颗AVL树中结点的同时,还能确保树的平衡性。借助文字和图片结合的形式,充分分析了各种情况。