Lvs学习笔记

概述

在使用lvs的过程中,我一直担心一个问题:lvs能够抗住最大的并发是多少?当并发非常大的时候,lvs这一台机器的性能会不会变得很差?

我去查看了章文嵩的文章http://www.linuxvirtualserver.org/zh/lvs1.html
发现以下几个点:

1. lvs是基于ip层和基于内容请求分发的负载平衡调度。基于ip层和基于内容请求分发两种方式

2. IP负载均衡技术有三种:VS/NAT, VS/TUN,VS/DR。

基于IP负载调度技术中,当一个TCP连接的初始SYN报文到达时,调度器就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到该服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端服务器组提供相同的服务,不管请求被发送到哪 一台服务器,返回结果都是一样的

3. VS/NT virtual server via Network Address Translation

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

假如结构如下图所示,client要与服务器端建立连接,在lvs层ip包的目的地址被改为node1,那么该TCP连接的初始SYN报文送到node1,node1返回ACK报文给lvs层,lvs将ACK报文的源地址修改为lvs。以后通过查找发报文的IP和TCP报文头地址,保证此连接的后续报文被转发到node1。 如果我们在client通过tcpdump抓包的话,看到的都是client和lvs之间的交互。

                 _ _ _ node1
                /
client---> lvs ------  node2
                \_ _ _ _ node3

4. LVS集群的性能

LVS服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。

因为工作在IP层,只用作分发,因此没有流量产生,内存和CPU资源消耗很低,IO性能不会受到大流量的影响