浅谈负载均衡器LVS

Linux Virtual Server 项目由章文嵩博士在1998年5月发起创立,是国内最早的自由软件项目之一。Linux
Virtual Server 针对高可伸缩、高可用网络服务的需求,提出了基于IP
层和基于内容请求分发的负载均衡调度解决方案。由于该项目的负载调度技术是在 Linux 内核中实现的,所以称之为“Linux
虚拟服务器”(LinuxVirtual
Server),简称为LVS。在开始讨论LVS之前,先普及一下集群方面的知识,这有助于更好理解LVS的应用场合。

常见集群系统分类:

1. 高可用性集群(High Availability Cluster)HA


行于两个或多个节点上,目的是在系统出现某些故障的情况下,最大限度地减少服务中断时间,保障应用程序持续提供服务的能力。这类集群中比较著名的有
TurbolinuxTurboHA、Heartbeat、Kimberlite 等。对于此类集群还有很多通俗的名称,如“双机热备”,
“双机互备”等。

2. 负载均衡集群(Load Balance Cluster)LB

提供和节点个数成正比的负载能力,这种集群适合需要提供大负载访问量的服务,如Web。这类集群中比较著名的有Turbolinux Cluster
Server、Linux Virtual
Server。此类集群把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

3. 科学计算集群(High Performance Computing Cluster)HPC

利用超级计算集群软件将多个节点的计算机联结在一起,完成通常只有超级计算机才能完

成的计算任务。这类软件有Turbolinux EnFusion、SCore 等。

回到主题,LVS 集群的特点可以归结如下:

功能:基于内容的请求分发技术和3 种IP 负载均衡技术,十种连接调度算法

适用性:后端服务器可运行Linux,Unix,Mac/OS 和Windows NT/2000 等多种操作系统。支持绝大多数的TCP 和UDP 协议

灵活性:无需对客户机和服务器作任何修改

性能:支持几百万并发连接,系统的最大吞吐量可接近10Gbits/s

可靠性:已经在很多大型的、关键性的站点的应用

软件许可证:基于GPL 许可证发行

LVS 集群系统已在美、英、德、澳等国的几十个站点上正式使用,例如:

英国国家 JANET Cache Service(www.cache.ja.net)

Linux 的门户站点(www.linux.com)

SourceForge(sourceforge.net)

Real 公司(www.real.com)

NetWalk(www.netwalk.com)

LVS 体系结构介绍:

LVS 通过前端一个负载调度器(Load
Balancer,也叫负载均衡器)无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像
访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服务器机群中透明地加入或删除一个节点来达到,通
过检测节点或服务进程故障和正确地重置使系统达到高可用性。

LVS 的抽象体系结构分为三个层次:负载调度器(load balancer)、服务器池(server pool)、共享存储(shared storage)

LVS 负载均衡模型:

LVS 的三种负载均衡模型(地址转换(NAT)、IP 隧道(IP Tunneling)和直接路由(DR))

地址转换(NAT)

NAT 模式下的服务器节点使用的是私有IP,均衡器是集群的唯一出入口,网络结构呈现为一种类似防火墙的私有网结构,服务器结点无法和客户端直接通信,所有数据都需要经过均衡器进行处理(分发/路由/NAT),这里负载均衡器就会成为一个性能瓶颈。

IP 隧道(IP Tunneling)

VS/TUN 模式采用开放的网络结构,负载均衡器仅仅处理进入集群的请求数据包,而返回数据包不经过负载均衡器。服务器结点拥有合法的公网IP 地址,可将应答包直接返回给客户端。负载均衡器和服务器结点的连接可以是同一LAN 上,也可以跨越WAN 在不同的网段上。

负载均衡器通过 IPIP 协议将客户端的请求包封装为新的IP 包,发给服务器节点。服务器结点收到均衡器发来的IPIP 数据包后,将包解开,根据包内的客户端源地址将处理结果,直接返回给客户端。

直接路由(DR)

DR 模式下服务器节点的应答数据不经过均衡器,而是直接返回给客户端。服务器结点也必须拥有合法IP 地址。而且,负载均衡器和服务器结点必须位于同一个网段。

负载均衡器接收到客户端请求数据包后,选择合适的服务器结点,将请求包的MAC 地址改写为目的服务器结点的MAC
地址,再将此包广播到服务器器节点所在网段。每个服务器结点都设定一个虚拟的网络设备(lo:0),这个设备绑定了和均衡器一样的VIP,只是该设备并不
响应对VIP 的ARP 解析,不会和均衡器的VIP 产生地址冲突。负载均衡器收到符合自身MAC的IP 包后,经过处理后直接将应答数据返回给客户。

LVS 常用负载调度算法:

轮叫(Round Robin):以顺序循环将服务请求分配到集群中的内容服务器上,所有服务器地位平等,不考虑服务器上实际的连接数和系统负载。

加权轮叫(Weighted Round Robin):循环方式调度,但在循环中给每个内容服务器分配指定权重的连接,从而充分考虑各内容服务器处理能力之间的差异。

最少链接(Least Connections):将新到的连接请求动态地分配给现有活跃连接数最少的内容服务器。如果集群系统的真实服务器具有相近的系统性能,可考虑采用“最小连接”。

加权最少链接(Weighted Least Connections):在最少链接的算法基础上,增加权重参考值,较高权值的服务器承受较大比例的负载。在集群系统中的服务器性能差异较大的情况下,建议采用“加权最少链接”。

时间: 2024-08-06 10:20:51

浅谈负载均衡器LVS的相关文章

浅谈mysql主从复制的高可用解决方案

1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网

【转】浅谈Nginx负载均衡与F5的区别

前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之初都会为高并发的数据请求做负载均衡,不差钱的土豪用户一般会直接买F5硬件设备作为其负载均衡器,原因不用多

浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 全Socket层(SSL)等等,目前互联网主要使用它做静态资源服务器,也可以做代理服务器转发请求(如:图片链等),结合tomcat等 servlet容器处理jsp.1.2.ngnix     —— 俄罗斯人开发的一个高性能的 HTTP和反向代理服务器.由于Nginx 超越 Apache 的高性能和稳

浅谈图片服务器的架构演进

浅谈图片服务器的架构演进 现在几乎任何一个网站.Web App以及移动APP等应用都需要有图片展示的功能,对于图片功能从下至上都是很重要的.必须要具有前瞻性的规划好图片服务器,图片的上传和下载速度至关重要,当然这并不是说一上来就搞很NB的架构,至少具备一定扩展性和稳定性.虽然各种架构设计都有,在这里我只是谈谈我的一些个人想法. 对于图片服务器来说IO无疑是消耗资源最为严重的,对于web应用来说需要将图片服务器做一定的分离,否则很可能因为图片服务器的IO负载导致应用 崩溃.因此尤其对于大型网站和应

浅谈大型网站动态应用系统架构【转】

浅谈大型网站动态应用系统架构 动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: l l l l l l

【架构】浅谈web网站架构演变过程

浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate.maven+spri

浅谈大型web系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: 1)Web前端系统 2)负载均衡系统 3)数据库集群系

浅谈Nginx负载均衡与F5的区别

转自:http://www.cnblogs.com/brookzhang/p/6600861.html 前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之

浅谈 kubernetes service 那些事(上篇)

欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8s service 什么是service 是发现后端pod服务: 是为一组具有相同功能的容器应用提供一个统一的入口地址: 是将请求进行负载分发到后端的各个容器应用上的控制器. 对service的访问来源 访问service的请求来源有两种:k8s集