CN112688878A - 一种基于haproxy实现透传源ip的tcp负载均衡的方法 - Google Patents

一种基于haproxy实现透传源ip的tcp负载均衡的方法 Download PDF

Info

Publication number
CN112688878A
CN112688878A CN202011337971.7A CN202011337971A CN112688878A CN 112688878 A CN112688878 A CN 112688878A CN 202011337971 A CN202011337971 A CN 202011337971A CN 112688878 A CN112688878 A CN 112688878A
Authority
CN
China
Prior art keywords
haproxy
client
tcp
source
transparent transmission
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.)
Granted
Application number
CN202011337971.7A
Other languages
English (en)
Other versions
CN112688878B (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.)
Unicloud Technology Co Ltd
Original Assignee
Unicloud 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 Unicloud Technology Co Ltd filed Critical Unicloud Technology Co Ltd
Priority to CN202011337971.7A priority Critical patent/CN112688878B/zh
Publication of CN112688878A publication Critical patent/CN112688878A/zh
Application granted granted Critical
Publication of CN112688878B publication Critical patent/CN112688878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing 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负载均衡的方法
技术领域
本发明创造属于负载均衡技术领域,尤其是涉及一种基于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的配置:
Figure BDA0002797796460000062
Figure BDA0002797796460000071
红色字体配置用来指定对所有用户的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 (4)

1.一种基于haproxy实现透传源ip的tcp负载均衡的方法,其特征在于,包括以下步骤:
S1:搭建网络拓扑环境,包括客户端主机,负载均衡器和提供后端实服务的主机;
S2:在负载均衡器上编译安装haproxy;
S3:配置haproxy服务,指定对所有用户的ip做客户端源ip透传;
S4:添加iptables规则;
S5:在后端服务器添加路由配置;
S6:代理客户端向负载均衡器发送请求,负载均衡器将请求发送给后端实服务器,发往后端服务器报文的源ip为客户端ip,目的ip为后端服务器ip;
S7:后端服务器通过iptables规则将响应报文发往haproxy进程,haproxy将响应报文代理到客户端。
2.根据权利要求1所述的一种基于haproxy实现透传源ip的tcp负载均衡的方法,其特征在于:步骤S4利用的添加iptables规则是通过iptbales和路由配置,将发到haproxy的tcp包,重定向到本地环路上,由TPROXY内核补丁来对这些网络包进行处理,进而成功将后端server返回包路由回源客户端。
3.根据权利要求2所述的一种基于haproxy实现透传源ip的tcp负载均衡的方法,其特征在于:添加iptables规则具体步骤如下:
A1:清空规则链;
A2:在mangle表中添加一个新的规则链DIVERT,对指定ip的进入PREROUTIN链的报文都跳转到新定义的DIVERT链;
A3:进入DIVERT链的报文均使用mangle表的标记功能标记上1标记;
A4:进入DIVERT链的报文均导入路由;
A5:添加100策略路由表,并将由iptables打了标记1的数据报文从100路由表规定路由流动;
A6:为路由表100设置默认路由,进入环流。
4.根据权利要求1所述的一种基于haproxy实现透传源ip的tcp负载均衡的方法,其特征在于:步骤S5利用的添加路由配置是把报文路由到haproxy的机器上。
CN202011337971.7A 2020-11-25 2020-11-25 一种基于haproxy实现透传源ip的tcp负载均衡的方法 Active CN112688878B (zh)

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 true CN112688878A (zh) 2021-04-20
CN112688878B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691589A (zh) * 2021-07-27 2021-11-23 杭州迪普科技股份有限公司 报文传输方法、装置及系统

Citations (6)

* Cited by examiner, † Cited by third party
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的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691589A (zh) * 2021-07-27 2021-11-23 杭州迪普科技股份有限公司 报文传输方法、装置及系统
CN113691589B (zh) * 2021-07-27 2023-12-26 杭州迪普科技股份有限公司 报文传输方法、装置及系统

Also Published As

Publication number Publication date
CN112688878B (zh) 2023-04-18

Similar Documents

Publication Publication Date Title
US20210185134A1 (en) Redirecting A Client Device From A First Gateway To A Second Gateway For Accessing A Network Node Function
US7653075B2 (en) Processing communication flows in asymmetrically routed networks
EP2495927B1 (en) Concept for providing information on a data packet association and for forwarding a data packet
US7738452B1 (en) Techniques for load balancing subscriber-aware application proxies
US7673048B1 (en) Methods and apparatus for establishing a computerized device tunnel connection
US7171681B1 (en) System and method for providing expandable proxy firewall services
US20190182363A1 (en) Multipath tcp in hybrid access networks
US20170126569A1 (en) Enhanced neighbor discovery to support load balancing
WO2011093228A1 (ja) フロントエンドシステム、フロントエンド処理方法
US20080155676A1 (en) Method and system for creating a demilitarized zone using network stack instances
CN101553796B (zh) 用于重定向请求的系统和方法
CN104170329A (zh) 用于提供QoS优先化数据业务的方法
EP1985076A2 (en) Techniques for load balancing over a cluster of subscriber-aware application servers
CN108881018B (zh) 用于在diameter信令路由器处路由diameter消息的方法、系统及装置
US11115498B2 (en) Multi-path management
CN112688878B (zh) 一种基于haproxy实现透传源ip的tcp负载均衡的方法
JP2005064936A (ja) 複数BRAS装置におけるPPPoEセッション分散方法及びシステム
US20080013552A1 (en) Methods, systems and computer program products for communication load routing at a user location
Cisco Cisco Router Configuration Commands Modeled
Cisco Troubleshooting ISO CLNS
Cisco Cisco Router Configuration Commands Modeled
Cisco Cisco Router Configuration Commands Modeled
Cisco Cisco Router Configuration Commands Modeled
Cisco Cisco Router Configuration Commands Modeled
Cisco Cisco Router Configuration Commands Modeled

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