多才多艺的配置更新工具——confd
Posted 不去天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多才多艺的配置更新工具——confd相关的知识,希望对你有一定的参考价值。
概述
当系统变的复杂,配置项越来越多,一方面配置管理变得繁琐,另一方面配置修改后需要重新上线同样十分痛苦。这时候,需要有一套集中化配置管理系统,一方面提供统一的配置管理,另一方面提供配置变更的自动下发,及时生效。
说道统一配置管理系统,大家应该比较熟悉,常见的:zookeeper、etcd、consul、git等等。
上述的集中配置中心使用的时候,部署图大致是这样的:
server端只需要调用config-server对应客户端获取配置,和监听配置变更就可以了。总体来说没有太大难度。
接下来要说一下confd,它提供了一种新的集成思路。confd的存在有点类似于快递员,买了东西不需要自己到店去取货了,confd这个快递员回把货取过来,然后送到家里,并且通知你货已经送到了。加入confd之后的架构大致是这样的:
confd是如何工作的
confd使用时有几个概念需要熟悉,并且熟悉他们之间的依赖关系,才能理解如何配置confd,不然会比较懵。这里我们先看一下confd配置的几个概念之间是如何交互的:
使用confd读取配置示例
这里我们用一个最简单的,把文件作为集中配置中心,这也是可能的,比如文件存储在网络存储器上的时候。
在服务器本地安装confd
- 下载confd源代码
git clone https://github.com/kelseyhightower/confd.git
- 编译confd
$ cd ./confd
$ make
编译之后会在./confd/bin/目录下生成一个confd的执行文件,这就是我们要使用的confd程序了。
- 新建一个配置文件(可以是一个共享磁盘或者网络磁盘的文件,这里示例放到本地)
touch /tmp/myapp.yaml
myapp.toml文件输入如下内容:
myapp:
database:
url: db.example.com
user: rob
- 创建confd需要的目录(模板目录和配置目录)
sudo mkdir -p /etc/confd/conf.d
sudo mkdir -p /etc/confd/templates
- 创建一组配置文件
touch /etc/confd/conf.d/myconfig.toml
录入如下内容:
[template]
src = "myconfig.conf.tmpl"
dest = "/tmp/myconfig.conf"
keys = [
"/myapp/database/url",
"/myapp/database/user",
]
- 创建对应的模板文件
touch /etc/confd/templates/myconfig.conf.tmpl
录入如下内容:
[myconfig]
database_url = getv "/myapp/database/url"
database_user = getv "/myapp/database/user"
- 执行一次更新操作:
confd -onetime -backend file -file /tmp/myapp.yaml
你会看到/tmp/myconfig.conf文件的内容已经同步成/tmp/myapp.yaml文件中配置的值了。
定时自动更新配置
- 使用confd的定时执行机制,启动confd时执行:
confd -interval 60 -backend file -file /tmp/myapp.yaml
interval单位是秒,默认值是600秒。
- 使用操作系统的crontab定时执行:
crontab -e
0 * * * * confd -onetime -backend file -file /tmp/myapp.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~ 福利分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~
-长期内推-:头条、快手、美团、阿里、陌陌、当当。有需要的朋友可以发邮件到我的邮箱xiaofan860412@163.com。
以上是关于多才多艺的配置更新工具——confd的主要内容,如果未能解决你的问题,请参考以下文章