Linux负载均衡软件LVS
linux下的开源负载均衡软件LVS的安装、配置和使用。
LVS是一个中国人创建和开发的开放源码项目,利用LVS可以构建高可用、高可靠的负载均衡集群,
因此,利用Linux+LVS不但可以假设高性能的负载均衡系统,同时也为企业和个人节省了成本。
商业的负载均衡器价格昂贵,而且技术开放程度很低,如果你正在为企业应用的性能问题而烦恼,不妨试试LVS这个开源的负载均衡软件。
LVS简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,
现在已经是 Linux标准内核的一部分。在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,
但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,
它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。
可以利用LVS框架实现高可伸缩的、高可用的网络服务有WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,
有许多比较著名网站和组织都在使用LVS架设的集群系统,
例如:linux的门户网站(www.linux.com)、
向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、
全球最大的开源网站(sourceforge.net)等。
LVS体系结构
使用LVS架设的服务器集群系统有三个部分组成,最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,
用Server Array表示,最底端的数据共享存储层,用Shared Storage表示,
在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,
LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,
它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。
同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各Real Server的健康状况。
在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。
Server Array层:由一组实际运行应用服务的机器组成,
Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,
每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。
在实际的应用中,Director Server也可以同时兼任Real Server的角色。
Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,
在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,
但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,
例如Redhat的GFS文件系统,oracle提供的OCFS2文件系统等。从整个LVS结构可以看出,Director Server是整个LVS的核心,
目前,用于Director Server的操作系统只能是Linux和FreeBSD,linux2.6内核不用任何设置就可以支持LVS功能,
而FreeBSD作为Director Server的应用还不是很多,性能也不是很好。对于Real Server,
几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
LVS集群的特点
IP负载均衡与负载调度算法
1.IP负载均衡技术
负载均衡技术有很多实现方案,
有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,
在这些负载调度算法中,执行效率最高的是IP负载均衡技术。
LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,
它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。
访问的请求首先到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,
而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR,
详述如下:
VS/NAT: 即(Virtual Server via Network Address Translation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,
调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,
最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server返回数据给用户时,
需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
VS/TUN :即(Virtual Server via IP Tunneling)
也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,
VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,
而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,
可以和Director Server位于同一个网段,也可以是独立的一个网络。
因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,
但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,
而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。
这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
2.负载调度算法
负载调度器是根据各个服务器的负载情况,动态地选择一台Real Server响应用户请求,
那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,
根据不同的网络服务需求和服务器配置,IPVS实现了如下八种负载调度算法,
这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其其它资料。
轮叫调度(Round Robin)
“轮叫”调度也叫1:1调度,调度器通过“轮叫”调度算法将外部用户请求按顺序1:1的分配到集群中的每个Real Server上,这种算法平等地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。
加权轮叫调度(Weighted Round Robin)
“加权轮叫”调度算法是根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server设置不同的调度权值,对于性能相对较好的Real Server可以设置较高的权值,
而对于处理能力较弱的Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。
充分合理的利用了服务器资源。同时,调度器还可以自动问询Real Server的负载情况,并动态地调整其权值。
最少链接调度(Least Connections)
“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。
如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
加权最少链接调度(Weighted Least Connections)
“加权最少链接调度”是“最少连接调度“的超集,每个服务节点可以用相应的权值表示其处理能力,
而系统管理员可以动态的设置相应的权值,缺省权值为1,
加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。
其它四种调度算法分别为:
基于局部性的最少链接(Locality-Based Least Connections)、
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)、
目标地址散列(Destination Hashing)和源地址散列(Source Hashing)。
高可用性
LVS是一个基于内核级别的应用软件,因此具有很高的处理性能,用LVS构架的负载均衡集群系统具有优秀的处理能力,
每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合理均衡,使应用具有超高负荷的服务能力,
可支持上百万个并发连接请求。
如配置百兆网卡,采用VS/TUN或VS/DR调度技术,整个集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,
则系统的最大吞吐量可接近10Gbits/s。
高可靠性
LVS负载均衡集群软件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的web站点也都采用了LVS集群软件,
所以它的可靠性在实践中得到了很好的证实。
有很多负载调度器运行一年多,未作一次重新启动。这些都说明了LVS的高稳定性和高可靠性。
适用环境
LVS对前端Director Server目前仅支持linux和freebsd系统,但是支持大多数的TCP和UDP协议,
支持TCP协议的应用有:HTTP,HTTPS ,FTP,SMTP,POP3,IMAP4,PROXY,LDAP,SSMTP等等。
支持UDP协议的应用有:DNS,NTP,ICP,视频、音频流播放协议等。
LVS对Real Server的操作系统没有任何限制,Real Server可运行在任何支持TCP/IP的操作系统上,
包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
开源软件
LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,
因此,使用者可以得到软件的源代码,并且可以根据自己的需要进行各种修改,但是修改必须是以GPL方式发行。
LVS的安装与配置
安装
1.安装前准备工作(大概看看)
操作系统:统一采用Centos4.4版本。
地址规划:
服务器名
IP地址
网关
虚拟设备名
虚拟IP
Director Server
192.168.60.56
192.168.60.1
eth0:0
192.168.60.200
Real Server 1
192.168.60.132
192.168.60.1
lo:0
192.168.60.200
Real Server 2
192.168.60.144
192.168.60.1
lo:0
192.168.60.200
2.安装操作系统
Centos4.4版本的linux,内核默认支持LVS功能,为了方便编译安装IPVS管理软件,在安装操作系统时,建议选择如下这些安装包:
桌面环境:xwindows system、GNOME desktop environment。
开发工具:development tools、x software development、gnome software development、kde software development。
系统安装完毕,可以通过如下命令检查kernel是否已经支持LVS的ipvs模块
[root@localhost ~]#modprobe -l |grep ipvs
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/ipvs/ip_vs_sh.ko
如果有类似上面的输出,表明系统内核已经默认支持了IPVS模块。接着就可以安装IPVS管理软件了。
3.在Director Serve上安装IPVS管理软件
IPVS提供的软件包有源码方式的也有rpm方式的,这里介绍下源码方式安装IPVS,
首先从http://www.linuxvirtualserver.org/software/ipvs.html下载对应版本的ipvs源码,
由于我们这里采用的操作系统为Centos4.4版本,因此,下载对应的ipvsadm-1.24版本,
接着进行安装:
[root@localhost ~]#tar -zxvf ipvsadm-1.24.tar.gz
[root@localhost ~]#cd ipvsadm-1.24
[root@localhost ~]#make
[root@localhost ~]#make install
注意:在make时可能会出现错误编译信息,这是由于编译程序找不到对应内核的原因,按照如下操作就可以正常编译:
[root@localhost ~]#ln -s /usr/src/kernels/2.6.9-42.EL-i686/ /usr/src/linux
也可以通过rpm包方式进行安装,
[root@localhost ~]#rpm –ivh ipvsadm-1.24-6.1.i386.rpm
然后执行:
[root@localhost ~]# ipvsadm --help
如果看到帮助提示,表明IPVS已经成功安装。
4.ipvsadm的用法
ipvsadm 的用法和格式如下:
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f virtual-service-address:port -r real-server-address:port[-g|i|m] [-w weight]
ipvsadm -d -t|u|f virtual-service-address -r real-server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f virtual-service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm –h
其中:
virtual-service-address:是指虚拟服务器的ip 地址
real-service-address:是指Real Server的ip 地址
ipvsadm命令选项详细含义如下:
命令选项
含义
-A --add-service
在内核的虚拟服务器列表中添加一条新的虚拟IP记录。也就是增加一台新的虚拟服务器。虚拟IP也就是虚拟服务器的IP地址。
-E --edit-service
编辑内核虚拟服务器列表中的一条虚拟服务器记录
-D --delete-service
删除内核虚拟服务器列表中的一条虚拟服务器记录
-C --clear
清除内核虚拟服务器列表中的所有记录
-R --restore
恢复虚拟服务器规则
-S --save
保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server
在内核虚拟服务器列表的一条记录里添加一条新的Real Server记录。也就是在一个虚拟服务器中增加一台新的Real Server
-e --edit-server
编辑一条虚拟服务器记录中的某条Real Server记录
-d --delete-server
删除一条虚拟服务器记录中的某条Real Server记录
-L|-l --list
显示内核中虚拟服务器列表
-Z --zero
虚拟服务器列表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp
设置连接超时值
-t
说明虚拟服务器提供的是tcp的服务,此选项后面跟如下格式:
[virtual-service-address:port] or [real-server-ip:port]
-u
说明虚拟服务器提供的是udp的服务,此选项后面跟如下格式:
[virtual-service-address:port] or [real-server-ip:port]
-f fwmark
说明是经过iptables标记过的服务类型
-s scheduler
使用的调度算法。
有这样几个选项 rr|wrr|lc|wlc|lblc|lblcr|dh|sh
默认的调度算法是: wlc
-p [timeout]
在某个Real Server上持续的服务时间。也就是说来自同一个用户的多次请求,
将被同一个Real Server处理。此参数一般用于有动态请求的操作中,timeout 的默认值为300 秒。
-r
指定Real Server的IP地址,此选项后面跟如下格式:
[real-server-ip:port]
-g --gatewaying
指定LVS 的工作模式为直接路由模式(此模式是LVS 默认工作模式)
-i --ipip
指定LVS 的工作模式为隧道模式
-m --masquerading
指定LVS 的工作模式为NAT 模式
-w --weight weight
指定Real Server的权值
-c --connection
显示LVS目前的连接 如:ipvsadm -L -c
-L --timeout
显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
-L --daemon
显示同步守护进程状态
-L --stats
显示统计信息
-L --rate
显示速率信息
-L --sort
对虚拟服务器和真实服务器排序输出
LVS的配置
LVS集群有DR、TUN、NAT三种配置模式,可以对www服务、FTP服务、MAIL服务等做负载均衡
备注:随笔中内容来源于网上资料整理,仅供参考。
Linux负载均衡软件LVS的更多相关文章
- Linux负载均衡软件LVS简介
Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...
- Linux负载均衡软件LVS之二(安装篇)[转]
Linux负载均衡软件LVS之二(安装篇) 2011-04-26 16:01:47 标签:lvs安装配置 linux lvs 休闲 linux高可用 原创作品,允许转载,转载时请务必以超链接形式标明文 ...
- (转)Linux负载均衡软件LVS之一(概念篇)
转:http://ixdba.blog.51cto.com/2895551/552947 Linux负载均衡软件LVS之二(安装篇):http://ixdba.blog.51cto.com/28955 ...
- Linux负载均衡软件LVS之一(概念篇)
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver ...
- Linux负载均衡软件LVS之四(测试篇-完)
一.启动LVS集群服务LVS负载均衡管理和使用有两种方式,一种是以ipvsadm命令行脚步与ldirectord监控方式,一种是以Piranha工具进行管理和使用.下面分别介绍. 1.利用ipvsad ...
- Linux负载均衡软件LVS之三(配置篇)
LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...
- Linux负载均衡软件LVS之二(安装篇)
一. 安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务I ...
- Windows+IIS结合LVS+Keepalived是实现Linux负载均衡软件
在Discuz!NT的最新版本(企业版)中,支持目前主流LINUX平台上的负载均衡解决方案,比如NGINX,HAPROXY,LVS等.本文与其说是解决方案,倒不如说是介绍如何搭建Discuz!NT负载 ...
- Linux负载均衡软件之LVS
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是linuxvirtualserver.org ...
随机推荐
- node+express 中安装nodemon实时更新server.js
每次启动node server.js,有一个缺点,每次server.js文件有改动时,必须重新执行指令node server.js,新的代码才会起作用 解决方案1 全局安装 npm install s ...
- C++学习笔记(七)--共用体、枚举、typedef
1.共用体 union其定义与结构体类似:union 类型名{ 成员表列;};声明变量的方法也类似: a. union 类型名{ b. union { c.类型名 变量名; 成员 ...
- Java学习day8面向对象编程2-类的属性和方法
一.类的属性 1.语法格式 修饰符 类型 属性名 = 初值 说明:修饰符private:该属性只能由该类的方法使用.在同一类内可见.使用对象:变量.方法. 注意:不能修饰类(外部类) 修饰符pu ...
- 洛谷 P1525 关押罪犯 & [NOIP2010提高组](贪心,种类并查集)
传送门 解题思路 很显然,为了让最大值最小,肯定就是从大到小枚举,让他们分在两个监狱中,第一个不符合的就是答案. 怎样判断是否在一个监狱中呢? 很显然,就是用种类并查集. 种类并查集的讲解——团伙(很 ...
- 单调栈 && 洛谷 P2866 [USACO06NOV]糟糕的一天Bad Hair Day(单调栈)
传送门 这是一道典型的单调栈. 题意理解 先来理解一下题意(原文翻译得有点问题). 其实就是求对于序列中的每一个数i,求出i到它右边第一个大于i的数之间的数字个数c[i].最后求出和. 首先可以暴力求 ...
- sde自动备份到文件gdb
本方法原理是使用python(以下简称py)调用arcmap的gp,在上再用bat调用py的方式实现.优点是能应用于所有数据库类型(包括pg,oracle等)的sde库 环境:arcmap 10.4, ...
- Vue.js——60分钟组件快速入门(上篇)二
来源:https://www.cnblogs.com/keepfool/p/5625583.html 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小 ...
- mysql中,表与表之间的关系
""" 1.字段的修改.添加.删除 2.多表关系(外键) 3.单表详细操作:增删改,查(各种条件) """ 字段操作 create ta ...
- WPF绑定各种数据源之xml数据源
一.WPF绑定各种数据源索引 WPF 绑定各种数据源之Datatable WPF绑定各种数据源之object数据源 WPF绑定各种数据源之xml数据源 WPF绑定各种数据源之元素控件属性 Bindin ...
- [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (3/4)
安装p10404530_112030_Linux-x86-64_6of7.zip解压下的example. 修改软件路径,为dbhome_1. 安装好数据,则可以进行快照操作! 删除安装文件. 输入db ...