配置管理工具-Confd

这篇具有很好参考价值的文章主要介绍了配置管理工具-Confd。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 简介

1.1 Confd介绍

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

通过上面的介绍可以看出,通过confd修改配置的前提是,被修改配置的服务需要支持热加载配置,如nginx等。这样才能实现在配置变更时自动reload。

1.2 Conf的作用

随着上线的服务越来越多,配置文件和配置项越来越复杂,管理和变更维护配置文件逐渐成为一件麻烦的事情。

在这时候,就需要一套集中化的配置文件管理系统。一方面实现配置文件的统一管理,版本回溯,另一方面提供配置文件的批量自动下发,以及动态加载重启服务。confd+etcd可以作为解决上述问题的一种思路。

本文主要介绍如何使用etcd作为后端存储,通过confd动态修改nginx的配置文件。

配置管理工具-Confd,linux,运维,服务器

2 安装Confd

官网下载confd并安装[2]

root@ceph-1:~# wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64

创建confd目录,confd主要有两个核心的目录

  • conf.d:主要包含配置的生成逻辑,例如模板源,后端存储对应的keys,命令执行等。
  • templates:配置模板Template,即基于不同组件的配置,修改为符合 Golang text templates的模板文件。
root@ceph-1:~# mkdir -p /etc/confd/{conf.d,templates}

3 配置Confd

3.1 创建confd模板文件

下面介绍一下什么是confd的模板文件[3]

  • Template定义了单一应用配置的模板,默认存储在/etc/confd/templates目录下,模板文件符合Go的text/template格式。
  • 模板文件常用函数有base,get,gets,lsdir,json等。

下面例子的逻辑是定义一个名为nginx.tmpl的模板文件。使用getv获取root_dir这个变量的值,来动态更新nginx的root文件目录,如果root_dir这个key不存在,则默认值为/usr/share/nginx/html。root_dir变量我们在后面定义。

root@ceph-1:~# cat /etc/confd/templates/nginx.tmpl

3.2 创建confd配置文件

配置文件是TOML格式的文件,主要包含配置的生成逻辑,例如模板源,后端存储对应的keys,命令执行等。默认目录在/etc/confd/conf.d。[3]

必要参数包括

  • dest:目标文件(字符串类型)
  • keys :键数组(字符串数组)
  • src :配置模板的相对路径(字符串)

可选参数包括

  • gid:应该拥有该文件的gid。默认为有效的gid(整数)
  • mode:文件的权限模式(字符串)
  • uid:应该拥有该文件的uid。默认为有效的uid(整数)
  • reload_cmd:重新加载配置的命令(字符串)
  • check_cmd:检查配置的命令(字符串)
  • prefix:键前缀的字符串(字符串)
root@ceph-1:~# cat /etc/confd/conf.d/myapp-nginx.toml

3.3 etcd中创建好变量相关的键值对

因为我们是使用的etcd作为confd的后端存储,因此要先在etcd中定义好先前模板文件中的变量的键值对。

root@ceph-1:~# etcdctl put /nginx/root_dir '/usr/share/nginx/v1' --endpoints=192.168.85.130:2379

3.4 启动confd

配置使用systemd管理confd并启动confd

root@ceph-1:~# cat /etc/confd/confd.toml  ##创建配置文件,指定后端存储为etcd

4 热更新nginx配置文件实验

4.1 为nginx创建两个版本的index页面

创建v1、v2两个目录,分别用来存放不同的两个nginx配置文件

root@ceph-1:~# mkdir /usr/share/nginx/{v1,v2}

新建两个index文件

root@ceph-4:~# cat /usr/share/nginx/v1/index.html

4.2 访问nginx

root@ceph-4:~# curl 127.0.0.1  ##可以看到能正常访问到v1下面的index文件

4.3 更新etcd中的/nginx/root_dir值

将/nginx/root_dir的值更新为/usr/share/nginx/v2

root@ceph-1:~# etcdctl put /nginx/root_dir '/usr/share/nginx/v2' --endpoints=192.168.85.130:2379

查看confd的日志,可以观察到有配置文件更新的动作

root@ceph-1:~# journalctl -u confd

配置管理工具-Confd,linux,运维,服务器

检查nginx配置是否已更新

root@ceph-1:~# cat /etc/nginx/conf.d/myapp.conf

5 参考资料

  • [1] http://www.confd.io/
  • [2] https://github.com/kelseyhightower/confd/blob/master/docs/installation.md#linux
  • [3] https://github.com/kelseyhightower/confd/blob/master/docs/templates.md

关注公众号 singless,获取更多有价值的文章

配置管理工具-Confd,linux,运维,服务器

你可能还喜欢

如何在prometheus产生告警时自动执行某个脚本文件

如何编译打包OpenSSH 9.4并实现批量升级

K8S使用开源CEPH作为后端StorageClass

Nginx安全加固,版本隐藏及HTTP请求头修改方法文章来源地址https://www.toymoban.com/news/detail-737432.html

