CN110830574B - 一种基于docker容器实现内网负载均衡的方法 - Google Patents

一种基于docker容器实现内网负载均衡的方法 Download PDF

Info

Publication number
CN110830574B
CN110830574B CN201911079326.7A CN201911079326A CN110830574B CN 110830574 B CN110830574 B CN 110830574B CN 201911079326 A CN201911079326 A CN 201911079326A CN 110830574 B CN110830574 B CN 110830574B
Authority
CN
China
Prior art keywords
load balancing
docker container
node
user
intranet
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.)
Active
Application number
CN201911079326.7A
Other languages
English (en)
Other versions
CN110830574A (zh
Inventor
张信杰
胡章丰
李彦君
任秋峥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN201911079326.7A priority Critical patent/CN110830574B/zh
Publication of CN110830574A publication Critical patent/CN110830574A/zh
Application granted granted Critical
Publication of CN110830574B publication Critical patent/CN110830574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Abstract

本发明公开一种基于docker容器实现内网负载均衡的方法,涉及计算机技术领域,采用技术方案基于控制模块、openvswitch网桥、docker容器和lb‑agent执行模块。控制模块面向用户操作,负责负载均衡数据的配置管理,接收来自用户的负载均衡配置请求,将用户请求发到负载均衡节点,并将用户配置数据记入数据库中;lb‑agent执行模块运行在负载均衡节点上,负责接收用户负载均衡的配置请求,对负载均衡节点进行负载均衡的实际配置,还负责对负载均衡节点网卡、openvswitch网桥和docker容器进行管理配置;openvswitch网桥连接网卡和docker容器;docker容器与负载均衡实例一一对应,用于运行lvs或者nginx并且配置后端服务器相关信息。本发明解决了负载均衡节点跨vpc和后端服务器通讯的难题,提高了负载均衡节点的维度。

Description

一种基于docker容器实现内网负载均衡的方法
技术领域
本发明涉及计算机技术领域,具体的说是一种基于docker容器实现内网负载均衡的方法。
背景技术
公有云计算是近年来IT基础设施领域最热门的话题之一,其对计算、网络、存储等各种资源的虚拟化抽象,为用户提供了极为方便的资源使用方式和灵活的资源扩展能力。负载均衡作为公有云产品的一项基本功能,它不但可以满足用户快速构建自己业务数据持久化云服务的需求,而且可以使用户服务在大数据量访问下保持高效稳定的运行,并且大大的节约运营维护成本。负载均衡基本原理是将访问流量根据转发策略分发到后端多台云服务器的流量分发控制服务。通过设置虚拟服务地址,将添加的后端服务器实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的后端服务器实例,扩展了应用的服务能力,增强了应用的可用性。
内网负载均衡通过私网IP对外提供服务,将来自同一个用户下的客户端请求按照指定的负载均衡策略分发到后端进行处理。在基于openstack的公有云平台下,不同vpc下的虚机是无法通过内网地址通讯的,这就要求负载均衡实例必须具有和不同vpc下后端服务器通讯的能力。如果让负载均衡实例和后端服务器同处于一个vpc下,那将会很大程度的浪费服务器虚拟资源,提高了运营成本;如果为负载均衡实例增加对应vpc的网络PORT,又会面临不同vpc相同IP地址的难题。
发明内容
本发明针对当前基于openstack公有云平台下内网负载均衡实例虚机的缺点,提供一种基于docker容器实现内网负载均衡的方法,解决负载均衡节点跨vpc和后端服务器通讯的难题,提高负载均衡节点的维度,
本发明的一种基于docker容器实现内网负载均衡的方法,解决上述技术问题采用的技术方案如下:
一种基于docker容器实现内网负载均衡的方法,该方法基于控制模块、openvswitch网桥、docker容器和lb-agent执行模块;
控制模块面向用户操作,负责负载均衡数据的配置管理,接收来自用户的负载均衡配置请求,并将用户配置数据记入数据库中,并且进一步将用户请求发到负载均衡节点;
lb-agent执行模块运行在负载均衡节点上,负责接收用户负载均衡的配置请求,对负载均衡节点进行负载均衡的实际配置,还负责对负载均衡节点网卡、openvswitch网桥和docker容器进行管理配置;
openvswitch网桥连接负载均衡节点网卡和docker容器,实现不同vpc网络数据包的隔离;
docker容器与负载均衡实例一一对应,用于运行lvs或者nginx并且配置后端服务器相关信息,实现用户实际业务数据包的分发。
可选的,所涉及配置请求包括增加删除负载均衡实例、增加删除监听器、绑定解绑后端服务器三类基本操作。
可选的,所涉及openvswitch网桥连接负载均衡节点网卡和docker容器时,将docker容器的IP设置为网卡的IP。
进一步可选的,所涉及实现方法的实现流程包括:
1)用户向控制模块下发创建内网负载均衡实例的命令,
2)负载均衡节点的lb-agent执行模块接受创建负载均衡命令,同时,负载均衡节点会创建一个该负载均衡实例所选择的对应子网的网卡;lb-agent执行模块为负载均衡实例创建一个docker容器和openvswitch网桥,并且将新创建的网卡挂到openvswitch网桥上,创建veth pair,将docker容器也挂在该openvswitch网桥上;
3)负载均衡节点的lb-agent执行模块将新建网卡的地址设置到docker容器内,为了绑定floating ip时可以正常通讯,还要为docker容器添加默认路由;
4)docker容器内运行nginx进程,lb-agent执行模块收到监听器和后端服务器的相关操作命令时,会对nginx配置文件进行修改,并且将配置文件下发到docker容器中,nginx进程reload配置文件;
5)用户为内网负载均衡实例绑定EIP操作后,内网负载均衡可以转化为外网负载均衡。
5、根据权利要求4所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,在步骤1)中,控制模块收到创建内网负载均衡实例的命令后,控制模块首先判断用户范围内是否已经有负载均衡的节点:
a)如果有,就向该节点的lb-agent执行模块发送创建负载均衡的命令,继续执行步骤2);
b)如果没有,在该用户空间内创建负载均衡节点,随后返回执行a)。
进一步的,在步骤b)中,一个用户空间内创建一台负载均衡虚拟节点,同一个用户下创建的负载均衡实例可以共用此负载均衡虚拟节点。
进一步的,所涉及方法的实现流程中,需要实现内网负载均衡HA时,可以通过控制模块定期监控lb-agent执行模块、docker容器和负载均衡节点的状态,
a)如果lb-agent执行模块异常,则下发重启命令;
b)如果是docker容器异常,则下发容器重启或者重新构建命令;
c)如果是虚拟负载均衡节点异常,则下发重启恢复虚拟节点的命令。
进一步的,所涉及方法的实现流程中,用户可以在不同的vpc和不同的子网下创建内网负载均衡实例;基于docker容器具有自己独立的协议栈,可以使不同的负载均衡实例之间互不干扰。
本发明的一种基于docker容器实现内网负载均衡的方法,与现有技术相比具有的有益效果是:
1)本发明以用户为单位创建负载均衡虚拟节点,在负载均衡节点上创建对应vpc子网的网卡、创建openvswitch网桥、创建docker容器,在docker容器内运行nginx进程,并将网卡、docker容器挂接到网桥上,同时将docker容器IP设置为网卡的IP,巧妙的解决了负载均衡节点跨vpc和后端服务器通讯的难题,提高了负载均衡节点的维度,该用户下的所有的负载均衡实例都可以运行在此虚拟节点上,提高了平台虚拟资源的利用率,降低了运营成本;
2)本发明基于docker容器具有自己独立的协议栈,实现负载均衡节点网络协议栈的隔离,进一步解决了内网负载均衡不同vpc下相同内网IP冲突的问题。
附图说明
附图1是本发明实施例一的方法架构示意图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
结合附图1,本实施例提出一种基于docker容器实现内网负载均衡的方法,该方法基于控制模块、openvswitch网桥、docker容器和lb-agent执行模块。
控制模块面向用户操作,负责负载均衡数据的配置管理,接收来自用户的负载均衡配置请求,并将用户配置数据记入数据库中,并且进一步将用户请求发到负载均衡节点。
lb-agent执行模块运行在负载均衡节点上,负责接收用户负载均衡的配置请求,对负载均衡节点进行负载均衡的实际配置,还负责对负载均衡节点网卡、openvswitch网桥和docker容器进行管理配置。
openvswitch网桥连接负载均衡节点网卡和docker容器,实现不同vpc网络数据包的隔离,如vpc1网络和vpc2网络中数据包的隔离。
docker容器与负载均衡实例一一对应,用于运行lvs或者nginx并且配置后端服务器相关信息,实现用户实际业务数据包的分发。
在本实施例中,所涉及配置请求包括增加删除负载均衡实例、增加删除监听器、绑定解绑后端服务器三类基本操作。
在本实施例中,所涉及openvswitch网桥连接负载均衡节点网卡和docker容器时,将docker容器的IP设置为网卡的IP。
实施例二:
参考附图1,基于实施例一,本实施例提出一种基于docker容器实现内网负载均衡的方法,该方法的实现流程包括:
1)用户向控制模块下发创建内网负载均衡实例的命令,
2)负载均衡节点的lb-agent执行模块接受创建负载均衡命令,同时,负载均衡节点会创建一个该负载均衡实例所选择的对应子网的网卡;lb-agent执行模块为负载均衡实例创建一个docker容器和openvswitch网桥,并且将新创建的网卡挂到openvswitch网桥上,创建veth pair,将docker容器也挂在该openvswitch网桥上;
3)负载均衡节点的lb-agent执行模块将新建网卡的地址设置到docker容器内,为了绑定floating ip时可以正常通讯,还要为docker容器添加默认路由;
4)docker容器内运行nginx进程,lb-agent执行模块收到监听器和后端服务器的相关操作命令时,会对nginx配置文件进行修改,并且将配置文件下发到docker容器中,nginx进程reload配置文件;
5)用户为内网负载均衡实例绑定EIP操作后,内网负载均衡可以转化为外网负载均衡。
在步骤1)中,控制模块收到创建内网负载均衡实例的命令后,控制模块首先判断用户范围内是否已经有负载均衡的节点:
a)如果有,就向该节点的lb-agent执行模块发送创建负载均衡的命令,继续执行步骤2);
b)如果没有,在该用户空间内创建负载均衡节点,随后返回执行a)。
在步骤b)中,一个用户空间内创建一台负载均衡虚拟节点,同一个用户下创建的负载均衡实例可以共用此负载均衡虚拟节点。
在本实施例的实现流程中,需要实现内网负载均衡HA时,可以通过控制模块定期监控lb-agent执行模块、docker容器和负载均衡节点的状态,
a)如果lb-agent执行模块异常,则下发重启命令;
b)如果是docker容器异常,则下发容器重启或者重新构建命令;
c)如果是虚拟负载均衡节点异常,则下发重启恢复虚拟节点的命令。
在本实施例的实现流程中,用户可以在不同的vpc和不同的子网下创建内网负载均衡实例;基于docker容器具有自己独立的协议栈,可以使不同的负载均衡实例之间互不干扰。
综上可知,采用本发明的一种基于docker容器实现内网负载均衡的方法,可以以用户为单位创建负载均衡虚拟节点,解决负载均衡节点跨vpc和后端服务器通讯的难题,提高平台虚拟资源的利用率,降低运营成本。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

