CN112688878B - 一种基于haproxy实现透传源ip的tcp负载均衡的方法 - Google Patents
一种基于haproxy实现透传源ip的tcp负载均衡的方法 Download PDFInfo
- Publication number
- CN112688878B CN112688878B CN202011337971.7A CN202011337971A CN112688878B CN 112688878 B CN112688878 B CN 112688878B CN 202011337971 A CN202011337971 A CN 202011337971A CN 112688878 B CN112688878 B CN 112688878B
- Authority
- CN
- China
- Prior art keywords
- haproxy
- client
- load balancer
- tcp
- iptables
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000005540 biological transmission Effects 0.000 title claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims abstract description 9
- 230000009191 jumping Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 3
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明创造提供了一种基于haproxy实现透传源ip的tcp负载均衡的方法,包括以下步骤:S1:搭建网络拓扑环境,包括客户端主机,负载均衡器和提供后端实服务的主机;S2:在负载均衡器上编译安装haproxy;S3:配置haproxy服务,指定对所有用户的ip做客户端源ip透传;S4:添加iptables规则;S5:在后端服务器添加路由配置;S6:代理客户端向负载均衡器发送请求,负载均衡器将请求发送给后端实服务器;S7:后端服务器通过iptables规则将响应报文发往haproxy进程,haproxy将响应报文代理到客户端。本发明创造所述的一种基于haproxy实现透传源ip的tcp负载均衡的方法解决了tcp负载均衡服务客户端源ip必须携带在tcp协议报文中,影响负载均衡器与后端实服务之间的正常通信的问题。
Description
技术领域
本发明创造属于负载均衡技术领域,尤其是涉及一种基于haproxy实现透传源ip的tcp负载均衡的方法。
背景技术
由于现在提供的互联网服务越来越多的服务基于客户端源ip来进行分析,所以负载均衡能否透传源IP就变得越来越重要。
tcp负载均衡服务是4层负载均衡服务,不同与7层负载均衡服务,7层负载均衡服务,如果想透传源客户端源ip,可以放在http请求头报文中等方式,不需要更改负载均衡器跟后端实服务交互报文的源/目的ip,只需ip可以便可。
而tcp负载均衡服务,是基于tcp协议的,不能把客户端源ip携带在tcp的数据报文中,所以客户端源ip必须携带在tcp协议报文中,但这样就会影响负载均衡器与后端实服务之间的正常通信。
发明内容
有鉴于此,本发明创提出一种基于haproxy实现透传源ip的tcp负载均衡的方法以解决tcp负载均衡服务不能把客户端源ip携带在tcp的数据报文中,所以客户端源ip必须携带在tcp协议报文中,影响负载均衡器与后端实服务之间的正常通信的问题。
为达到上述目的,本发明创造的技术方案是这样实现的:
一种基于haproxy实现透传源ip的tcp负载均衡的方法,包括以下步骤:
S1:搭建网络拓扑环境,包括客户端主机,负载均衡器和提供后端实服务的主机;
S2:在负载均衡器上编译安装haproxy;
S3:配置haproxy服务,指定对所有用户的ip做客户端源ip透传;
S4:添加iptables规则。
S5:在后端服务器添加路由配置;
S6:代理客户端向负载均衡器发送请求,负载均衡器将请求发送给后端实服务器,发往后端服务器报文的源ip为客户端ip,目的ip为后端服务器ip;
S7:后端服务器通过iptables规则将响应报文发往haproxy进程,haproxy将响应报文代理到客户端。
进一步的,步骤S4利用的添加iptables规则是通过iptbales和路由配置,将发到haproxy的tcp包,重定向到本地环路上,由TPROXY内核补丁来对这些网络包进行处理,进而成功将后端server返回包路由回源客户端。
进一步的,添加iptables规则具体步骤如下:
A1:清空规则链;
A2:在mangle表中添加一个新的规则链DIVERT,对指定ip的进入PREROUTIN链的报文都跳转到新定义的DIVERT链;
A3:进入DIVERT链的报文均使用mangle表的标记功能标记上1标记;
A4:进入DIVERT链的报文均导入路由;
A5:添加100策略路由表,并将由iptables打了标记1的数据报文从100路由表规定路由流动;
A6:为路由表100设置默认路由,进入环流。
进一步的,步骤S5利用的添加路由配置是把报文路由到haproxy的机器上。
相对于现有技术,本发明创造具有以下优势:本发明提出的一种基于haproxy实现透传源ip的tcp负载均衡方法,基于haproxy实现软件负载均衡器,通过配合使用linux内核的tproxy模块,使haproxy在创建到后端实服务的套接字时,将用户ip作为套接字的源ip,从而让后端server看到。这样就将客户端源ip透传给了后端实服务。但这样在后端实服务响应包的时候,不能正常发回haproxy了,所以可以通过设置后端实服务的网关来将流量导向负载均衡器,并且在负载均衡器上设置iptables策略来,将报文发给haproxy进程来处理。可以在保证负载均衡服务下tcp服务可以透传客户端源ip给后端实服务。
附图说明
构成本发明创造的一部分的附图用来提供对本发明创造的进一步理解,本发明创造的示意性实施例及其说明用于解释本发明创造,并不构成对本发明创造的不当限定。在附图中:
图1为本发明创造实施例所述的一种基于haproxy实现透传源ip的tcp负载均衡方法流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明创造中的实施例及实施例中的特征可以相互组合。
在本发明创造的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明创造和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明创造的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明创造的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明创造的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明创造中的具体含义。
下面将参考附图并结合实施例来详细说明本发明创造。
如图1所示,一种基于haproxy实现透传源ip的tcp负载均衡的方法,包括以下步骤:
S1:搭建网络拓扑环境,包括客户端主机,负载均衡器和提供后端实服务的主机;
S2:在负载均衡器上编译安装haproxy;
S3:配置haproxy服务,指定对所有用户的ip做客户端源ip透传;
S4:添加iptables规则;
S5:在后端服务器添加路由配置;
S6:代理客户端向负载均衡器发送请求,负载均衡器将请求发送给后端实服务器,发往后端服务器报文的源ip为客户端ip,目的ip为后端服务器ip;
S7:后端服务器通过iptables规则将响应报文发往haproxy进程,haproxy将响应报文代理到客户端。
如图1所示,步骤S4利用的添加iptables规则是通过iptbales和路由配置,将发到haproxy的tcp包,重定向到本地环路上,由TPROXY内核补丁来对这些网络包进行处理,进而成功将后端server返回包路由回源客户端。
添加iptables规则具体步骤如下:
A1:清空规则链;
A2:在mangle表中添加一个新的规则链DIVERT,对指定ip的进入PREROUTIN链的报文都跳转到新定义的DIVERT链;
A3:进入DIVERT链的报文均使用mangle表的标记功能标记上1标记;
A4:进入DIVERT链的报文均导入路由;
A5:添加100策略路由表,并将由iptables打了标记1的数据报文从100路由表规定路由流动;
A6:为路由表100设置默认路由,进入环流。
如图1所示,步骤S5利用的添加路由配置是把报文路由到haproxy的机器上。
为了搭建透传客户端源ip的tcp负载均衡服务,我们需要分以下几个步骤实现:
1、搭建网络拓扑环境,分为客户端主机,负载均衡器和提供后端实服务的主机。
2、在负载均衡器上编译安装haproxy:
Make TARGET=linux-glibc arch=x86_64USE_LINUX_TPROXY=1
Make install
3、在配置haproxy服务,示例如下:
Haproxy.cfg的配置:
红色字体配置用来指定对所有用户的ip做客户端源ip透传。
4、添加iptables规则,示例如下:
iptables–F #清空规则链
iptables-t mangle-N DIVERT #在mangle表中添加一个新的规则链DIVERT
#对指定ip的进入PREROUTIN链的报文都跳转到新定义的DIVERT链
iptables-t mangle-A PREROUTING-s 10.0.46.232-p tcp-m socket-j DIVERT
#进入DIVERT链的报文均使用mangle表的标记功能标记上1标记
iptables-t mangle-A DIVERT-j MARK--set-mark 1
#进入DIVERT链的报文均导入路由
iptables-t mangle-A DIVERT-j ACCEPT
#添加100策略路由表,并将由iptables打了标记1的数据报文从100路由表规定路由流动
ip rule add fwmark 1lookup 100
#为路由表100设置默认路由,进入环流
ip route add local 0.0.0.0/0dev lo table 100
通过iptbales和路由配置,将发到haproxy的tcp包,重定向到本地环路上。然后由TPROXY内核补丁来对这些网络包进行处理,进而成功将后端server返回包路由回源客户端。
额外添加后端服务器的规则:
只需要再添加一条
iptables-t mangle-A PREROUTING-s 10.0.46.220-p tcp-m socket-j DIVERT
5、后端实服务添加路由配置,示例如下:
由于后端服务器的拿到的源ip为客户ip,回包的时候目的ip是客户ip非haproxy的ip,则需要把报文路由到haproxy的机器上去。
添加路由规则:
Route add–net 10.0.7.0/24gw 10.0.46.231
本发明提出的一种基于haproxy实现透传源ip的tcp负载均衡方法,基于haproxy实现软件负载均衡器,通过配合使用linux内核的tproxy模块,使haproxy在创建到后端实服务的套接字时,将用户ip作为套接字的源ip,从而让后端server看到。这样就将客户端源ip透传给了后端实服务。但这样在后端实服务响应包的时候,不能正常发回haproxy了,所以可以通过设置后端实服务的网关来将流量导向负载均衡器,并且在负载均衡器上设置iptables策略来,将报文发给haproxy进程来处理。可以在保证负载均衡服务下tcp服务可以透传客户端源ip给后端实服务。
以上所述仅为本发明创造的较佳实施例而已,并不用以限制本发明创造,凡在本发明创造的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明创造的保护范围之内。
Claims (2)
1.一种基于haproxy实现透传 源ip的tcp负载均衡的方法,其特征在于,包括以下步骤:
S1:搭建网络拓扑环境,包括客户端,负载均衡器和后端服务器;
S2:在负载均衡器上编译安装haproxy;
S3:配置haproxy服务,指定对所有用户的ip做客户端源ip透传;
S4:添加iptables规则;
S5:在后端服务器添加路由配置;
S6:客户端向负载均衡器发送请求,负载均衡器将请求发送给后端服务器,发往后端服务器报文的源ip为客户端ip,目的ip为后端服务器ip;
S7:后端服务器通过iptables规则将响应报文发往haproxy进程,haproxy将响应报文代理到客户端;
所述步骤S4利用的添加iptables规则是通过iptbales和路由配置,将发到haproxy的tcp包,重定向到本地环路上,由TPROXY内核补丁来对这些网络包进行处理,进而成功将后端服务器返回包路由回客户端;
所述步骤S4中添加iptables规则的具体步骤如下:
A1:清空规则链;
A2:在mangle表中添加一个新的规则链DIVERT,对指定ip的进入PREROUTIN链的报文都跳转到新定义的DIVERT链;
A3:进入DIVERT链的报文均使用mangle表的标记功能标记上1标记;
A4:进入DIVERT链的报文均导入路由;
A5:添加路由表,并将由iptables打了标记1的数据报文按路由表规定路由流动;
A6:为路由表设置默认路由,进入环流。
2.根据权利要求1所述的一种基于haproxy实现透传源ip的tcp负载均衡的方法,其特征在于:步骤S5利用的添加路由配置是把报文路由到haproxy的机器上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337971.7A CN112688878B (zh) | 2020-11-25 | 2020-11-25 | 一种基于haproxy实现透传源ip的tcp负载均衡的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011337971.7A CN112688878B (zh) | 2020-11-25 | 2020-11-25 | 一种基于haproxy实现透传源ip的tcp负载均衡的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112688878A CN112688878A (zh) | 2021-04-20 |
CN112688878B true CN112688878B (zh) | 2023-04-18 |
Family
ID=75446203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011337971.7A Active CN112688878B (zh) | 2020-11-25 | 2020-11-25 | 一种基于haproxy实现透传源ip的tcp负载均衡的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112688878B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691589B (zh) * | 2021-07-27 | 2023-12-26 | 杭州迪普科技股份有限公司 | 报文传输方法、装置及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016078072A1 (zh) * | 2014-11-21 | 2016-05-26 | 华为技术有限公司 | 一种实现业务优化的方法及系统 |
CN107135278A (zh) * | 2017-07-06 | 2017-09-05 | 深圳市视维科技股份有限公司 | 一种高效的负载均衡器及负载均衡系统 |
CN108449282A (zh) * | 2018-05-29 | 2018-08-24 | 华为技术有限公司 | 一种负载均衡方法及其装置 |
CN109361784A (zh) * | 2018-12-07 | 2019-02-19 | 成都知道创宇信息技术有限公司 | 一种在四层代理网络环境下获取客户端真实ip的方法 |
CN111008075A (zh) * | 2019-12-05 | 2020-04-14 | 安超云软件有限公司 | 一种负载均衡系统、方法、装置、设备及介质 |
CN111818151A (zh) * | 2020-07-03 | 2020-10-23 | 紫光云技术有限公司 | 基于ip隧道实现负载均衡器透传客户端ip的方法 |
-
2020
- 2020-11-25 CN CN202011337971.7A patent/CN112688878B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016078072A1 (zh) * | 2014-11-21 | 2016-05-26 | 华为技术有限公司 | 一种实现业务优化的方法及系统 |
CN107135278A (zh) * | 2017-07-06 | 2017-09-05 | 深圳市视维科技股份有限公司 | 一种高效的负载均衡器及负载均衡系统 |
CN108449282A (zh) * | 2018-05-29 | 2018-08-24 | 华为技术有限公司 | 一种负载均衡方法及其装置 |
CN109361784A (zh) * | 2018-12-07 | 2019-02-19 | 成都知道创宇信息技术有限公司 | 一种在四层代理网络环境下获取客户端真实ip的方法 |
CN111008075A (zh) * | 2019-12-05 | 2020-04-14 | 安超云软件有限公司 | 一种负载均衡系统、方法、装置、设备及介质 |
CN111818151A (zh) * | 2020-07-03 | 2020-10-23 | 紫光云技术有限公司 | 基于ip隧道实现负载均衡器透传客户端ip的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112688878A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105164990B (zh) | 在网络节点中操作的网络节点功能的方法,客户端设备 | |
US7653075B2 (en) | Processing communication flows in asymmetrically routed networks | |
CN102893556B (zh) | 用于源对等体基于容量的Diameter负载共享的方法、系统和设备 | |
CN1957568B (zh) | 用于配置跨域电信服务的开放式服务发现和路由选择机制 | |
EP2495927B1 (en) | Concept for providing information on a data packet association and for forwarding a data packet | |
US7171681B1 (en) | System and method for providing expandable proxy firewall services | |
US20170126569A1 (en) | Enhanced neighbor discovery to support load balancing | |
EP3255845A1 (en) | Multipath tcp in hybrid access networks | |
EP2559207B1 (en) | Controlling directional asymmetricity in wide area networks | |
US20060031506A1 (en) | System and method for evaluating policies for network load balancing | |
WO2011093228A1 (ja) | フロントエンドシステム、フロントエンド処理方法 | |
US20080155676A1 (en) | Method and system for creating a demilitarized zone using network stack instances | |
CN101553796B (zh) | 用于重定向请求的系统和方法 | |
CN105850102A (zh) | 服务链的控制 | |
CN104104742A (zh) | 使用网络地址转换和请求重定向的用户平面业务操控 | |
US11115498B2 (en) | Multi-path management | |
EP3113539A1 (en) | Load balancing user plane traffic in a telecommunication network | |
CN112688878B (zh) | 一种基于haproxy实现透传源ip的tcp负载均衡的方法 | |
WO2023151264A1 (zh) | 负载均衡方法、装置、节点及存储介质 | |
EP3000221A1 (en) | Methods, systems, and computer readable media for performing enhanced service routing | |
US20060239263A1 (en) | Method for the establishing of connections in a communication system | |
CN106856456B (zh) | 缓存集群服务的处理方法及系统 | |
Wang et al. | Low-latency service chaining with predefined NSH-based multipath across multiple datacenters | |
US7260644B1 (en) | Apparatus and method for re-directing a client session | |
JP2005064936A (ja) | 複数BRAS装置におけるPPPoEセッション分散方法及びシステム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |