confd+etcd实现高可用自动发现
confd是什么
Confd是一个轻量级的配置管理工具。
通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。
对应的后端存储可以是etcd,redis、zookeeper等等
我们以etcd为后端来演示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@ubuntu:/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 -watch -backend etcd -node http://127.0.0.1:2379 &
我们以daemon模式运行,然后改变key的值,观察文件变化,
可以看到reload.txt文件在持续的追加light weight baby

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

四.关于-模板语法
confd使用的模板就是go语言的template,对go语言熟悉的同学应该会觉得非常简单
confd已经集成了很多模板函数,参考链接
五.思考扩展-confd能做些什么
我们大概知道了confd的原理
1.读取配置文件 -> 2.使用模板生成指定文件 -> 3.运行重载命令(可选)
所以基本使用配置和reload命令的地方都可以使用confd,比如下边的需求
- nginx动态生成upstream实现服务发现
- prometheus动态生成prometheus.yml实现自动报警
- php-fpm动态生成php.ini文件实现动态性能调参
- 动态生成报表文件再发送通知
只有想不到,没有做不到,以前想过自己写一个nginx的动态生成upstream,没想到已经有人写出来了,真的是厉害,小伙伴们赶紧high起来吧
confd+etcd实现高可用自动发现的更多相关文章
- Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】
k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernetes1.9版本发布2017年12月15日,每三个月一个迭代 ...
- 关于Kubernetes Master高可用的一些策略
关于Kubernetes Master高可用的一些策略 Kubernetes高可用也许是完成了初步的技术评估,打算将生产环境迁移进Kubernetes集群之前普遍面临的问题. 为了减少因为服务器当机引 ...
- Kubernetes实战(一):k8s v1.11.x v1.12.x 高可用安装
说明:部署的过程中请保证每个命令都有在相应的节点执行,并且执行成功,此文档已经帮助几十人(仅包含和我取得联系的)快速部署k8s高可用集群,文档不足之处也已更改,在部署过程中遇到问题请先检查是否遗忘某个 ...
- 附012.Kubeadm部署高可用Kubernetes
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- [K8s 1.9实践]Kubeadm 1.9 HA 高可用 集群 本地离线镜像部署
k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9版本发布2017年12月15日,每是那三个月一个迭代, W ...
- Redis(1.7)Redis高可用架构(理论篇)
[0]常用架构种类 (0.1)单机Redis (0.2)单纯的Redis主从复制 (0.3)哨兵Sentinel+Redis主从复制集群(实现高可用自动故障转移) (0.4)Redis Cluster ...
- 附018.K3S-ETCD高可用部署
一 K3S概述 1.1 K3S介绍 K3S是一个轻量级Kubernetes发行版.易于安装,内存消耗低,所有二进制文件不到40mb. 适用于: 边缘计算-Edge 物联网-IoT CI ARM 1.2 ...
- 附016.Kubernetes_v1.17.4高可用部署
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- Kubernetes全栈架构师(二进制高可用安装k8s集群部署篇)--学习笔记
目录 二进制高可用基本配置 二进制系统和内核升级 二进制基本组件安装 二进制生成证书详解 二进制高可用及etcd配置 二进制K8s组件配置 二进制使用Bootstrapping自动颁发证书 二进制No ...
随机推荐
- 【构造】UVa 11387 The 3-Regular Graph
Description 输入n,构造一个n个点的无向图,使得每个点的度数都为3.不能有重边和自环,输出图或确定无解. Solution 如果n为奇数,奇数*3=奇数,度数为奇,必无解. 考虑我们怎么构 ...
- ZOJ_2314_Reactor Cooling_有上下界可行流模板
ZOJ_2314_Reactor Cooling_有上下界可行流模板 The terrorist group leaded by a well known international terroris ...
- BZOJ_1101_[POI2007]Zap_莫比乌斯反演
题意:FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...
- BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树
BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资. ...
- php与html实现交互的基本操作
今天我们来实现php与html页面注册和登录的效果.中国有句古话叫: 第一步:我们来了解一些php的基本格式. <?php php代码 ?> 第二步:了解php与js的一些基本区别 我们在 ...
- Ubuntu18.04美化主题(mac主题)
前端时间Ubuntu18.04LTS发布,碰巧之前用的Ubuntu16.04出了一点问题,懒得解决,索性就换了Ubuntu18.04. 成果: 参考博客:https://www.cnblogs.com ...
- JDK10安装配置详解
JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包: 地址:http://www.oracle.com/technetwork/java/javase/dow ...
- Java:并发不易,先学会用
我从事Java编程已经11年了,绝对是个老兵:但对于Java并发编程,我只能算是个新兵蛋子.我说这话估计要遭到某些高手的冷嘲热讽,但我并不感到害怕. 因为我知道,每年都会有很多很多的新人要加入Java ...
- 【JVM虚拟机】(7)---深入理解Class中-属性集合
#[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...
- asp.net core系列 54 IS4用客户端凭据保护API
一. 概述 本篇开始进入IS4实战学习,从第一个示例开始,该示例是 “使用客户端凭据保护API”,这是使用IdentityServer保护api的最基本场景.该示例涉及到三个项目包括:Identity ...