Claims (7)

1.一种基于docker容器实现内网负载均衡的方法,其特征在于,该方法基于控制模块、openvswitch网桥、docker容器和lb-agent执行模块;
所述控制模块面向用户操作,负责负载均衡数据的配置管理,接收来自用户的负载均衡配置请求,并将用户配置数据记入数据库中,并且进一步将用户请求发到负载均衡节点;
所述lb-agent执行模块运行在负载均衡节点上,负责接收用户负载均衡的配置请求,对负载均衡节点进行负载均衡的实际配置,还负责对负载均衡节点网卡、openvswitch网桥和docker容器进行管理配置;
所述openvswitch网桥连接负载均衡节点网卡和docker容器,并将docker容器的IP设置为网卡的IP,实现不同vpc网络数据包的隔离;
所述docker容器与负载均衡实例一一对应,用于运行lvs或者nginx并且配置后端服务器相关信息,实现用户实际业务数据包的分发。
2.根据权利要求1所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,所述配置请求包括增加删除负载均衡实例、增加删除监听器、绑定解绑后端服务器三类基本操作。
3.根据权利要求1或2所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,该方法的实现流程包括:
1)用户向控制模块下发创建内网负载均衡实例的命令,
2)负载均衡节点的lb-agent执行模块接受创建负载均衡命令,同时,负载均衡节点会创建一个该负载均衡实例所选择的对应子网的网卡;lb-agent执行模块为负载均衡实例创建一个docker容器和openvswitch网桥,并且将新创建的网卡挂到openvswitch网桥上,创建veth pair,将docker容器也挂在该openvswitch网桥上;
3)负载均衡节点的lb-agent执行模块将新建网卡的地址设置到docker容器内,为了绑定floating ip时可以正常通讯,还要为docker容器添加默认路由;
4)docker容器内运行nginx进程,lb-agent执行模块收到监听器和后端服务器的相关操作命令时,会对nginx配置文件进行修改,并且将配置文件下发到docker容器中,nginx进程reload配置文件;
5)用户为内网负载均衡实例绑定EIP操作后,内网负载均衡可以转化为外网负载均衡。
4.根据权利要求3所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,在步骤1)中,控制模块收到创建内网负载均衡实例的命令后,控制模块首先判断用户范围内是否已经有负载均衡的节点:
a)如果有,就向该节点的lb-agent执行模块发送创建负载均衡的命令,继续执行步骤2);
b)如果没有,在该用户空间内创建负载均衡节点,随后返回执行a)。
5.根据权利要求4所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,在步骤b)中,一个用户空间内创建一台负载均衡虚拟节点,同一个用户下创建的负载均衡实例可以共用此负载均衡虚拟节点。
6.根据权利要求3所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,该系统的实现流程中,需要实现内网负载均衡HA时,可以通过控制模块定期监控lb-agent执行模块、docker容器和负载均衡节点的状态,
a)如果lb-agent执行模块异常,则下发重启命令;
b)如果是docker容器异常,则下发容器重启或者重新构建命令;
c)如果是虚拟负载均衡节点异常,则下发重启恢复虚拟节点的命令。
7.根据权利要求6所述的一种基于docker容器实现内网负载均衡的方法,其特征在于,该系统的实现流程中,用户可以在不同的vpc和不同的子网下创建内网负载均衡实例;基于docker容器具有自己独立的协议栈,可以使不同的负载均衡实例之间互不干扰。
CN201911079326.7A 2019-11-05 2019-11-05 一种基于docker容器实现内网负载均衡的方法 Active CN110830574B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911079326.7A CN110830574B (zh) 2019-11-05 2019-11-05 一种基于docker容器实现内网负载均衡的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911079326.7A CN110830574B (zh) 2019-11-05 2019-11-05 一种基于docker容器实现内网负载均衡的方法

