confd配置使用

confd一般结合etc、consul等配置管理工具使用,用来动态生成配置文件重新载入程序等。网上可以参考的blog很多,最近用到consul时,实验过confd最后由于种种原因没有上线,也写篇blog凑凑热闹啦!下面是confd和consul结合的使用,其实consul就只存储k/v。
1、下载confd的二进制文件,放到相应的目录,根目录/usr/local/confd,下面的目录结构如下:

1
2
3
4
5
[root@xx-xx-xx-xxxxx confd]# tree -d
.
├── bin
├── conf.d
└── templates

将下载的二进制程序放到bin目录,然后做个软链接指向/usr/local/bin

1
ln -s /usr/local/confd/bin/confd /usr/local/bin/

2、在conf.d目录配置TOML配置文件
TOML语法参考:https://github.com/toml-lang/toml
例如:

1
2
3
4
5
6
7
8
9
$ cat conf.d/abc.bacde.com.conf.toml
[template]
src = "abc.abcde.com.conf.tmpl"
dest = "/usr/local/nginx/conf/vhost/abc.abcde.com.conf"
keys = [
"/xyz/a/b/upstream",
]
check_cmd = "/usr/local/nginx/sbin/nginx -t"
reload_cmd = "/usr/local/nginx/sbin/nginx -s reload"

3、在templates目录配置模版文件
格式参考:https://github.com/kelseyhightower/confd/blob/master/docs/templates.md
例如:

1
2
3
4
5
6
$ cat templates/abc.bacde.com.conf.tmpl
upstream abc-baced-upstream {
{{range gets "/xyz/a/b/upstream/*"}}server {{.Value}};
{{end}}
}
... ...

4、启动confd测试。

1
2
confd -confdir="/usr/local/confd/" -config-file="/usr/local/confd/conf.d/abc.abcde.com.conf.toml" -interval=1 -backend=consul -node 127.0.0.1:8500 -log-level="debug" -watch=true
... ... ...

检查TOML配置的目标文件是否正确,然后放入后台作为守护进程运行,也可以用supervisord守护运行。经过测试,如果check_cmd失败的话,reload_cmd是不会执行的,可以放心大胆的用。

----------------本文结束 感谢阅读----------------