基于Confd动态更新配置的方法及系统
文献发布时间:2023-06-19 10:11:51
技术领域
本发明涉及计算机运维技术领域,具体地说是一种基于Confd动态更新配置的方法及系统。
背景技术
Confd是一个配置管理工具,通过定时查询Etcd内的键值对,结合配置模板引擎生成正式配置文件,同时具备定期探测机制(根据参数手动指定间隔秒数)来生成新的配置,配置变更自动重载。
Etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。
Nginx(engine x)是一款高性能和轻量级的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。
目前在政府行业内,业务系统往往采用Nginx作为多实例系统间的负载均衡,而当负载的业务系统数量不断增加,配置项也会越来越多,配置管理会变得相当繁琐,另一方面需要修改配置,如用户高峰期时,由单实例改为多实例负载时,因大量配置项往往显得更为繁琐和更易出错;故如何避免编码方式错误、手误等引起的不必要的或者难以定位解决的难题,实现动态更新Nginx配置文件并自动重启,使得其便利和高效是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种基于Confd动态更新配置的方法及系统,来解决如何避免编码方式错误、手误等引起的不必要的或者难以定位解决的难题,实现动态更新Nginx配置文件并自动重启,使得其便利和高效的问题。
本发明的技术任务是按以下方式实现的,一种基于Confd动态更新配置的方法,该方法具体如下:
部署并封装Etcd键值存储系统:通过Etcd健值存储系统对健值对进行统一存储,并依赖Etcd特性对其进行封装,方便第三方调用和使用;
部署Confd的配置管理工具并启动监听:借助Confd配置管理工具创建资源模板和Nginx配置文件模板,使得对Nginx新增配置时,依赖Nginx添加配置文件;添加完毕后,基于资源模板对Nginx进行发布并重新启动,使其生效;
触发动态更新配置:通过对外提供增加接口、修改接口及删除接口触发基于Confd动态更新配置。
作为优选,部署Etcd键值存储系统具体如下:
安装部署Etcd键值存储系统;
基于Etcd的etcdctl命令封装添加的rest服务接口、修改的rest服务接口和删除的rest服务接口;
根据不同业务场景调阅封装的添加的rest服务接口、修改的rest服务接口和删除的rest服务接口。
作为优选,部署并部署Confd的配置管理工具并启动监听具体如下:
安装部署Confd的配置管理工具;
按照实际业务需求规划Etcd的Key、Value值;
创建配置目录;
创建资源模板;
创建Nginx配置文件模板;
启动Confd监听Etcd。
更优地,创建配置目录具体如下:
创建目录conf.d和templates;
conf.d目录下的资源文件以toml为后缀;
templates目录下的配置文件模板以tmpl为后缀。
更优地,创建资源模板具体如下:
资源模板默认在/etc/confd/templates目录下;
更新的配置文件;
监测的key;
执行命令:reload_cmd="/usr/local/nginx/sbin/nginx-s reload"。
作为优选,触发动态更新配置具体如下:
调用etcdctl的添加rest接口可动态增加服务;
调用etcdctl的修改rest接口可动态修改服务;
调用etcdctl的删除rest接口可动态删除该配置。
一种基于Confd动态更新配置的系统,该系统包括,
Etcd组件,用于存储Nginx的基础配置信息;
Confd组件,用于通过定期探测机制,监测Etcd的目录变化,即为Nginx的基础配置信息,从而获取最新值,结合配置模板引擎生成正式配置文件,并自动更新nginx配置和重启,达到动态更新配置的目的。
作为优选,所述Etcd组件为分布式KV存储。
一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述的基于Confd动态更新配置的方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的基于Confd动态更新配置的方法。
本发明的基于Confd动态更新配置的方法及系统具有以下优点:
(一)本发明改变传统的需手动修改配置的模式,解决了传统的需人工至Nginx所在服务器上手动修改,避免了因文件编码方式错误、手误等引起的不必要或者难以定位解决的问题,使得配置修改更便利和高效;
(二)在大集成应用项目中,针对不同业务系统分别有不同的配置项,针对大量配置项的情况下,适当减弱配置修改的繁琐工作,并且避免因编码方式错误或者手误等引起的不必要的或者难以定位解决的问题,通过动态更新Nginx配置文件,使得更新配置更简单和高效;
(三)本发明通过定期探测机制动态更新配置文件,使得配置更改更智能、高效和实时性;
(四)本发明提供了键值对的统一存储,并依赖etcd特性对其进行封装,方便于第三方的调用和使用,使其更灵活高效,同时解决了大量配置的繁琐修改,易于统一维护。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于Confd动态更新配置的方法的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的基于Confd动态更新配置的方法及系统作以下详细地说明。
实施例1:
如附图1所示,本发明的基于Confd动态更新配置的方法,该方法具体如下:
S1、部署并封装Etcd键值存储系统:通过Etcd健值存储系统对健值对进行统一存储,并依赖Etcd特性对其进行封装,方便第三方调用和使用;
S2、部署Confd的配置管理工具并启动监听:借助Confd配置管理工具创建资源模板和Nginx配置文件模板,使得对Nginx新增配置时,依赖Nginx添加配置文件;添加完毕后,基于资源模板对Nginx进行发布并重新启动,使其生效;
S3、触发动态更新配置:通过对外提供增加接口、修改接口及删除接口触发基于Confd动态更新配置。
本实施例中的步骤S1中的部署Etcd键值存储系统具体如下:
S101、安装部署Etcd键值存储系统;
S102、基于Etcd的etcdctl命令封装添加的rest服务接口、修改的rest服务接口和删除的rest服务接口;
S103、根据不同业务场景调阅封装的添加的rest服务接口、修改的rest服务接口和删除的rest服务接口。
本实施例中的步骤S2中的部署并部署Confd的配置管理工具并启动监听具体如下:
S201、安装部署Confd的配置管理工具;
S202、按照实际业务需求规划Etcd的Key、Value值;
S203、创建配置目录;关键代码如下:
#mkdir-p/etc/confd/{conf.d,templates}
conf.d#资源模板,下面文件必须以toml后缀
templates#配置文件模板,下面文件必须以tmpl后缀。
S204、创建资源模板;关键代码如下:
#vi/etc/confd/conf.d/app01.conf.toml
[template]
src="app01.conf.tmpl"#默认在/etc/confd/templates目录下
dest="/usr/local/nginx/conf/vhost/app01.conf"#要更新的配置文件
keys=[
"/nginx",#监测的key
]
reload_cmd="/usr/local/nginx/sbin/nginx-s reload"#最后执行的命令。
S205、创建Nginx配置文件模板;关键代码如下:
#vi/etc/confd/templates/app01.conf.tmpl
upstream www.{{getv"/nginx/www/server_name"}}{
{{range getvs"/nginx/www/upstream/*"}}
server``.``;
`end`
}
server{
server_name www.{{getv"/nginx/www/server_name"}};
location/{
proxy_pass http://www.{{getv"/nginx/www/server_name"}};
proxy_redirect off;
proxy_set_header Host$host;
proxy_set_header X-Real-IP$remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
}。
S206、启动Confd监听Etcd。
本实施例中步骤S3中的触发动态更新配置具体如下:
S301、通过程序代码调用etcdctl的添加rest接口可动态增加服务;
S302、通过程序代码调用etcdctl的修改rest接口可动态修改服务;
S303、通过程序代码调用etcdctl的删除rest接口可动态删除该配置。
实施例2:
本发明的基于Confd动态更新配置的系统,该系统包括,
Etcd组件,用于存储Nginx的基础配置信息;其中,Etcd组件为分布式KV存储。
Confd组件,用于通过定期探测机制,监测Etcd的目录变化,即为Nginx的基础配置信息,从而获取最新值,结合配置模板引擎生成正式配置文件,并自动更新nginx配置和重启,达到动态更新配置的目的。
实施例3:
本发明实施例还提供了一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如任一实施例中的基于Confd动态更新配置的方法。
实施例4:
本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的基于Confd动态更新配置的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-R基于CONFD动态更新配置的方法及系统M、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
- 基于Confd动态更新配置的方法及系统
- 一种基于应用集群的配置数据动态更新系统及方法