Publications (2)

Publication Number Publication Date
CN110830574A CN110830574A (zh) 2020-02-21
CN110830574B true CN110830574B (zh) 2023-01-20

Family

ID=69553079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911079326.7A Active CN110830574B (zh) 2019-11-05 2019-11-05 一种基于docker容器实现内网负载均衡的方法

Country Status (1)

Country Link
CN (1) CN110830574B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111371685B (zh) * 2020-02-28 2022-06-17 北京百度网讯科技有限公司 数据处理、IPv6挂载方法和装置
CN111638957B (zh) * 2020-06-01 2022-10-11 浪潮云信息技术股份公司 一种集群共享式公有云负载均衡的实现方法
CN111770211B (zh) * 2020-06-17 2023-04-18 北京百度网讯科技有限公司 一种snat方法、装置、电子设备及存储介质
CN114640555B (zh) * 2022-02-24 2023-06-23 联想(北京)有限公司 一种信息处理方法、虚机集群及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105376303A (zh) * 2015-10-23 2016-03-02 深圳前海达闼云端智能科技有限公司 一种Docker实现系统及其通信方法
CN110266761A (zh) * 2019-05-17 2019-09-20 平安科技(深圳)有限公司 负载均衡应用创建方法、装置、计算机设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850432B2 (en) * 2012-05-30 2014-09-30 Red Hat, Inc. Controlling utilization in a multi-tenant platform-as-a-service (PaaS) environment in a cloud computing system
US11146530B2 (en) * 2016-07-13 2021-10-12 Paypal, Inc. Network containers
CN106506314B (zh) * 2016-09-30 2019-12-17 北京赢点科技有限公司 基于docker的网络高可用方法及装置
CN108111470B (zh) * 2016-11-25 2020-06-16 华为技术有限公司 容器的部署方法、服务间的通信方法及相关装置
CN106790595B (zh) * 2016-12-29 2020-12-22 上海理想信息产业(集团)有限公司 一种Docker容器主动负载均衡装置及方法
CN108521403A (zh) * 2018-03-09 2018-09-11 山东超越数控电子股份有限公司 一种对Docker容器平台上多租户网络进行隔离的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105376303A (zh) * 2015-10-23 2016-03-02 深圳前海达闼云端智能科技有限公司 一种Docker实现系统及其通信方法
CN110266761A (zh) * 2019-05-17 2019-09-20 平安科技(深圳)有限公司 负载均衡应用创建方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN110830574A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110830574B (zh) 一种基于docker容器实现内网负载均衡的方法
US10700979B2 (en) Load balancing for a virtual networking system
US11429408B2 (en) System and method for network function virtualization resource management
US11934341B2 (en) Virtual RDMA switching for containerized
US10375015B2 (en) Methods and system for allocating an IP address for an instance in a network function virtualization (NFV) system
US9999030B2 (en) Resource provisioning method
US8423632B2 (en) Method, network management center, and a related device for configuring a network policy for a virtual port
CN111638957B (zh) 一种集群共享式公有云负载均衡的实现方法
CN106301859B (zh) 一种管理网卡的方法、装置及系统
CN110088732A (zh) 一种数据包处理方法、主机和系统
US11095716B2 (en) Data replication for a virtual networking system
CN111880902A (zh) 一种pod创建方法、装置、设备及可读存储介质
CN102316043B (zh) 端口虚拟化方法、交换机及通信系统
US10469593B2 (en) Method and system for sharded resource brokering
CN112910685B (zh) 实现对容器网络统一管理的方法及装置
KR20150040087A (ko) 클라우드 서비스 지원을 위한 통신 시스템, 융합 통신 장치 및 방법
CN112600903B (zh) 一种弹性虚拟网卡迁移方法
CN105704042A (zh) 报文处理方法、bng及bng集群系统
CN110661865A (zh) 一种网络通信方法及网络通信架构
CN107534577A (zh) 一种网络业务实例化的方法及设备
CN110795209B (zh) 一种控制方法和装置
WO2020181733A1 (zh) 一种基于vpc的多数据中心互通方法及相关设备
CN108833570A (zh) 一种基于云存储的集群存储及均衡传输系统
CN113709220A (zh) 虚拟负载均衡器的高可用实现方法、系统及电子设备
CN112910796A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Tidal Cloud Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant