confd+etcd实现高可用自动发现

栏目: 后端 · 发布时间: 5年前

内容简介:Confd是一个轻量级的配置管理工具。通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。对应的后端存储可以是etcd,redis、zookeeper等等我们以etcd为后端来演示confd的使用,用最简单粗暴的方式教大家学会动态生成配置

Confd是什么

Confd是一个轻量级的配置管理工具。通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。

对应的后端存储可以是etcd,redis、zookeeper等等

我们以etcd为后端来演示confd的使用,用最简单粗暴的方式教大家学会动态生成配置

一.准备confd依赖的存储etcd

etcd -listen-client-urls="http://0.0.0.0:2379" --advertise-client-urls="http://0.0.0.0:2379" &

etcd搭建如果不会可以查看前面一篇文章 《从零开始搭建etcd分布式存储系统+web管理界面》

二.安装confd

# 下载
wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64

# 安装
mv confd-0.16.0-linux-amd64 /usr/local/bin/confd
chmod +x /usr/local/bin/confd

#检查是否安装成功
root@<a href="https://www.linuxidc.com/topicnews.aspx?tid=2" target="_blank" title="Ubuntu">Ubuntu</a>:/home/chenqionghe/test/confd# confd --version
confd 0.16.0 (Git SHA: 7217b0ca, Go Version: go1.10.2)
  • confd配置文件默认在/etc/confd中,可以通过参数-confdir指定。目录中包含两个子目录,分别是:conf.d templates。
  • confd会先读取conf.d目录中的配置文件(toml格式),然后根据文件指定的模板路径去渲染模板,再执行<RELOAD_CMD>。

我们先创建

mkdir -p /etc/confd/{conf.d,templates}

confd的配置文件,主要包含配置的生成逻辑,例如模板源,后端存储对应的keys,命令执行等。

templates:配置模板Template,即基于不同组件的配置,修改为 go 语言的模板文件。

三.配置使用confd

1. 创建配置文件 /etc/confd/conf.d/chenqionghe.toml

[template]
# 模板文件路径
src = "chenqionghe.tmpl"
# 生成最终文件路径
dest = "/home/chenqionghe/test/confd/gym-data.txt"
keys = [
    "/chenqionghe/deap_squat",
    "/chenqionghe/bench_press",
    "/chenqionghe/dead_lift",
]
# 生成文件后执行的命令
reload_cmd = "echo 'light weight baby' >> /home/chenqionghe/test/confd/reaload.txt"

2. 创建模板文件 /etc/confd/templates/chenqionghe.tmpl

[陈琼和]
深蹲 = {{getv "/chenqionghe/deap_squat"}}
卧槽 = {{getv "/chenqionghe/bench_press"}}
硬拉 = {{getv "/chenqionghe/dead_lift"}}

3.初始化etcd中的数据

endpoints=http://127.0.0.1:2379
etcdctl --endpoints=$endpoints set /chenqionghe/deap_squat '130kg'
etcdctl --endpoints=$endpoints set /chenqionghe/bench_press '100kg'
etcdctl --endpoints=$endpoints set /chenqionghe/dead_lift '160kg'

4. 启动confd的服务

confd支持以daemon或者onetime两种模式运行

onetime模式:只会生成一次配置,之后key无论变化不会再生成

confd -onetime -backend etcd -node http://127.0.0.1:2379
  • daemon模式:confd会监听后端存储的配置变化,根据配置模板动态生成目标配置文件。

confd支持以daemon或者onetime两种模式运行

  • daemon模式:confd会监听后端存储的配置变化,并根据配置模板动态生成目标配置文件。
confd -watch -backend etcd -node http://127.0.0.1:2379 &

我们以daemon模式运行,然后改变key的值,观察文件变化,

可以看到reload.txt文件在持续的追加light weight baby

confd+etcd实现高可用自动发现

gym-data.txt跟随3个key的变化不断的更新

confd+etcd实现高可用自动发现

四.关于-模板语法

confd使用的模板就是go语言的template,对go语言熟悉的同学应该会觉得非常简单

confd已经集成了很多模板函数, 参考链接

五.思考扩展-confd能做些什么

我们大概知道了confd的原理

1.读取配置文件 -> 2.使用模板生成指定文件 -> 3.运行重载命令(可选)

所以基本使用配置和reload命令的地方都可以使用confd,比如下边的需求

  • nginx动态生成upstream实现服务发现
  • prometheus动态生成prometheus.yml实现自动报警
  • php-fpm动态生成php.ini文件实现动态性能调参
  • 动态生成报表文件再发送通知

只有想不到,没有做不到,以前想过自己写一个nginx的动态生成upstream,没想到已经有人写出来了,真的是厉害,小伙伴们赶紧high起来吧

Linux公社的RSS地址: https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-03/157398.htm


以上所述就是小编给大家介绍的《confd+etcd实现高可用自动发现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C算法(第二卷:图算法)(第3版)

C算法(第二卷:图算法)(第3版)

塞德威克(Sedgewick Robert) / 周良忠 / 第1版 (2004年1月1日) / 2004-4 / 38.0

《C算法(第2卷)(图算法)(第3版)(中文版)》所讨论的图算法,都是实际中解决图问题的最重要的已知方法。《C算法(第2卷)(图算法)(第3版)(中文版)》的主要宗旨是让越来越多需要了解这些算法的人的能够掌握这些方法及基本原理。书中根据基本原理从基本住处开始循序渐进地讲解,然后再介绍一些经典方法,最后介绍仍在进行研究和发展的现代技术。精心挑选的实例、详尽的图示以及完整的实现代码与正文中的算法和应用......一起来看看 《C算法(第二卷:图算法)(第3版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具