到了这里,关于配置管理工具-Confd的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 42了解自动化运维工具 Saltstack 的基本用法,包括配置管理、批量执行

    Saltstack 是一款流行的自动化运维工具,可以用于配置管理、批量执行等任务。下面是 Saltstack 的基本用法教程。 安装 Saltstack 首先需要在控制节点上安装 Saltstack。具体安装方法可以参考 Saltstack 的官方文档。在安装过程中需要选择一个角色,通常有 master 和 minion 两个选项,

    2024年02月06日
    浏览(55)
  • 【服务器管理】Ubuntu20.04安装包管理工具module配置并且使用

    module 是一个专门管理环境变量的工具,全称是module environment,一般应用于软件或运行库等设备有多个版本,且需要分别配置这些环境变量。其官网为: https://modules.readthedocs.io/en/latest/index.html 通常,对于多版本的软件包,我们可以通过修改 ~/.bashrc 文件,通过修改 PATH 、 LD_LI

    2024年02月09日
    浏览(50)
  • Mac上好用的Linux服务器管理工具FinalShell

    FinalShell是一体化的的服务器、网络管理软件,不仅是ssh客户端,还是功能强大的开发、运维工具,充分满足开发、运维需求。 特色功能: 云端同步,免费海外服务器远程桌面加速、ssh加速,本地化命令输入框,支持自动补全,命令历史,自定义命令参数 Windows版下载地址: http:

    2024年02月14日
    浏览(50)
  • linux日志管理工具logrotate配置

    logrotate是centos自带工具,其他操作系统可能需要自行安装。logrotate用来进行日志切割和定期删除。 logrotate通过简单配置,帮助我们实现日志切割,以及对久远日志的删除,从而避免单个日志文件过大,以及众多的日志文件占用存储空间。 logrotate是基于crond服务(定时任务)来

    2024年02月11日
    浏览(41)
  • Scrapy框架之MongoDB通过配置文件管理参数--Linux安装MongoDB--图形管理工具

    目录 MongoDB通过配置文件 问题 解决方案  步骤 提示 Linux安装MongoDB 环境 下载依赖与安装包 解压安装  MongoDB GUI管理工具  独立软件GUI软件 Robo 3T使用 VSCode集成GUI插件 问题 启动MongoDB时,编写参数太麻烦 解决方案 通过配置文件统一管理 找到MongoDB的配置文件:在MongoDB的安装目

    2024年02月12日
    浏览(48)
  • msys2安装与配置: 在windows上使用linux工具链g++和包管理工具pacman C++开发

    方便windows上的C++开发demo,不需要VS了 方便C++开发安装opencv等三方库 有了这个就不需要另外安装git, cmake, mingw64了,都可以通过pacman包管理工具一键安装 官网 https://www.msys2.org/ 官方文档 https://www.msys2.org/docs/terminals/ github https://github.com/msys2/msys2-installer/releases/ 根据github readme中的

    2024年02月11日
    浏览(39)
  • Oceanbase体验之(一)运维管理工具OCP部署(社区版4.2.2)

    ocp主机1台 内存:64G CPU1:2C及以上  硬盘大于500G observer服务器3台 内存32G CPU:4C以上 硬盘大于1T 建议存储硬盘与操作系统硬盘隔开实现IO隔离 [root@observer /]# chown -R admin:admin /software/ [root@observer /]# ls -ld /software/ drwxr-xr-x 6 admin admin 4096 Apr 16 05:00 /software/ rpm -ivh ob-deploy-2.7.0-5.el7.

    2024年04月28日
    浏览(34)
  • 【配置环境】Windows和Linux下安装和使用C/C++第三方库管理工具vcpkg

    目录 一,环境准备 二,vcpkg简介 三,Window系统下载vcpkg 四,Linux系统下载vcpkg 五,vcpkg命令介绍 1.命令参照表 2.常用的vcpkg命令以及详细解释 Git - Downloads 根据平台下载最新版本(傻瓜式安装) Visual Studio 2015 或更新的版本( 包含英文语言包 ),点击VS界面菜单栏的 工具-获

    2024年02月14日
    浏览(53)
  • Linux安装Docker安装开源固定资产管理工具snipe-it(QQ邮箱Docker配置成功)

    下载 安装 生成密钥 写入配置文件 使用命令行启动 指定配置文件启动 使用docker compose启动 在snipe-ti目录下启动服务 在 .env 文件中添加如下配置文件 排查报错原因 邮件无法发送。没有提供额外的错误信息。请检查你的邮件设置和应用日志。 检查你的 .env 文件中的电子邮件配

    2024年04月11日
    浏览(60)
  • 【Git管理工具】使用Docker部署GitLab服务器

    1.GitLab是一款基于Git的开源代码托管平台,提供版本控制功能、代码审查、问题跟踪、CI/CD等一系列项目管理工具。 2.使用GitLab可以轻松管理团队中的开发者,进行代码的协作开发和管理。GitLab也提供了丰富的项目集成和API,可以让开发者更快地进行集成和部署。 3.相比其他类

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包