Nacos 无缝支持 confd 配置管理

news2024/11/25 16:20:25

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦(有vue2与vue3版本):点击这里克隆或者下载     🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

目录

一、前言

二、安装 confd 插件

三、confd 结合 Nacos 实现 nginx 配置管理示例

总结

💖微服务实战


一、前言

为什么要支持 confd,老的应用配置管理模式是启动时读取配置文件,然后重新读取配置文件需要应用重启。一般的配置管理系统都是代码侵入性的,应用接入配置管理系统都需要使用对应的 SDK 来查询和监听数据的变更。对于一些已经成熟的系统来说,接入 SDK 来实现动态配置管理是很难实现的,Nacos 通过引入配置管理工具 confd 可以实现系统的配置变更做到无代码侵入性。

confd 是一个轻量级的配置管理工具,可以通过查询后端存储系统来实现第三方系统的动态配置管理,如 nginx、tomcat、haproxy、docker 配置等。confd 目前支持的后端有 etcd、zookeeper 等,Nacos 1.1 版本通过对 confd 定制支持 Nacos 作为后端存储。

confd 能够查询和监听后端系统的数据变更,结合配置模版引擎动态更新本地配置文件,保持和后端系统的数据一致,并且能够执行命令或者脚本实现系统的 reload 或者重启。

二、安装 confd 插件

confd 的安装可以通过源码安装方式,confd 基于 go 语言编写,其编译安装依赖 go,首先需要确保本地安装了go,版本不低于 v1.10。

创建 confd 目录,下载 confd 源码,编译生成可执行文件。

mkdir -p $GOPATH/src/github.com/kelseyhightower
wget https://github.com/nacos-group/confd/archive/v0.18.0.tar.gz
tar -xvf v0.18.0.tar.gz
mv confd-0.18.0 confd
cd confd
make

复制 confd 文件到 bin 目录下,启动 confd。

sudo cp bin/confd /usr/local/bin
confd

三、confd 结合 Nacos 实现 nginx 配置管理示例

本文介绍使用 Nacos 结合 confd 实现 nginx 配置管理,为简单起见以 nginx 的黑名单功能为演示示例,Nacos使用官网部署的服务,域名为 console.nacos.io,nginx 的安装可以参考网上文章。

1.创建 confd 所需目录

confd 配置文件默认在 /etc/confd 中,可以通过参数 -confdir指定。目录中包含两个子目录,分别是:conf.d templates

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

2.创建 confd 配置文件

confd 会先读取 conf.d 目录中的配置文件( toml 格式),然后根据文件指定的模板路径去渲染模板。

vim /etc/confd/conf.d/nginx.toml

内容为如下,其中 nginx.conf.tmpl 文件为 confd 的模版文件,keys 为模版渲染成配置文件所需的配置内容,/usr/local/nginx/conf/nginx.conf 为生成的配置文件。

[template]
src = " nginx.conf.tmpl"
dest = "/usr/local/nginx/conf/nginx.conf"
keys = [
"/nginx/conf",
]
check_cmd = "/usr/local/nginx/sbin/nginx -t -c {{.src}}"
reload_cmd = "/usr/local/nginx/sbin/nginx -s reload"

3.创建模版文件

拷贝 nginx 原始的配置,增加对应的渲染内容。

cp /usr/local/nginx/conf/nginx.conf /etc/confd/templates/nginx.conf.tmpl
vim /etc/confd/templates/nginx.conf.tmpl

增加内容为:

···
{{$data := json (getv "/nginx/conf")}}
{{range $data.blackList}}
  deny {{.}};
{{end}}
···

4.在 Nacos 上创建所需的配置文件

在 public 命名空间创建 dataId 为 nginx.conf 的配置文件,group 使用默认的 DEFAULT_GROUP 即可,配置内容为 json 格式。

{
  "blackList":["10.0.1.104","10.0.1.103"]
}

5.启动 confd

启动 confd,从 Nacos 获取配置文件,渲染 nginx 配置文件。backend 设置成 nacos,node 指定访问的Nacos 服务地址,watch 让 confd 支持动态监听。

confd -backend nacos -node http://console.nacos.io:80 -watch

