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 高级工程师姜鑫韡老师即将带来精彩演讲

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


【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » 360网站建设中心(360网站检测中心)

1 评论

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

发表评论

欢迎 访客 发表评论