多才多艺的配置更新工具——confd

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BuquTianya/article/details/82079928

概述

当系统变的复杂,配置项越来越多,一方面配置管理变得繁琐,另一方面配置修改后需要重新上线同样十分痛苦。这时候,需要有一套集中化配置管理系统,一方面提供统一的配置管理,另一方面提供配置变更的自动下发,及时生效。

说道统一配置管理系统,大家应该比较熟悉,常见的:zookeeper、etcd、consul、git等等。

上述的集中配置中心使用的时候,部署图大致是这样的:

这里写图片描述

server端只需要调用config-server对应客户端获取配置,和监听配置变更就可以了。总体来说没有太大难度。

接下来要说一下confd,它提供了一种新的集成思路。confd的存在有点类似于快递员,买了东西不需要自己到店去取货了,confd这个快递员回把货取过来,然后送到家里,并且通知你货已经送到了。加入confd之后的架构大致是这样的:

这里写图片描述

confd是如何工作的

confd使用时有几个概念需要熟悉,并且熟悉他们之间的依赖关系,才能理解如何配置confd,不然会比较懵。这里我们先看一下confd配置的几个概念之间是如何交互的:
这里写图片描述

使用confd读取配置示例

这里我们用一个最简单的,把文件作为集中配置中心,这也是可能的,比如文件存储在网络存储器上的时候。

在服务器本地安装confd

  1. 下载confd源代码
git clone https://github.com/kelseyhightower/confd.git
  1. 编译confd
$ cd ./confd
$ make

编译之后会在./confd/bin/目录下生成一个confd的执行文件,这就是我们要使用的confd程序了。

  1. 新建一个配置文件(可以是一个共享磁盘或者网络磁盘的文件,这里示例放到本地)
touch /tmp/myapp.yaml

myapp.toml文件输入如下内容:

myapp:
  database:
    url: db.example.com
    user: rob
  1. 创建confd需要的目录(模板目录和配置目录)
sudo mkdir -p /etc/confd/conf.d
sudo mkdir -p /etc/confd/templates
  1. 创建一组配置文件
touch /etc/confd/conf.d/myconfig.toml

录入如下内容:

[template]
src = "myconfig.conf.tmpl"
dest = "/tmp/myconfig.conf"
keys = [
    "/myapp/database/url",
    "/myapp/database/user",
]
  1. 创建对应的模板文件
touch /etc/confd/templates/myconfig.conf.tmpl

录入如下内容:

[myconfig]
database_url = {{getv "/myapp/database/url"}}
database_user = {{getv "/myapp/database/user"}}
  1. 执行一次更新操作:
confd -onetime -backend file -file /tmp/myapp.yaml

你会看到/tmp/myconfig.conf文件的内容已经同步成/tmp/myapp.yaml文件中配置的值了。

定时自动更新配置

  1. 使用confd的定时执行机制,启动confd时执行:
confd -interval 60 -backend file -file /tmp/myapp.yaml

interval单位是秒,默认值是600秒。

  1. 使用操作系统的crontab定时执行:
crontab -e
0 * * * * confd -onetime -backend file -file /tmp/myapp.yaml

猜你喜欢

转载自blog.csdn.net/BuquTianya/article/details/82079928