写点什么

LVS 在大规模网络环境中的应用

  • 2014-10-13
  • 本文字数:1406 字

    阅读完需:约 5 分钟

LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。目前 LVS 已经是 Linux 内核标准的一部分。阿里云技术团队近日分享了题为《 LVS 在大规模网络环境中的应用》的演讲,InfoQ 对演讲内容进行了整理。

为什么引入 LVS?

举个例子,一个用户访问淘宝网站,淘宝网前端共有 5 台 Apache 服务器,如何决定访问哪一台 Apache?常用的方式是用 DNS 做负载均衡,将 5 台 Apache 服务器的 ip 地址添加到域名 www.taobao.com 中。
但 DNS 有一些缺点,第一个缺点:例如第二台 Apache 宕了,运维赶紧把 DNS 中该 Apache 的 ip 地址删除掉,但很多地方的 Local DNS 不一定遵守 TTL 协议,这样删除操作什么时候生效,你根本不可控的;尤其移动网络中,这个问题更突出,我记得 10 年时移动网络部分地区 Local DNS 一天才更新。
第二个缺点:服务调度算法只支持 WRR。如果你用户范围很有限,就会有负载不均衡的问题。第三个缺点:攻击防御能力很弱,每次有攻击靠一台机器抗。
针对 DNS 的不足,引入了 Virtual Server 的概念,即最前端有一个入口设备把流量均衡到后端的 Apache 上去;无论是 LVS 软负载还是 F5 硬负载均衡也都是这种概念。

LVS 是什么?

LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。LVS 工作在网络 4 层之上仅作分发之用,所以抗负载能力比较强。LVS 有完整的双机热备方案,几乎支持对所有应用做负载均衡。LVS 在互联网应用中的位置是在 Nginx 之上,具体如下:

LVS 如何应用?

LVS 本身只是一个叫 IP_VS 的内核模块,这个模块可以做负载均衡,但是只用这个模块来做工程应用是远远不够的,比如 LVS 本身宕机后如何处理?实际生产环境中,一般配合 Keepalived 来使用 LVS,keepalived 支持 VRRP 心跳协议,可以实现 LVS 主备冗余,以解决 LVS 本身单点故障。另外,Keepalived 支持健康检测,4 层和 7 层健康检测,防止服务器宕机。对于 LVS 的服务监控问题,可以使用开源软件 SNMP Patch 解决。

LVS 问题以及解决方案

  1. LVS 的 3 种转发模式,部署成本比较高
    使用新转发模式 FULLNAT,FULLNAT 实现了 LVS-RealServer 间跨 vlan 通讯,并且 in/out 流都经过 LVS。FULLNAT 转发数据包是类似 NAT 模式,IN 和 OUT 数据包都是经过 LVS,唯一的区别后端 RealServer 或者交换机 不需要做任何配置。FULLNAT 的主要原理是引入 local address(内网 ip 地址),cip-vip 转换为 lip->rip,而 lip 和 rip 均为 IDC 内网 IP,可以跨 vlan 通讯;
  2. 和商用的负载均衡比,LVS 没有 DDOS 防御攻击功能;
    使用 SYNPROXY(synflood 攻击防御模块),Synproxy 实现的主要原理是参照 Linux TCP 协议栈中 syncookies 的思想,LVS 构造特殊 seq 的 synack 包,验证 ack 包中 ack_seq 是否合法实现了 TCP 三次握手代理。
  3. 主备部署模式,性能无法扩展;
    Cluster 部署模式。基于 FullNAT 模式做横向扩展。

LVS 的性能优化

  1. 多队列网卡,即一个队列绑定到一个 CPU 核上,让多核同时处理网络数据包。如果网卡不支持多队列,可以用 Google 提供的软多队列 -RPS,Linux 内核默认已经集成;
  2. 对 Keepalived 进行了优化,主要将网络模式从 select 改为了 epool。
  3. 建议把网卡 LRO、GRO 功能关掉,尤其是 broadcom 的网卡。

