360网站建设中心(360网站检测中心)

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

  一、背景简介

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

  二、功能特性2.1、FULLNAT模式

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

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

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

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

  该模式与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转发模型

360网站建设中心(360网站检测中心),360网站建设中心(360网站检测中心),360网站建设中心,第1张

图.Fullnat地址转换模型

  2.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的开销,所以可以有效的保证业务的正常运行。

  2.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地址转发给客户端。

  2.4、部署与运维架构

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

图. lvs 部署架构

  上述模型已经可以满足目前公司大多数的业务需求,在资源利用和冗余性方面存在两个问题:一 机房公网出口双外核心出口不负载;二 双内外网核心结构下不能利用核心交换机的冗余特性,高可用性不够,当直连核心出故障时,lvs需要跟着调整。

  为此我们又与公司netops团队共同研讨出下面一种新的冗余性架构,用于解决上面两个问题。lvs服务器上行通过ospf协议连接两个万兆Tor,下行通过BGP协议与两个内网核心连接,新架构模型如下:

图.lvs 部署新架构

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

  三、总结

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

本文转载自公众号「HULK一线技术杂谈」

ID:hulktalk

  『HULK一线技术杂谈』是由360云平台团队打造的技术分享公众号,内容涉及云计算、数据库、大数据、监控、泛前端、自动化测试等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享~

  END

从大象到猎豹,“高效运维”如何实现

来 GOPS2017·上海站

中国太平洋保险 DevOps 高级工程师姜鑫韡老师即将带来精彩演讲

《从大象到猎豹-自动化运维和性能优化实践》

1、本网站名称:源码村资源网
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 360网站建设中心(360网站检测中心)

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论