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转发模型
图.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 高级工程师姜鑫韡老师即将带来精彩演讲
《从大象到猎豹-自动化运维和性能优化实践》
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 360网站建设中心(360网站检测中心)
1 评论