基于Nginx自研扩展模块自动拉取服务注册中心TCP配置方法与流程

文档序号:20764728发布日期:2020-05-15 18:44阅读:1425来源:国知局
基于Nginx自研扩展模块自动拉取服务注册中心TCP配置方法与流程

本发明属于网络服务通讯领域,尤其涉及一种基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法。



背景技术:

当前互联网架构下,大部分系统已经转型分布式。同一个服务后台会部署多份服务实例,对外暴露多个服务地址。在部分服务实例故障的情况下,不影响整体服务的可用行。

服务注册中心是存储服务实例和服务地址的数据库。服务实例启动时把服务地址注册到服务注册中心,服务实例终止时取消注册。服务客户端根据路由查询服务注册中心,找出可用的服务实例的地址。常用的服务注册中心有:consul,etcd和nacos等。

nginx是一个高性能的http和反向代理web服务器,能够提供http协议和tcp协议的反向代理。

当前面临的技术缺陷是:nginx的tcp反向代理只支持静态的tcpupstream配置,即服务实例的地址需要预先写在nginx的配置文件中。当服务实例的地址发生变化时,nginx不能将服务客户端请求反向代理到最新的服务实例上,导致服务客户端请求服务实例异常。



技术实现要素:

本发明所要解决的技术问题是在于克服现有技术的缺点与不足,通过自主研发nginx扩展模块,编译nginx源码,指定自研的扩展模块,生成nginx可执行文件,启动nginx服务,提供tcp的反向代理服务。

本发明为解决上述技术问题采用以下技术方案:

基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法,包含客

户端、nginx服务、服务注册中心和服务实例,具体包含如下步骤:

步骤1,设置nginxtcp配置文件:

步骤2,启动nginx服务,同时请求服务注册中心,获取服务实例的地址,写入到配置文件upsync_dump_path,nginx动态加载配置文件upsync_dump_path,无需重启nginx,至此nginx可对外正常提供tcp反向代理功能;

步骤3,nginx间隔定时同步服务注册中心时间间隔upsync_interval时间向服务注册中心同步tcp配置,写入到配置文件路径upsync_dump_path,nginx动态加载配置文件upsync_dump_path;

步骤4,当反向代理到一个服务实例a时,若超过服务实例地址超时时间upsync_timeout,且服务实例a未响应,则说明服务实例a故障,进而换另一个服务实例b重新尝试反向代理,并把服务实例a从upstream中踢出;过一定时间,再去尝试连接服务实例a,若连接成功,则把服务实例a重新加入到upstream。

作为本发明基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法的进一步优选

方案,在一个实施方式中,所述nginxtcp配置文件包含动态upstream必要参数和server必要参数;

其中,动态upstream必要参数,用于服务注册中心的类型,通信地址和交互的时间的设置;

server必要参数,用于对外提供服务的端口和代理的后台服务的设置。

作为本发明基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法的进一步优选

方案,在一个实施方式中,所述动态upstream必要参数包含服务注册中心类型upsync_type,服务注册中心访问地址upsync,服务实例地址超时时间upsync_timeout,定时同步服务注册中心时间间隔upsync_interval。

作为本发明基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法的进一步优选

方案,在一个实施方式中,所述server必要参数包含nginx反向代理服务端口listen,proxy_pass指定转发的upstream。

作为本发明基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法的进一步优选

方案,在一个实施方式中,在步骤4中,一定时间为10秒。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

1、减少人工修改nginx的配置文件的次数,降低人工操作的错误率;

2、降低服务请求失败率,提高服务的可用性;

3、能够自动识别出不可用服务实例,主动踢出服务实例地址群,提高反向代理效率;

4、能够适配多种服务注册中心,应用范围广。

附图说明

图1是本发明的实现逻辑图;

图2是本发明的服务实施部署图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明通过自主研发nginx扩展模块,编译nginx源码,指定自研的扩展模块,生成nginx可执行文件,启动nginx服务,提供tcp的反向代理服务。减少人工修改nginx的配置文件的次数,降低人工操作的错误率;降低服务请求失败率,提高服务的可用性。

具体实施例如下:

基于nginx自研扩展模块自动拉取服务注册中心tcp配置方法,如图2所示,包含多个

客户端、nginx服务、服务注册中心和ab两个服务实例,具体包含如下步骤:如图1所示,

步骤1,设置nginxtcp配置文件:

动态upstream必要参数:服务注册中心类型upsync_type,服务注册中心访问地址upsync,服务实例地址超时时间upsync_timeout,定时同步服务注册中心时间间隔upsync_interval,生成服务实例地址的配置文件路径upsync_dump_path;

动态upstream的作用:服务注册中心的类型,通信地址和交互的时间的设置;

server必要参数:nginx反向代理服务端口listen,proxy_pass指定转发的upstream;

server的作用:对外提供服务的端口和代理的后台服务的设置;

步骤2,启动nginx服务,同时请求服务注册中心,获取服务实例的地址,写入到配置文件upsync_dump_path,nginx动态加载配置文件upsync_dump_path,无需重启nginx,至此nginx可对外正常提供tcp反向代理功能;

步骤3,nginx间隔定时同步服务注册中心时间间隔upsync_interval时间向服务注册中心同步tcp配置,写入到配置文件upsync_dump_path,nginx动态加载配置文件upsync_dump_path;

步骤4,当反向代理到一个服务实例a时,若超过服务实例地址超时时间upsync_timeout,且服务实例a未响应,则说明服务实例a故障,进而换另一个服务实例b重新尝试反向代理,并把服务实例a从upstream中踢出;过10秒钟,再去尝试连接服务实例a,若连接成功,则把服务实例a重新加入到upstream。如图2所示。

本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。上面对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以再不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1