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实现高可用自动发现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Java技术手册(第6版)

Java技术手册(第6版)

Benjamin J Evans、David Flanagan / 安道 / 人民邮电出版社 / 2015-12-1 / 79.00

《Java技术手册 第6版》为《Java 技术手册》的升级版,涵盖全新的Java 7 和Java 8。第1部分介绍Java 编程语言和Java 平台,主要内容有Java 环境、Java 基本句法、Java 面向对象编程、Java 类型系统、Java的面向对象设计、Java 实现内存管理和并发编程的方式。第2部分通过大量示例来阐述如何在Java 环境中完成实际的编程任务,主要内容有编程和文档约定,使......一起来看看 《Java技术手册(第6版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具