CN110855787A - 基于Consul实现OpenResty动态负载均衡的方法 - Google Patents
基于Consul实现OpenResty动态负载均衡的方法 Download PDFInfo
- Publication number
- CN110855787A CN110855787A CN201911127937.4A CN201911127937A CN110855787A CN 110855787 A CN110855787 A CN 110855787A CN 201911127937 A CN201911127937 A CN 201911127937A CN 110855787 A CN110855787 A CN 110855787A
- Authority
- CN
- China
- Prior art keywords
- server
- consul
- openresty
- nginx
- load balancing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于Consul实现OpenResty动态负载均衡的方法,包括如下步骤:S1)当有服务器启动时,通过Consul接受注册信息并获取ip;S2)当有服务器关闭时,通过Consul接受关闭信息并从服务器ip列表中将其剔除;S3)将Consul获取的ip列表传递给Openresty配置的upstream模板中;S4)4.Nginx配置的upsream列表就会从openresty的模板中动态获取。本发明能够利用consul动态发现服务器的特性,可以针对性的使用于Openresty/Nginx动态扩容缩容的需求场景,提升负载均衡的效率,大幅减少相应运维操作的时间消耗。
Description
技术领域
本发明涉及一种动态负载均衡实现方法,尤其涉及一种基于Consul实现OpenResty动态负载均衡的方法。
背景技术
Nginx是HTTP Server、反向代理服务器、邮件代理服务器、通用的TCP/UDP代理服务器。Nginx的配置文件由单指令(simple directive)和块指令(block directive)组成,单指令只有一行,以“;”结尾,块指令后面是用“{}”包裹的多行内容。有些块指令后的花括号中可以继续包含单指令,这样的块指令被成为配置上下文(context),这样的指令有:events、http、server、location等。
Nginx是模块化设计的反向代理软件,C语言开发;OpenResty是以Nginx为核心的Web开发平台,可以解析执行Lua脚本(OpenResty与Lua的关系,类似于Jvm与Java。OpenResty是一个集成了Nginx、LuaJIT和其它很多moudels的平台,用来托管完整的web应用——包含业务逻辑,而不单纯是静态文件服务器。
在Nginx中HTTP负载均衡是需要依靠upstream模块的,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。当服务器启动之后,upstream中的服务器就是无法动态变更的了。当上游服务器不可用时,upstream会自动将服务器剔除,但是当新增服务器时,upstream无法做到增加。传统的负载均衡办法,就是修改配置,然后重启服务。
发明内容
本发明所要解决的技术问题是提供一种基于Consul实现OpenResty动态负载均衡的方法,能够利用consul动态发现服务器的特性,可以针对性的使用于Openresty/Nginx动态扩容缩容的需求场景,提升负载均衡的效率,大幅减少相应运维操作的时间消耗。
本发明为解决上述技术问题而采用的技术方案是提供一种基于Consul实现OpenResty动态负载均衡的方法,包括如下步骤:S1)当有服务器启动时,通过Consul中心接受该服务器的注册信息,并通过Consul接口调用获取该服务器ip;S2)当有服务器关闭时,通过Consul中心接受该服务器的关闭信息,并通过Consul接口调用从服务器ip列表中将其剔除;S3)将Consul获取的ip列表传递给Openresty配置的upstream模板中;S4)在Nginx中通过server指令指定后端服务器的IP地址和端口实现HTTP负载均衡,所述后端服务器的IP地址来自Nginx配置的upsream列表,所述upsream列表从Openresty的模板中动态获取。
上述的基于Consul实现OpenResty动态负载均衡的方法,其中,所述Openresty或Nginx为不同的后端服务器指定轮询权值,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则故障系统被自动剔除;轮询权值越大,则分配到的访问机率越高。
上述的基于Consul实现OpenResty动态负载均衡的方法,其中,所述Openresty或Nginx将每个请求按访问IP的hash结果分配,来自同一个IP的请求固定访问同一个后端服务器。
上述的基于Consul实现OpenResty动态负载均衡的方法,其中,还包括安装Nginx的hash软件包,所述Openresty或Nginx按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
上述的基于Consul实现OpenResty动态负载均衡的方法,其中,还包括安装Nginx的upstream_fair模块,所述Openresty或Nginx根据后端服务器的响应时间来分配请求,响应时间短的优先分配。
上述的基于Consul实现OpenResty动态负载均衡的方法,其中,还包括设置一个数组进行记录后端服务器的连接数,所述Openresty或Nginx每次选择当前连接数最少的一个后端服务器作为当前分配到的后端服务器,并将该后端服务器的连接数加1。
本发明对比现有技术有如下的有益效果:本发明提供的基于Consul实现OpenResty动态负载均衡的方法,能够利用consul动态发现服务器的特性,可以针对性的使用于Openresty/Nginx动态扩容缩容的需求场景,提升负载均衡的效率,大幅减少相应运维操作的时间消耗。
附图说明
图1为本发明基于Consul实现OpenResty动态负载均衡的系统架构图;
图2为本发明基于Consul实现OpenResty动态负载均衡的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
Consul是一个服务网格(微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
请参见图1和图2,本发明提供的基于Consul实现OpenResty动态负载均衡的方法,包括如下步骤:
S1)当有服务器启动时,通过Consul中心接受该服务器的注册信息,并通过Consul接口调用获取该服务器ip;
S2)当有服务器关闭时,通过Consul中心接受该服务器的关闭信息,并通过Consul接口调用从服务器ip列表中将其剔除;
S3)将Consul获取的ip列表传递给Openresty配置的upstream模板中;
S4)在Nginx中通过server指令指定后端服务器的IP地址和端口实现HTTP负载均衡,所述后端服务器的IP地址来自Nginx配置的upsream列表,所述upsream列表从Openresty的模板中动态获取。
本发明的OpenResty/Nginx负载均衡具体包括如下几种方式:
1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。Weight指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
2、ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
3、url_hash:按方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包。
4、fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
5、least_conn:最少连接负载均衡算法,简单来说就是每次选择的后端都是当前最少连接的一个server(这个最少连接不是共享的,是每个worker都有自己的一个数组进行记录后端server的连接数)。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (6)
1.一种基于Consul实现OpenResty动态负载均衡的方法,其特征在于,包括如下步骤:
S1)当有服务器启动时,通过Consul中心接受该服务器的注册信息,并通过Consul接口调用获取该服务器ip;
S2)当有服务器关闭时,通过Consul中心接受该服务器的关闭信息,并通过Consul接口调用从服务器ip列表中将其剔除;
S3)将Consul获取的ip列表传递给Openresty配置的upstream模板中;
S4)在Nginx中通过server指令指定后端服务器的IP地址和端口实现HTTP负载均衡,所述后端服务器的IP地址来自Nginx配置的upsream列表,所述upsream列表从Openresty的模板中动态获取。
2.如权利要求1所述的基于Consul实现OpenResty动态负载均衡的方法,其特征在于,所述Openresty或Nginx为不同的后端服务器指定轮询权值,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则故障系统被自动剔除;轮询权值越大,则分配到的访问机率越高。
3.如权利要求1所述的基于Consul实现OpenResty动态负载均衡的方法,其特征在于,所述Openresty或Nginx将每个请求按访问IP的hash结果分配,来自同一个IP的请求固定访问同一个后端服务器。
4.如权利要求1所述的基于Consul实现OpenResty动态负载均衡的方法,其特征在于,还包括安装Nginx的hash软件包,所述Openresty或Nginx按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
5.如权利要求1所述的基于Consul实现OpenResty动态负载均衡的方法,其特征在于,还包括安装Nginx的upstream_fair模块,所述Openresty或Nginx根据后端服务器的响应时间来分配请求,响应时间短的优先分配。
6.如权利要求1所述的基于Consul实现OpenResty动态负载均衡的方法,其特征在于,还包括设置一个数组进行记录后端服务器的连接数,所述Openresty或Nginx每次选择当前连接数最少的一个后端服务器作为当前分配到的后端服务器,并将该后端服务器的连接数加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127937.4A CN110855787A (zh) | 2019-11-18 | 2019-11-18 | 基于Consul实现OpenResty动态负载均衡的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127937.4A CN110855787A (zh) | 2019-11-18 | 2019-11-18 | 基于Consul实现OpenResty动态负载均衡的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110855787A true CN110855787A (zh) | 2020-02-28 |
Family
ID=69601941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911127937.4A Pending CN110855787A (zh) | 2019-11-18 | 2019-11-18 | 基于Consul实现OpenResty动态负载均衡的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110855787A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115987900A (zh) * | 2023-01-17 | 2023-04-18 | 北京神州安付科技股份有限公司 | 一种ssl vpn安全网关的负载均衡方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016062089A1 (zh) * | 2014-10-20 | 2016-04-28 | 中兴通讯股份有限公司 | 基于hls的能力控制方法及服务系统和slb服务器 |
CN106953758A (zh) * | 2017-03-20 | 2017-07-14 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的动态配置管理方法及系统 |
CN110012098A (zh) * | 2019-04-04 | 2019-07-12 | 浙江工业大学 | 一种web高并发访问处理系统及方法 |
-
2019
- 2019-11-18 CN CN201911127937.4A patent/CN110855787A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016062089A1 (zh) * | 2014-10-20 | 2016-04-28 | 中兴通讯股份有限公司 | 基于hls的能力控制方法及服务系统和slb服务器 |
CN106953758A (zh) * | 2017-03-20 | 2017-07-14 | 北京搜狐新媒体信息技术有限公司 | 一种基于Nginx服务器的动态配置管理方法及系统 |
CN110012098A (zh) * | 2019-04-04 | 2019-07-12 | 浙江工业大学 | 一种web高并发访问处理系统及方法 |
Non-Patent Citations (1)
Title |
---|
肖明魁: "基于Nginx负载均衡技术初探", 《科技展望》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115987900A (zh) * | 2023-01-17 | 2023-04-18 | 北京神州安付科技股份有限公司 | 一种ssl vpn安全网关的负载均衡方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8589920B2 (en) | Resource allocation | |
CN111431740B (zh) | 数据的传输方法、装置、设备及计算机可读存储介质 | |
CN113596110B (zh) | 一种面向异构云的云原生微服务平台 | |
JP6047577B2 (ja) | トラフィックディレクタ環境におけるロードバランシングおよびデータ圧縮の柔軟性を提供するためのシステムおよび方法 | |
JP5485993B2 (ja) | サービスのロードバランシング | |
CN108200165B (zh) | 请求传输系统、方法、装置及存储介质 | |
CN106899680A (zh) | 多区块链的分片处理方法和装置 | |
US7536688B2 (en) | Segmented virtual machine | |
US20070165615A1 (en) | Apparatus and method for notifying communication network event in application server capable of supporting open API based on Web services | |
CN110311948B (zh) | 容器/容器组间的通信方法及基于此的容器云网络系统 | |
CN109451014B (zh) | 一种WebService代理系统及其透明代理方法 | |
CN103051551A (zh) | 一种分布式系统及其自动维护方法 | |
CN111327668B (zh) | 网络管理方法、装置、设备和存储介质 | |
US20230254312A1 (en) | Service processing method and device | |
CN110677475A (zh) | 一种微服务处理方法、装置、设备及存储介质 | |
CN110191186A (zh) | Cdn服务器调度方法、设备及计算机可读存储介质 | |
CN112256246A (zh) | 一种用于电力系统中支持跨语言调用的微服务集成架构 | |
CN111092921A (zh) | 数据采集方法、装置及存储介质 | |
CN114338769B (zh) | 访问请求的处理方法及装置 | |
US20220318065A1 (en) | Managing computer workloads across distributed computing clusters | |
CN110855787A (zh) | 基于Consul实现OpenResty动态负载均衡的方法 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN112218334B (zh) | 核心网负荷的动态优化方法、装置及计算设备 | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN109788062A (zh) | 输电系统服务器负载均衡方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200228 |