LVS 的创始人和主要开发者章文嵩博士目前就职于阿里云,任职阿里云副总裁。在 10 月 16 日举行的阿里云开发者大会上,他所带领的阿里云团队将会在现场进行互动问答,与用户共同探讨云时代的产品、运维、服务等相关问题,欢迎关注。

2014-10-13 21:264611
用户头像

发布了 219 篇内容, 共 139.5 次阅读, 收获喜欢 191 次。

关注

评论

发布
暂无评论
发现更多内容

参赛故事|大一的我感受到金蝶云苍穹技术的乐趣

金蝶云·苍穹

开发者大赛 金蝶 金蝶云苍穹 中国软件杯

Karmada新版本发布,支持联邦应用跨集群滚动升级

华为云开发者联盟

容器 Karmada Kubernetes Serverless 开源、 云原生‘’

掌握这几个打字小技巧,打字速度翻倍很容易

巧手打字通

办公效率 输入法 办公软件 打字练习 打字软件

ECCV 2024 | 融合跨模态先验与扩散模型,快手处理大模型让视频画面更清晰!

快手技术

音视频开发 大模型

数据要素如何重塑企业价值?

郑州埃文科技

数据治理 数据要素

Analysis of WiFi 5 IPQ4019 and WiFi 6 IPQ6010 Mesh Technology and Performance

wifi6-yiyi

wifi mesh

HarmonyOS NEXT实战电话拨打

李洋-蛟龙腾飞

HarmonyOS NEXT

尘埃落定 完满解决!英特尔官方对于13/14代酷睿台式机处理器调查结果出炉

E科讯

IPQ9574: Does Wallystech's DR9574 Powered by Qualcomm IPQ9574 Support MLO?

wallyslilly

qcn9274 ipq9574

淘宝买家秀API:打造商品口碑生态圈的关键

技术冰糖葫芦

API Gateway API 接口 API 测试 API 优先 pinduoduo API

助推专利转化 发展新质生产力 第二届全国专利密集型产品展区开展

科技热闻

获取淘宝商品详情API返回值的技术实现方案

代码忍者

API 接口 pinduoduo API

极狐GitLab 新能源赛道客户案例分享之比博斯特

极狐GitLab

gitlab cicd 新能源

线上事故案例集:从分析到预防的全方位指南

巧手打字通

后端 事故 风险管理 事故复盘 安全研发

高效算力网助推智算时代繁荣发展

Geek_2d6073

九章云极DataCanvas公司入选沙利文权威报告领先代表厂商

九章云极DataCanvas

CEX上币趋势分析:Infra赛道与Ton生态的未来

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

Solana Payment:下一波加密支付革命的崛起

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

TDengine 建模实战:手把手教你高效设计数据结构

TDengine

数据库 tdengine 时序数据库

网络安全检测神器:实战案例解析高效端口扫描技术

幂简集成

网络安全 Python JSON 网络端口扫描

探索AI新境界!昇腾AI原生创新算子挑战赛(S2赛季)决赛顺利闭幕

Geek_2d6073

百万度算力,限时免费送送送送送!

九章云极DataCanvas

融云携高潜市场出海攻略亮相「2024 拉美中东北非出海峰会」

融云 RongCloud

利用 Page Visibility API 优化网页性能与用户体验

_知秋

JavaScript WebApi PageVisibility

“AI+Security”系列第3期(七):智能体车企落地实践

云起无垠

智能设备领域掀起鸿蒙浪潮,科沃斯、TP-LINK、雅迪等率先完成智能设备或企业内部办公应用鸿蒙化

最新动态

怎么平衡研发效能度量和管理成本?

思码逸研发效能

效能洞察 效能 效能提升 效能工具 研发资源

圆满解决!13/14代酷睿不稳定问题更新可解决,性能没影响

E科讯

网络设备是什么?云管平台可以管理吗?

行云管家

云计算 云服务 网络设备

【YashanDB知识库】崖山数据库Outline功能验证

YashanDB

yashandb 崖山数据库 yashandb知识库

CRUD 开发工具 NocoBase 与 Refine 对比

NocoBase

开源 低代码 开发工具 crud 无代码

LVS在大规模网络环境中的应用_DevOps & 平台工程_小盖_InfoQ精选文章