6.查看 nginx 配置文件,验证 nginx 启动

查看生成的 /usr/local/nginx/conf/nginx.conf 配置文件是否存在如下内容。

...
deny 10.0.1.104;

deny 10.0.1.103;
...

curl 命令访问 nginx,验证是否返回正常。http 响应状态码为 200 说明访问 nginx 正常。

curl http://$IP:8080/ -i
HTTP/1.1 200 OK
...

7.查看本机 ip,加到 nacos 配置文件黑名单中

假设本机的 ip 为 30.5.125.107,将本机的 ip 加入到 nginx 黑名单。

{
  "blackList":["10.0.1.104","10.0.1.103","30.5.125.107"]
}

8.查看 nginx 配置文件,验证黑名单是否生效

查看生成的 /usr/local/nginx/conf/nginx.conf 配置文件是否存在如下内容。

...
deny 10.0.1.104;

deny 10.0.1.103;

deny 30.5.125.107;
...

curl 命令访问 nginx,访问应该被拒绝,返回 403 。

curl http://$IP:8080/ -i
HTTP/1.1 403 Forbidden
...

总结

本文介绍了使用 Nacos 结合 confd 来做自动化管理,confd 作为轻量级的配置管理工具可以做到对第三方系统无代码侵入性。本文只是简单使用 nginx 的黑名单功能来演示 Nacos+confd 的使用方式,当然 nginx 还具有限流、反向代理等功能以及其他的系统比如 haproxy、tomcat、docker 等也同样可以使用 Nacos+confd 做管理。

💖微服务实战

✨【微服务】SpringCloud的OpenFeign与Ribbon配置

✨集Oauth2+Jwt实现单点登录

✨Spring Cloud Alibaba微服务第29章之Rancher

✨Spring Cloud Alibaba微服务第27章之Jenkins

✨Spring Cloud Alibaba微服务第24章之Docker部署

✨Spring Cloud Alibaba微服务第23章之Oauth2授权码模式

✨Spring Cloud Alibaba微服务第22章之Oauth2

✨Spring Cloud Alibaba微服务第21章之分布式事务

✨Spring Cloud Alibaba微服务第18章之消息服务

✨Spring Cloud Alibaba微服务第16章之服务容错

✨Spring Cloud Alibaba微服务第14章之分库分表

✨Spring Cloud Alibaba微服务第11章之MyBatis-plus

✨Spring Cloud Alibaba微服务第8章之OpenFeign

✨Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

✨SpringCloud Alibaba微服务第6章之Gateway

✨SpringCloud Alibaba微服务第4章之Nacos

✨SpringCloud Alibaba微服务开篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio实现内容丰富的安卓物业管理平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号102 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告…

调用接口异常的原因及解决方法

在进行接口调用时,调用有时会遇到各种异常情况,接口解决例如连接超时、异常因及返回值错误等。调用的原这些异常情况可能会导致程序无法正常运行,接口解决因此需要及时解决。异常因及本文将介绍。调用的原 一、接口解决连接超时 连接超时是异…

面试题-Spring 面试集

Spring 面试集 基于Spring Framework 4.x 总结的常见面试题,系统学习建议还是官方文档走起:https://spring.io/projects/spring-framework#learn 一、一般问题 开发中主要使用 Spring 的什么技术 ? IOC 容器管理各层的组件 使用 AOP 配置声明式事务 整…

Vue2+vue-cli使用Tailwind CSS

