QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:264732
用户头像

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

关注

评论

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

混沌工程平台 ChaosBlade-Box 新版重磅发布

阿里巴巴云原生

阿里云 分布式 云原生 混沌工程

如何写出好代码 - 防御式编程指南

云智慧AIOps社区

Java 架构 代码质量

远程办公经验?来一场自问自答形式的介绍吧~ | 社区征文

为自己带盐

初夏征文 7月月更

K8S 应用部署

kubenetes

云服务器ECS夏日省钱秘籍,这次@老用户快来领走

阿里云弹性计算

阿里云 云服务器ECS

Python|小白如何入门Python?记我的Python初体验

AXYZdong

7月月更

MySQL审计插件介绍

Simon

MySQL 运维 MySQL 数据库

6月刊 | AntDB数据库参与编写《数据库发展研究报告》 亮相信创产业榜单

亚信AntDB数据库

数据库 AntDB 国产数据库

重磅披露!上百个重要信息系统被入侵,主机成为重点攻击目标

青藤云安全

网络安全 网络攻击防御

越来越多地使用 SLO 来实现可观测性|DevOps

观测云

可观测性

云小课|3种常用Git工作流推荐

华为云开发者联盟

后端 开发 华为云

户外LED显示屏应该考虑哪些问题?

Dylan

LED显示屏 户外LED显示屏

StoneDB 为国产数据库添砖加瓦,基于 MySQL 的一体化实时 HTAP 数据库正式开源!

StoneDB

大数据 MySQL 数据库 #数据库 HTAP #开源

单集群1万节点!腾讯云大数据平台TBDS获得分布式批处理平台万节点能力认证

科技热闻

嗨 FUN 一夏,与 StarRocks 一起玩转 SQL Planner!

StarRocks

sql 大数据 数据库·

博睿数据一体化智能可观测平台入选中国信通院2022年“云原生产品名录”

博睿数据

智能运维 博睿数据 One 智能可观测平台

【6.24-7.1】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

从零开始学 MySQL —数据库和数据表操作

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

宝,运维100+服务器很头疼怎么办?用行云管家!

行云管家

云计算 运维 服务器 云管

贝联珠贯加入龙蜥社区,共同促进碳中和

OpenAnolis小助手

开源 龙蜥社区 CLA 贝联珠贯 IT资源利用

ABAP-调用Restful API

桥下本有油菜花

abap REST API

她就是那个「别人家的HR」|ONES 人物

万事ONES

华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设

极客天地

独家消息:阿里云悄然推出RPA云电脑,已与多家RPA厂商开放合作

王吉伟频道

阿里云 RPA 无影云电脑 RPA云电脑 RPA+DaaS

ABAP-屏幕切换时,刷新上一个屏幕

桥下本有油菜花

abap

数据湖系列之一 | 你一定爱读的极简数据平台史,从数据仓库、数据湖到湖仓一体

Baidu AICLOUD

大数据 数据仓库 数据湖 对象存储 湖仓一体

如何看待国企纷纷卸载微软Office改用金山WPS?

优秀

wps office办公软件

直播带货系统软件开发,Android和iOS的区别在哪里?

开源直播系统源码

ios开发 Android开发 直播带货系统 原生开发 混合开发

C#/VB.NET 合并PDF文档

在下毛毛雨

C# .net PDF 文件合并

【计算讲谈社】第四讲:自动驾驶,未来的移动智能载体?

大咖说

自动驾驶 阿里云 科技

如何使用物联网低代码平台进行个人设置?

AIRIOT

低代码 物联网 低代码,项目开发

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