加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 安全 > 正文

360网络负载平衡系统

发布时间:2021-01-21 04:04:50 所属栏目:安全 来源:网络整理
导读:《360网络负载平衡系统》要点: 本文介绍了360网络负载平衡系统,希望对您有用。如果有疑问,可以联系我们。 LVS(linux virtual server)作用一种通用的,性能强大的负载均衡技术,承接着奇虎360绝大多数的业务流量,今天我们邀请到了360公司系统部的张志强锅锅,

《360网络负载平衡系统》要点:
本文介绍了360网络负载平衡系统,希望对您有用。如果有疑问,可以联系我们。

LVS(linux virtual server)作用一种通用的,性能强大的负载均衡技术,承接着奇虎360绝大多数的业务流量,今天我们邀请到了360公司系统部的张志强锅锅,为我们介绍介绍一下lvs在360的部署和新功能特性.

背景简介

Lvs(linux virtual server)作用一种通用的,其中包括360搜索、网站卫士、花椒直播等核心业务.随着接入业务增多,对这一基础设施的性能、稳定性以及扩展性也提出了越来越多的要求,为适应公司逐步发展壮大的业务需求,经过6年多的发展360 lvs平台在部署和新功能特性方面也有了日新月异的发展.

功能特性

1.FULLNAT模式

Linux开源的lvs系统目前主要有NAT、TUNNEL、DR三种模式,各有其优缺点.

比如说DR和NAT模式要求realserver和LVS在同一个vlan中,导致部署成本过高,不可跨网段部署,且realserver端需要配置VIP等信息在大批量配置是较为繁琐.

TUNNEL模式虽然可以跨VLAN,但realserver需要部署ipip模块、绑定VIP以及配置arp_filter等操作,网络拓扑上需要联通外网,较复杂不易维护.

为了解决解决上述问题,我们在LVS上研发了一种新的转发模式:FUULNAT.

该模式与NAT模式的主要的区别是:

在packet IN 时,除了做DNAT还做SNAT,将目标ip变为realserver ip,源ip变为内网bip(内部转发池地址),并保存对应的session信息;

在packet OUT时,通过查找之前创建的session表,重新将出方向的源ip转换为vip,目的ip 转换位客户端ip;

由于是三层通信,从而实现lvs–>realserver间可以跨网络vlan通信.为提供较好的网络负载能力,并充分利用网卡多队列特性,lvs服务器专门提供一个C的内部bip地址用于和后端realserver的通讯.

但这种模式的缺点是屏蔽了真实的客户端地址信息,使得realserver端无法获取真实的客户端IP信息,为此我们在地址转换时会将真实客户端ip保存到tcp协议的option字段中,并提供了ttm模块用于用户在realserver端获取到真实的客户端ip信息.

该模式在满足用户需求的基础上,实现了跨网段部署,并简化了realserver端的配置,作为公司目前主流的部署方式,经过公司6年多的实践证明该模式在性能和可靠性方面都是值得信赖的.

FULLNAT网络转发模型如下:

图.Fullnat转发模型

图.Fullnat地址转换模型

2.安全防护—防攻击

鉴于LVS当前的主要功能是负载均衡和失败冗余,不能对flood类型的包攻击进行防护,导致攻击流量会被转发到后端RS上,而RS对此类攻击的防护工作TCP层,防护效率不高,同时大流量的包转发也会大大消耗LVS机器的CPU,影响LVS的正常工作.

为了解决上述问题,我们采取了以下两个措施:

增加攻击防护功能

在LVS上增加一种攻击防护功能:Syn-Proxy,该功能借鉴TCP的syn-cookie机制,代理Client和RS之间的TCP连接握手过程,在与Clinet三次握手完成后,才去和RS建立连接,从而实现对synflood攻击的防御;

采用“session不存在直接丢弃”的策略

采用“session不存在直接丢弃”的策略,实现了对ack/fin/rst 其它TCP标志位攻击的防御;

经过上述两种策略使得上述情况的异常数据包不会达到realserver那一层就被丢弃了,而lvs服务器各方面性能是要强于realserver的,并且synproxy在syn flood攻击的情况下可以有效的减少新建session的开销,所以可以有效的保证业务的正常运行.

3.UDP之殇

作为信息统计和分析的重要信息来源之一,源地址透传一直是业务方强烈要求的一项功能.利用TCP协议的option字段存放真实源地址信息,并在rs端提供对应的模块用于解析到真实的客户端地址,因此FULLNAT模式对TCP协议的源地址透传功能提供了很好的支持.

不过,UDP作为一种不可靠传输协议,是没有提供对应的字段用于保存私有信息的,所以TCP的那套方式在UDP是无法工作的.为解决该问题,我们提出了一种新的lvs tunnel模式,与传统tunnel模式的不同之处在于,出入方向的数据包都会经过lvs服务器,realserver端只需加载定制的ipip模块即可,不需要在其上绑定vip,设置对应设备的arp_filter等操作,简化了大批量部署的复杂性,且通过ipip tunnel天然的解决了真实客户端透传功能.

数据包转发模型如下:

? ? 图.新型lvs tunnel模型

当数据包到达lvs服务器是创建session保留连接信息,内层数据包做DNAT将目的地址转换成rs地址,外层添加ipip头,源目的地址分别为bip和realserver地址.realserver收到数据包后解封外层ipip头并创建session保留连接信息,回包时再根据之前的session信息添加外层ipip头,使得目的地址指向lvs服务器;Lvs服务器收到数据包之后去除外层头,并将源地址NAT为vip地址转发给客户端.

4.部署与运维架构

目前大多数机房lvs服务器的部署方式如下,一个集群中多台lvs服务器,每台服务器上行通过ospf协议连接到外网核心,向其通告vip信息.下行直连内网核心,用于与后端rs之间通信.这种方式保证了lvs服务器之间已经realserver之间服务的冗余性.

? ? ?图. lvs?部署架构

上述模型已经可以满足目前公司大多数的业务需求,在资源利用和冗余性方面存在两个问题:一 机房公网出口双外核心出口不负载;二? 双内外网核心结构下不能利用核心交换机的冗余特性,高可用性不够,当直连核心出故障时,lvs需要跟着调整.
为此我们又与公司netops团队共同研讨出下面一种新的冗余性架构,用于解决上面两个问题.lvs服务器上行通过ospf协议连接两个万兆Tor,下行通过BGP协议与两个内网核心连接,新架构模型如下:

图.lvs 部署新架构

该方式在负载均衡和冗余性方面都得到了有效的提升.

总结?

lvs作为公司的重要基础设施,360 LVS团队经过多年的摸索,在功能特性、安全、稳定性以及环境部署、运维、问题定位分析方面都积累了许多弥足珍贵的经验,满足业务不断升级变化的需求.

文章来自微信公众号:HULK一线技术杂谈

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读