1.执行以下命令安装依赖 npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^92.cmd执行命令npm i 下载项目所用到的依赖 npm i3.在项目根目录下创建一个 postcss.config.js 文件 module.exports {plugins: [requ…

fcpx插件:Kingluma Radiance(发光和光线过渡效果)

Kingluma Radiance是一款为Final Cut Pro X(FCPX)设计的插件,它提供了丰富的光效和发光效果,可用于增强视频的视觉效果。 Radiance插件为用户提供了多种发光效果和光晕效果,如光晕、镜头光晕、梦幻效果等。它具有直观的…

推荐信模版(英文)计算机专业

推荐信模版(英文)计算机专业 ✅ 内容已校对 润色 ©️ 文章来源:https://blog.csdn.net/IYXUAN,原创内容,转载请注明! 推荐信(一) January 4, 2023 Dear Admissions Committe…

7.4黄金能否继续上行?今日行情如何发展

近期有哪些消息面影响黄金走势?今日黄金多空该如何研判? ​黄金消息面解析:周二(7月4日)亚市早盘,美元指数继续承压,目前略低于103关口;现货黄金保持在1923美元/盎司附近。由于悲观的美国数据未能支持美联储的鹰派倾向…

node获取文件夹下所有js文件的模块

创建 index.js const fs require(fs) const path require(path)const folderPath path.join(__dirname, api)console.log(目录路径:, folderPath)let moduleObj {}fs.readdirSync(folderPath).forEach((file) > {const filePath path.join(folderPath, file…

C语言指针基础

目录 前言 本期介绍内容: 一、指针是什么? 二、指针和指针类型 指针类型的意义: 三、野指针 3.1什么是野指针? 3.2野指针的成因 1.指针未初始化 2.指针越界访问 3.指针指向的那块空间已经释放(还给操作系统了…

图像处理--边缘检测算子

算子推导过程 1、知识引入: 在一维连续数集上有函数f(x),我们可以通过求导获得该函数在任一点的斜率,根据导数的定义有: 在二维连续数集上有函数f(x,y),我们也可以通过求导获得该函数在x和y分量的偏导数,根据定义有: …

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键,解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键,解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

在私家车上安装车载电台合法吗?

答案是合法的,不过需要办理相关手续才行。想在自己的车上安装车载无线电台,需要先考取一个业余无线电操作证,然后再将车载电台拿到当地的无线电管理委员会进行验机,如果符合业余广播电台的机器要求,将颁发《中华人民共…

淘宝数据采集员(如何快速高效地采集淘宝数据)

目录 淘宝数据采集的重要性 淘宝数据采集的意义 淘宝数据采集的应用场景 淘宝数据采集的流程 淘宝数据采集的准备工作 淘宝数据采集的技巧与注意事项 淘宝数据采集的工具推荐 淘宝数据采集的流程 如何快速高效地采集淘宝数据 淘宝数据采集的注意事项 淘宝数据采集的重…

安装qt qmake assistant 错误:could not find a Qt installation of ‘‘

1、执行qmake,提示下图的错误 Command qmake not found, but can be installed with: sudo apt install qtchooser 解决方法: sudo apt install qtchooser 2、执行qmake,提示一下错误 qmake: could not find a Qt installation of 解决步骤: 步骤一&a…

spring源码分析-ApplicationContext----扩展组件event listener

我们知道 spring中的ApplicationContext在beanFactory(提供基础bean处理)基础上增加了扩展组件,例如国际化,资源,发布事件和监听事件,今天主要针对发布和监听事件做一次源码分析,看到底发布和监听是如何实现的&#xf…

Promise的常见面试题

四、相关面试题 1. 多个 .catch var p new Promise((resolve, reject) > {reject(Error(The Fails!)) })p.catch(error > console.log(error.message)) p.catch(error > console.log(error.message))以上代码的输出将会是什么? 打印两次 The Fails! 解析…

纯粹数学作业

1、列举一个真命题、一个假命题、一个不知道真假的命题、一个不是命题的陈述。 真命题:太阳是发光发热的。 同位角相等,两直线平行。 假命题:三角形的三个内角和不是180 不知真假的命题:树叶是黄色的。 不是命题的陈述&#x…

伦敦银实时行情软件日常使用

目前伦敦金市场上很多交易都是通过MT4平台来完成,这个行情软件的优势,除了操作简洁、分析功能全面和交易稳定外,支持不同的手机和电子设备版本也是很重要的一点。但很多用户,特别是对于新手日常在操作的过程中,都会或多…

jdk1.8官网下载

地址: https://www.oracle.com/java/technologies/downloads/#java8 选linux x86位的:

【C语言】从水仙花构建思维

前言 🎈大家好,我是何小侠🎈 🍃大家可以叫我 小何或者小侠 🍃 💐希望能通过写博客加深自己对于学习内容的理解💐 🌸也能帮助更多人理解和学习🌸 击石乃有火,…