当前位置:首页 » 操作系统 » lvs调度算法

lvs调度算法

发布时间: 2022-07-24 12:12:48

① 简述负载均衡集群中常见的调度算法及原理(5种以上)

1.LVS负载均衡集群介绍

2. LVS介绍

3. IPVS发展史

4.LVS体系结构与工作原理简单描述

5.LVS的基本工作过程

6.LVS的三种工作模式:

6.1NAT模式-网络地址转换

6.2TUN模式

6.3DR模式(直接路由模式)

② U8服务器参数配置中负载均衡如何设置

网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。

③ 请教:关于LVS负载不均衡的问题

用单机测试是有这种情况(负载均衡的算法倾向于一个客户端IP定向到一个后端服务器,以保持会话连贯性),如果用两三台机器去测试也许就不一样。

④ 源地址散列调度与目标地址散列调度的具体应用场景是什么

DH:
Destinationhashing:目标地址hashing,将某个固定IP的请求转发给一个相同的real server,主要用于缓存服务器。
SH:
Sourcehashing:源地址hashing,用于Real serer是防火墙时

⑤ lvssyncdaemonswap脚本在哪儿

keepalived.conf内容说明如下

●全局定义块
1、email通知。作用:有故障,发邮件报警。
2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。
3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。
●VRRP定义块
1、同步vrrp组vrrp_sync_group。作用:确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪些?
2、实例组group。至少包含一个vrrp实例。
3、Vrrp实例vrrp_instance。实例名出自实例组group所包含的那些名字。
(1) 实例状态state。只有MASTER和BACKUP两种状态,并且需要大写这些单词。其中MASTER为工作状态,BACKUP为备用状态。当 MASTER所在的服务器失效时,BACKUP所在的系统会自动把它的状态有BACKUP变换成MASTER;当失效的MASTER所在的系统恢复 时,BACKUP从MASTER恢复到BACKUP状态。
(2)通信接口interface。对外提供服务的网络接口,如eth0,eth1.当前主流的服务器都有2个或2个以上的接口,在选择服务接口时,一定要核实清楚。
(3)lvs_sync_daemon_inteface。 负载均衡器之间的监控接口,类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个 机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。
(4)虚拟路由标识virtual_router_id。这个标识是一个数字,并且同一个vrrp实例使用唯一的标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同时在整个vrrp内是唯一的。
(5)优先级priority。这是一个数字,数值愈大,优先级越高。在同一个vrrp_instance里,MASTER 的优先级高于BACKUP。若MASTER的priority值为150,那么BACKUP的priority只能是140或更小的数值。
(6)同步通知间隔advert_int。MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。
(7)验证authentication。包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题。验证密码为明文,同一vrrp实例MASTER与BACKUP 使用相同的密码才能正常通信。
4、 虚拟ip地址virtual_ipaddress。可以有多个地址,每个地址占一行,不需要指定子网掩码。注意:这个ip必须与我们在lvs客户端设定的vip相一致!
●虚拟服务器virtual_server定义块
虚拟服务器定义是keepalived框架最重要的项目了,是keepalived.conf必不可少的部分。
1、虚拟服务器virtual_server。这个ip来自于vrrp定义块的第“4”步,后面一个空格,然后加上端口号。定义一个vip,可以实现多个tcp端口的负载均衡功能。
(1)delay_loop。健康检查时间间隔,单位是秒。
(2)lb_algo。负载均衡调度算法,互联网应用常使用wlc或rr。
(3)lb_kind。负载均衡转发规则。一般包括DR、NAT、TUN3种,在我的方案中,都使用DR的方式。
(4)persistence_timeout。 会话保持时间,单位是秒。这个选项对动态网站很有用处:当用户从远程用帐号进行登陆网站时,有了这个会话保持功能,就能把用户的请求转发给同一个应用服务 器。在这里,我们来做一个假设,假定现在有一个lvs 环境,使用DR转发模式,真实服务器有3个, 负载均衡器不启用会话保持功能。当用户第一次访问的时候,他的访问请求被负载均衡器转给某个真实服务器,这样他看到一个登陆页面,第一次访问完毕;接着他 在登陆框填写用户名和密码,然后提交;这时候,问题就可能出现了---登陆不能成功。因为没有会话保持,负载均衡器可能会把第2次的请求转发到其他的服务器。
(5)转发协议protocol。一般有tcp和udp两种。实话说,我还没尝试过udp协议类的转发。
2、真实服务器real_server,也即服务器池。Real_server的值包括ip地址和端口号,多个连续的真实ip。
(1)权重weight,权重值是一个数字,数值越大,权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载,性能较好的机器,负载分担大些;反之,性能差的机器,则分担较少的负载,这样就可以合理的利用不同性能的机器资源。
(2)Tcp检查tcp_check。

第③版更新内容如下:
每台服务器都有二块网卡,分别连接内外网;后端的mysql数据库与web连接采用内网方式,整个网络环境采用内网;
增加了keepalived.conf语法内容;
删除了lvs.sh脚本内容,直接让keepalived内容更直接明了;
lvs主从机上的keepalived.conf文件我直接从生产服务器上download下来了,可方便大家使用。

※值得注意的是:
1、你必须向你的服务器所在机房IDC多申请一个IP供VIP使用;多关注/var/log/messages和ipvsadm -ln,利用其有效信息排错。
2、服务器的iptables、Selinux均关闭;在生产环境中,我就遇到了iptables的NAT转发问题,导致了lvs失败。
3、 keepalived的启动过程并不会对配置文件进行语法检查,就算没有配置文件,keepalived的守护进程照样能够被运行起来。在默认状态下,即 不指定配置文件的位置--keepalived先查找文件/etc/keepalived/keepalived.conf。
4、session的过程默认是以文件的形式存在,在浏览器关闭或重启时删除;会话保持我建议写成120秒,如果这个值设置得不合理,用户将得到非常糟糕的访问效果。
5、 keepalived是lvs的扩展项目,因此它们之间具备良好的兼容性,这点应该是keepalived部署比其他类似工具能更简洁的原因 吧,lvs+keepalived目前是一个应用于生产环境的成熟架构,实现了真正意义上的负载均衡高可用,尤其适用于bbs和blog(它们均是访问频 繁,用户量大的对象),建议熟练掌握。

LVS 算法说明

LVS的常见八种调度算法:
一:轮叫调度(Round-Robin Scheling)

轮叫调度(Round Robin Scheling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

二:加权轮叫调度(Weighted Round-Robin Scheling)

加权轮叫调度 (Weighted Round-Robin Scheling)算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

三:最小连接调度(Least-Connection Scheling)

最 小连接调度(Least- Connection Scheling)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调 度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减一。
四:加权最小连接调度(Weighted Least-Connection Scheling)

加权最小连接调 度(Weighted Least-Connection Scheling)算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

五:基于局部性的最少链接(Locality-Based Least Connections Scheling)

基 于局部性的最少链接调度(Locality-Based Least Connections Scheling,以下简称为LBLC)算法是针对请 求报文的目标IP地址的负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群中客户请求报文的目标IP地址是变化的。这里假设任何后端服 务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和 主存Cache命中率,从而整个集群系统的处理能力。LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的 且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于其一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将 请求发送到该服务器。

六: 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheling)

带 复制的基于局部性最少链接调度(Locality- Based Least Connections with Replication Scheling,以下简称为LBLCR)算法也是针对目标 IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护 从一个目标IP地址到一台服务器的映射。对于一个“热门”站点的服务请求,一台Cache 服务器可能会忙不过来处理这些请求。这时,LBLC调度算法会 从所有的Cache服务器中按“最小连接”原则选出一台Cache服务器,映射该“热门”站点到这台Cache服务器,很快这台Cache服务器也会超 载,就会重复上述过程选出新的Cache服务器。这样,可能会导致该“热门”站点的映像会出现在所有的Cache服务器上,降低了Cache服务器的使用 效率。LBLCR调度算法将“热门”站点映射到一组Cache服务器(服务器集合),当该“热门”站点的请求负载增加时,会增加集合里的Cache服务 器,来处理不断增长的负载;当该“热门”站点的请求负载降低时,会减少集合里的Cache服务器数目。这样,该“热门”站点的映像不太可能出现在所有的 Cache服务器上,从而提供Cache集群系统的使用效率。LBLCR算法先根据请求的目标IP 地址找出该目标IP地址对应的服务器组;按“最小连 接”原则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载;则按 “最小连接”原则从整个集群中选出一台服务器,将 该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

七:目标地址散列调度(Destination Hashing Scheling)

目 标地址散列调度 (Destination Hashing Scheling)算法也是针对目标IP地址的负载均衡,但它是一种静态映射算法,通过 一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分 配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

八:源地址散列调度(Source Hashing Scheling)

源 地址散列调度(Source Hashing Scheling)算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键 (Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址 散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标IP地址换成请求的源IP地址,所以这里不一一叙述。在实际应用 中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。

⑥ 大家企业中lvs都是用什么调度算法

看原理,适用什么场合吧。毕竟调度算法有10种之多。一般是rr/wrr/wlc/lc什么的。

⑦ 求集群管理的相关知识!

集群技术案例介绍和具体操作

集群技术案例介绍和具体操作
中国科学院西安网络中心 中科红旗linux培训认证中心
集群技术
1.1 什么是集群
简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提
供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的
集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一
个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群
系统的节点。
1.2 为什么需要集群
集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就
开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并
不为大家所熟知。直到Linux集群的出现,集群的概念才得以广为传播。
对集群的研究起源于集群系统良好的性能可扩展性(scalability)。提高CPU
主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的
提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了
向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,象SMP这些
多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能
随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的
增加几乎是线性变化的。图1显示了这中情况。
图1. 几种计算机系统的可扩展性
对于关键业务,停机通常是灾难性的。因为停机带来的损失也是巨大的。下
面的统计数字列举了不同类型企业应用系统停机所带来的损失。
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
应用系统每分钟损失(美元)
呼叫中心(Call Center) 27000
企业资源计划(ERP)系统13000
供应链管理(SCM)系统11000
电子商务(eCommerce)系统10000
客户服务(Customer Service Center)系统27000
图2:停机给企业带来的损失
随着企业越来越依赖于信息技术,由于系统停机而带来的损失也越拉越大。
集群系统的优点并不仅在于此。下面列举了集群系统的主要优点:
高可扩展性:如上所述。
高可用性:集群中的一个节点失效,它的任务可传递给其他节点。可以有效防止单点失效。
高性能:负载平衡集群允许系统同时接入更多的用户。
高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。
2.1 集群系统的分类
虽然,根据集群系统的不同特征可以有多种分类方法,但是一般把集群系统分为两类:
(1)、高可用(High Availability)集群,简称HA集群。
这类集群致力于提供高度可靠的服务。就是利用集群系统的容错性对外提供7*24小时不间
断的服务,如高可用的文件服务器、数据库服务等关键应用。
目前已经有在Linux下的高可用集群,如Linux HA项目。
负载均衡集群:使任务可以在集群中尽可能平均地分摊不同的计算机进行处理,充分利
用集群的处理能力,提高对任务的处理效率。
在实际应用中这几种集群类型可能会混合使用,以提供更加高效稳定的服务。如在一个使
用的网络流量负载均衡集群中,就会包含高可用的网络文件系统、高可用的网络服务。
(2)、性能计算(High Perfermance Computing)集群,简称HPC集群,也称为科学计算
集群。
在这种集群上运行的是专门开发的并行应用程序,它可以把一个问题的数据分布到多
台的计算机上,利用这些计算机的共同资源来完成计算任务,从而可以解决单机不能胜任
的工作(如问题规模太大,单机计算速度太慢)。
这类集群致力于提供单个计算机所不能提供的强大的计算能力。如天气预报、石油勘探与油
藏模拟、分子模拟、生物计算等。这些应用通常在并行通讯环境MPI、PVM等中开发,由于MPI
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
是目前的标准,故现在多使用MPI为并行环境。
比较有名的集群Beowulf就是一种科学计算集群项目。
3、集群系统转发方式和调度算法
3.1转发方式
目前LVS主要有三种请求转发方式和八种调度算法。根据请求转发方式的不同,所构
架集群的网络拓扑、安装方式、性能表现也各不相同。用LVS主要可以架构三种形式的集群,
分别是LVS/NAT、LVS/TUN和LVS/DR,可以根据需要选择其中一种。
(1)、网络地址转换(LVS/NAT)
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
(2)、直接路由
(3)、IP隧道
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
三种转发方式的比较:
3.2、调度算法
在选定转发方式的情况下,采用哪种调度算法将决定整个负载均衡的性能表现,不同
的算法适用于不同的应用场合,有时可能需要针对特殊场合,自行设计调度算法。LVS的算
法是逐渐丰富起来的,最初LVS只提供4种调度算法,后来发展到以下八种:
1.轮叫调度(Round Robin)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均
等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样
可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动询问真实服务器的
负载情况,并动态地调整其权值。
3.最少链接(Least Connections)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器
上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较
好地均衡负载。
4.加权最少链接(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自
动询问真实服务器的负载情况,并动态地调整其权值。
5.基于局部性的最少链接(Locality-Based Least Connections)
“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache
集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务
器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且
有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求
发送到该服务器。
6. 带复制的基于局部性最少链接( Locality-Based Least Connections with
Replication)
“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要
用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务
器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目
标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一
台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接
”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服
务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,
以降低复制的程度。
7.目标地址散列(Destination Hashing)
“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分
配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,
否则返回空。
8.源地址散列(Source Hashing)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的
散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则
返回空。
了解这些算法原理能够在特定的应用场合选择最适合的调度算法,从而尽可能地保持
Real Server的最佳利用性。当然也可以自行开发算法,不过这已超出本文范围,请参考有
关算法原理的资料。
4.1、什么是高可用性
计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性
(maintainability)来度量的。工程上通常用平均无故障时间(MTTF)来度量系统的可靠性,
用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
MTTF/(MTTF+MTTR)*100%
业界根据可用性把计算机系统分为如下几类:
可用比例
(Percent
Availability)
年停机时间
(downtime/year
)
可用性分类
99.5 3.7天
常规系统
(Conventional)
99.9 8.8小时可用系统(Available)
99.99 52.6分钟
高可用系统(Highly
Available)
99.999 5.3分钟Fault Resilient
99.9999 32秒Fault Tolerant
为了实现集群系统的高可用性,提高系统的高可性,需要在集群中建立冗余机制。一个功
能全面的集群机构如下图所示
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
负载均衡服务器的高可用性
为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上都运行
High Availability监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运
行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并
继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息是,它就释放
服务IP地址,这样的主管理器就开开始再次进行集群管理的工作了。为在住服务器失效的
情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,
保持二者系统的基本一致。
HA的容错备援运作过程
自动侦测(Auto-Detect)阶段 由主机上的软件通过冗余侦测线,经由复杂的监听程序。逻
辑判断,来相互侦测对方运行的情况,所检查的项目有:
主机硬件(CPU和周边)
主机网络
主机操作系统
数据库引擎及其它应用程序
主机与磁盘阵列连线
为确保侦测的正确性,而防止错误的判断,可设定安全侦测时间,包括侦测时间间隔,
侦测次数以调整安全系数,并且由主机的冗余通信连线,将所汇集的讯息记录下来,以供
维护参考。
自动切换(Auto-Switch)阶段 某一主机如果确认对方故障,则正常主机除继续进行原来的
任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服
务。
自动恢复(Auto-Recovery)阶段 在正常主机代替故障主机工作后,故障主机可离线进行修
复工作。在故障主机修复后,透过冗余通讯线与原正常主机连线,自动切换回修复完成的
主机上。整个回复过程完成由EDI-HA自动完成,亦可依据预先配置,选择回复动作为半自
动或不回复。
4.2、HA三种工作方式:
(1)、主从方式 (非对称方式)
工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,
待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的
一致性通过共享存储系统解决。
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
(2)、双机双工方式(互备互援)
工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另
一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存
储系统中。
(3)、集群工作方式(多服务器互备方式)
工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用
主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
相关文档
http://tech.sina.com.cn/it/2004-04-09/1505346805.shtml
http://stonesoup.esd.ornl.gov
LINUX下的集群实列应用
最近有客户需要一个负载均衡方案,笔者对各种软硬件的负载均衡方案进行了调查和
比较,从IBM sServer Cluster、Sun Cluster PlatForm 等硬件集群,到中软、红旗、
TurboLinux的软件集群,发现无论采用哪个厂商的负载均衡产品其价格都是该客户目前所
不能接受的。于是笔者想到了开放源项目Linux Virtual Server(简称LVS)。经过对LVS的研
究和实验,终于在Red Hat 9.0上用LVS成功地构架了一组负载均衡的集群系统。整个实
现过程整理收录如下,供读者参考。
选用的LVS实际上是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操
作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组
服务器构成一个高性能、高可用的虚拟服务器。使用三台机器就可以用LVS实现最简单的集
群,如图1所示。
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
图1 LVS实现集群系统结构简图
图1显示一台名为Director的机器在集群前端做负载分配工作;后端两台机器称之为
Real Server,专门负责处理Director分配来的外界请求。该集群的核心是前端的Director
机器,LVS就是安装在这台机器上,它必须安装Linux。Real Server则要根据其选用的负
载分配方式而定,通常Real Server上的设置比较少。接下来介绍Director机器上LVS的
安装过程。
安装
LVS的安装主要是在Director机器上进行,Real Server只需针对不同的转发方式做简单
的设定即可。特别是对LVS的NAT方式,Real Server惟一要做的就是设一下缺省的网关。
所以构架集群的第一步从安装Director机器开始。
首先,要在Director机器上安装一个Linux操作系统。虽然早期的一些Red Hat版本,
如6.2、7.2、8.0等自带Red Hat自己的集群软件,或者是在内核中已经支持LVS,但是为
了更清楚地了解LVS的机制,笔者还是选择自行将LVS编入Linux内核的方式进行安装,
Linux版本采用Red Hat 9.0。
如果用户对Red Hat的安装比较了解,可以选择定制安装,并只安装必要的软件包。
安装中请选择GRUB 做为启动引导管理软件。因为GRUB 在系统引导方面的功能远比
LILO强大,在编译Linux内核时可以体会它的方便之处。
LVS是在Linux内核中实现的,所以要对原有的Linux内核打上支持LVS的内核补丁,
然后重新编译内核。支持LVS 的内核补丁可以从LVS 的官方网
http://www.linuxvirtualserver.org 下载,下载时请注意使用的Linux核心版本,必须下载和
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
使用的Linux内核版本相一致的LVS内核补丁才行。对于Red Hat 9.0,其Linux内核版本
是2.4.20,所以对应内核补丁应该是http://www.linuxvirtualserver.org/software/kernel-
2.4/linux-2.4.20-ipvs-1.0.9.patch.gz。笔者经过多次实验,使用Red Hat 9.0自带的Linux
源代码无法成功编译LVS 的相关模组。由于时间关系笔者没有仔细研究,而是另外从
kernel.org上下载了一个tar包格式的2.4.20内核来进行安装,顺利完成所有编译。下面是
整个内核的编译过程:
1.删除Red Hat自带的Linux源代码
# cd /usr/src
# rm -rf linux*
2.下载2.4.20内核
# cd /usr/src
# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.20.tar.bz2
3.解压到当前目录/usr/src
# cd /usr/src
# tar -xjpvf linux-2.4.20.tar.bz2
4.建立链接文件
# cd /usr/src # ln -s linux-2.4.20 linux-2.4 # ln -s linux-2.4.20 linux
5.打上LVS的内核补丁
# cd /usr/src
#wget http://www.linuxvirtualserver.org/software/kernel-2.4/linux-2.4.20-ipvs-
1.0.9.patch.gz
# gzip -cd linux-2.4.20-ipvs-1.0.9.patch.gz
# cd /usr/src/linux
# patch -p1 < ../linux-2.4.20-ipvs-1.0.9.patch
在打补丁时,注意命令执行后的信息,不能有任何错误信息,否则核心或模组很可能
无法成功编译。
6.打上修正ARP问题的内核补丁
# cd /usr/src
# wget http://www.ssi.bg/~ja/hidden-2.4.20pre10-1.diff
# cd /usr/src/linux
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
# patch -p1 < ../hidden-2.4.20pre10-1.diff
这一步在Director机器上可以不做,但是在使用LVS/TUN和LVS/DR方式的Real Server
上必须做。
7.为新核心命名
打开/usr/src/linux/Makefile。注意,在开始部分有一个变量EXTRAVERSION可以自行定
义。修改这个变量,比如改成“EXTRAVERSION=-LVS”后,编译出的核心版本号就会显
示成2.4.20-LVS。这样给出有含义的名称将有助于管理多个Linux核心。
8.检查源代码
# make mrproper
这一步是为确保源代码目录下没有不正确的.o文件及文件的互相依赖。因为是新下载的内
核,所以在第一次编译时,这一步实际可以省略。
9.配置核心选项
# make menuconfig
命令执行后会进入一个图形化的配置界面,可以通过这个友好的图形界面对内核进行定制。
此过程中,要注意对硬件驱动的选择。Linux支持丰富的硬件,但对于服务器而言,用不到
的硬件驱动都可以删除。另外,像Multimedia devices、Sound、Bluetooth support、Amateur
Radio support等项也可以删除。
注意,以下几项配置对LVS非常重要,请确保作出正确的选择:
(1)Code maturity level options项
对此项只有以下一个子选项,请选中为*,即编译到内核中去。
Prompt for development and/or incomplete code/drivers
(2)Networking options项
对此项的选择可以参考以下的配置,如果不清楚含义可以查看帮助:
<*> Packet socket
[ ] Packet socket: mmapped IO
< > Netlink device emulation
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
Network packet filtering (replaces ipchains)
[ ] Network packet filtering debugging
Socket Filtering
<*> Unix domain sockets
TCP/IP networking
IP: multicasting
IP: advanced router
IP: policy routing
[ ] IP: use netfilter MARK value as routing key
[ ] IP: fast network address translation
<M> IP: tunneling
IP: broadcast GRE over IP
[ ] IP: multicast routing
[ ] IP: ARP daemon support (EXPERIMENTAL)
[ ] IP: TCP Explicit Congestion Notification support
[ ] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration --->
IP: Virtual Server Configuration --->
(3)Networking options项中的IP: Virtual Server Configuration项
如果打好了LVS的内核补丁,就会出现此选项。进入Virtual Server Configuration选项,
有以下子选项:
<M> virtual server support (EXPERIMENTAL)
IP virtual server debugging
(12) IPVS connection table size (the Nth power of 2)
--- IPVS scheler
<M> round-robin scheling
<M> weighted round-robin scheling
<M> least-connection scheling scheling
<M> weighted least-connection scheling
<M> locality-based least-connection scheling
<M> locality-based least-connection with replication scheling
<M> destination hashing scheling
<M> source hashing scheling
<M> shortest expected delay scheling
<M> never queue scheling
--- IPVS application helper
<M> FTP protocol helper
以上所有项建议全部选择。
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
(4)Networking options项中的IP: Netfilter Configuration项
对于2.4版本以上的Linux Kernel来说,iptables是取代早期ipfwadm和ipchains的
更好选择,所以除非有特殊情况需要用到对ipchains和ipfwadm的支持,否则就不要选它。
本文在LVS/NAT方式中,使用的就是iptables,故这里不选择对ipchains和ipfwadm的
支持:
< > ipchains (2.2-style) support
< > ipfwadm (2.0-style) support
10. 编译内核
(1)检查依赖关系
# make dep
确保关键文件在正确的路径上。
(2)清除中间文件
# make clean
确保所有文件都处于最新的版本状态下。
(3)编译新核心
# make bzImage
(4)编译模组
# make moles
编译选择的模组。
(5)安装模组
# make moles_install
# depmod -a
生成模组间的依赖关系,以便modprobe定位。
(6)使用新模组
# cp System.map /boot/System.map-2.4.20-LVS
# rm /boot/System.map
# ln -s /boot/System.map-2.4.20-LVS /boot/System.map
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-LVS
# rm /boot/vmlinuz
# ln -s /boot/vmlinuz-2.4.20-LVS /boot/vmlinuz
# new-kernel-pkg --install --mkinitrd --depmod 2.4.20-LVS
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
(7)修改GRUB,以新的核心启动
执行完new-kernel-pkg命令后,GRUB的设置文件/etc/grub.conf中已经增加了新核心的
启动项,这正是开始安装Linux时推荐使用GRUB做引导程序的原因。
grub.conf中新增内容如下:
title Red Hat Linux (2.4.20-LVS)
root (hd0,0)
kernel /boot/vmlinuz-2.4.20LVS ro root=LABEL=/
initrd /boot/initrd-2.4.20LVS.img
将Kernel项中的root=LABEL=/改成 root=/dev/sda1 (这里的/dev/sda1是笔者Linux的根
分区,读者可根据自己的情况进行不同设置)。
保存修改后,重新启动系统:
# reboot
系统启动后,在GRUB的界面上会出现Red Hat Linux(2.4.20-LVS)项。这就是刚才编译的
支持LVS的新核心,选择此项启动,看看启动过程是否有错误发生。如果正常启动,ipvs
将作为模块加载。同时应该注意到,用LVS的内核启动后在/proc目录中新增了一些文件,
比如/proc/sys/net/ipv4/vs/*。
11.安装IP虚拟服务器软件ipvsadm
用支持LVS的内核启动后,即可安装IP虚拟服务器软件ipvsadm了。用户可以用tar包或
RPM 包安装,tar 包可以从以下地址http://www.linuxvirtualserver.org/software/kernel-
2.4/ipvsadm-1.21.tar.gz 下载进行安装。
这里采用源RPM包来进行安装:
# wget http://www.linuxvirtualserver.org/software/kernel-2.4/ipvsadm-1.21-7.src.rpm
# rpmbuild --rebuild ipvsadm-1.21-7.src.rpm
# rpm -ivh /usr/src/redhat/RPMS/i386/ipvsadm-1.21-7.i386.rpm
注意:高版本的rpm命令去掉了--rebuild这个参数选项,但提供了一个rpmbuild命令来实
现它。这一点和以前在Red Hat 6.2中以rpm—rebuild XXX.src.rpm来安装源RPM包的习
惯做法有所不同。
安装完,执行ipvsadm命令,应该有类似如下的信息出现:
# ipvsadm
中科红旗linux技术支持服务中心---西安站 http://linux.xab.ac.cn
中国科学院西安网络中心 中科红旗linux培训认证中心
IP Virtual Server version 1.0.9 (size=4096)
Prot LocalAddress:Port Scheler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
出现类似以上信息,表明支持LVS 的内核和配置工具ipvsadm 已完全安装,这台
Director机器已经初步安装完成,已具备构架各种方式的集群的条件。
实例
理解了上述关于请求转发方式和调度算法的基本概念后,就可以运用LVS来具体实现
几种不同方式的负载均衡的集群系统。LVS的配置是通过前面所安装的IP虚拟服务器软件
ipvsadm来实现的。ipvsadm与LVS的关系类似于iptables和NetFilter的关系,前者只是
一个建立和修改规则的工具,这些命令的作用在系统重新启动后就消失了,所以应该将这
些命令写到一个脚本里,然后让它在系统启动后自动执行。网上有不少配置LVS的工具,
有的甚至可以自动生成脚本。但是自己手工编写有助于更深入地了解,所以本文的安装没
有利用其它第三方提供的脚本,而是纯粹使用ipvsadm命令来配置。
下面就介绍一下如何配置LVS/NAT、LVS/TUN、LVS/DR方式的负载均衡集群。
1.设定LVS/NAT方式的负载均衡集群
NAT是指Network Address Translation,它的转发流程是:Director机器收到外界请求,
改写数据包的目标地址,按相应的调度算法将其发送到相应Real Server上,Real Server
处理完该请求后,将结果数据包返回到其默认网关,即Director机器上,Dire

⑧ 如何配置Web服务器实现负载均衡

网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。

以四台服务器为例实现负载均衡:

安装配置LVS

1. 安装前准备:

(1)首先说明,LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载状况,调整负载分配策略,充分利用集群环境中的每一台服务器。如下表:

Srv Eth0 Eth0:0 Eth1 Eth1:0

vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254

vsbak 10.0.0.3 192.168.10.102

real1 192.168.10.100

real2 192.168.10.101

其中,10.0.0.2是允许用户访问的IP。

(2)这4台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的real1,real2,然后由real1,real2分别处理。
Client为客户端测试机器,可以为任意操作系统。

(3)所有OS为redhat6.2,其中vs1 和vsbak 的核心是2.2.19, 而且patch过ipvs的包, 所有real
server的Subnet mask 都是24位, vs1和vsbak 的10.0.0. 网段是24 位。

2.理解LVS中的相关术语

(1) ipvsadm :ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。

(2) 调度算法: LVS的负载均衡器有以下几种调度规则:Round-robin,简称rr;weighted
Round-robin,简称wrr;每个新的连接被轮流指派到每个物理服务器。Least-connected,简称lc;weighted
Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。

(3) Persistent client
connection,简称pcc,(持续的客户端连接,内核2.2.10版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下,第一次连接后,所有以后来自相同客户端的连接(包括来自其它端口)将会发送到相同的物理服务器。但这也会带来一个问题,因为大约有25%的Internet
可能具有相同的IP地址。

(4) Persistent port
connection调度算法:在内核2.2.12版以后,pcc功能已从一个调度算法(你可以选择不同的调度算法:rr、wrr、lc、wlc、pcc)演变成为了一个开关选项(你可以让rr、
wrr、lc、wlc具备pcc的属性)。在设置时,如果你没有选择调度算法时,ipvsadm将默认为wlc算法。 在Persistent port
connection(ppc)算法下,连接的指派是基于端口的,例如,来自相同终端的80端口与443端口的请求,将被分配到不同的物理服务器上。不幸的是,如果你需要在的网站上采用cookies时将出问题,因为http是使用80端口,然而cookies需要使用443端口,这种方法下,很可能会出现cookies不正常的情况。

(5)Load Node Feature of Linux Director:让Load balancer 也可以处理users 请求。

(6)IPVS connection synchronization。

(7)ARP Problem of LVS/TUN and LVS/DR:这个问题只在LVS/DR,LVS/TUN 时存在。

3. 配置实例

(1) 需要的软件包和包的安装:

I. piranha-gui-0.4.12-2*.rpm (GUI接口cluster设定工具);

II. piranha-0.4.12-2*.rpm;

III. ipchains-1.3.9-6lp*.rpm (架设NAT)。

取得套件或mount到光盘,进入RPMS目录进行安装:

# rpm -Uvh piranha*

# rpm -Uvh ipchains*

(2) real server群:

真正提供服务的server(如web
server),在NAT形式下是以内部虚拟网域的形式,设定如同一般虚拟网域中Client端使用网域:192.168.10.0/24
架设方式同一般使用虚拟IP之局域网络。

a. 设网卡IP

real1 :192.168.10.100/24

real2 :192.168.10.101/24

b.每台server均将default gateway指向192.168.10.254。
192.168.10.254为该网域唯一对外之信道,设定在virtual server上,使该网域进出均需通过virtual server 。

c.每台server均开启httpd功能供web server服务,可以在各real server上放置不同内容之网页,可由浏览器观察其对各real
server读取网页的情形。

d.每台server都开启rstatd、sshd、rwalld、ruser、rsh、rsync,并且从Vserver上面拿到相同的lvs.conf文件。

(3) virtual server:

作用在导引封包的对外主机,专职负责封包的转送,不提供服务,但因为在NAT型式下必须对进出封包进行改写,所以负担亦重。

a.IP设置:

对外eth0:IP:10.0.0.1 eth0:0 :10.0.0.2

对内eth1:192.168.10.1 eth1:0 :192.168.10.254

NAT形式下仅virtual server有真实IP,real server群则为透过virtual server.

b.设定NAT功能

# echo 1 >; /proc/sys/net/ipv4/ip_forward

# echo 1 >; /proc/sys/net/ipv4/ip_always_defrag

# ipchains -P forward MASQ

c.设定piranha 进入X-window中 (也可以直接编辑/etc/lvs.cf )

a).执行面板系统piranha

b).设定“整体配置”(Global Settings) 主LVS服务器主机IP:10.0.0.2, 选定网络地址翻译(预设) NAT路径名称:
192.168.10.254, NAT 路径装置: eth1:0

c).设定虚拟服务器(Virtual Servers) 添加编辑虚拟服务器部分:(Virtual
Server)名称:(任意取名);应用:http;协议: tcp;连接:80;地址:10.0..0.2;装置:eth0:0; 重入时间:180
(预设);服务延时:10 (预设);加载监控工具:ruptime (预设);调度策略:Weighted least-connections; 持续性:0
(预设); 持续性屏蔽: 255.255.255.255 (预设); 按下激活:实时服务器部分:(Real Servers); 添加编辑:名字:(任意取名);
地址: 192.168.10.100; 权重:1 (预设) 按下激活

另一架real server同上,地址:192.168.10.101。

d). 控制/监控(Controls/Monitoring)
控制:piranha功能的激活与停止,上述内容设定完成后即可按开始键激活piranha.监控器:显示ipvsadm设定之routing table内容
可立即更新或定时更新。

(4)备援主机的设定(HA)

单一virtual server的cluster架构virtual server 负担较大,提供另一主机担任备援,可避免virtual
server的故障而使对外服务工作终止;备份主机随时处于预备状态与virtual server相互侦测

a.备份主机:

eth0: IP 10.0.0.3

eth1: IP 192.168.10.102 同样需安装piranha,ipvsadm,ipchains等套件

b.开启NAT功能(同上面所述)。

c.在virtual server(10.0.0.2)主机上设定。

a).执行piranha冗余度 ;

b).按下“激活冗余度”;

冗余LVS服务器IP: 10.0.0.3;HEARTBEAT间隔(秒数): 2 (预设)

假定在…秒后进入DEAD状态: 5 (预设);HEARTBEAT连接端口: 539 (预设)

c).按下“套用”;

d).至“控制/监控”页,按下“在当前执行层添加PULSE DEAMON” ,按下“开始”;

e).在监控器按下“自动更新”,这样可由窗口中看到ipvsadm所设定的routing table,并且动态显示real
server联机情形,若real server故障,该主机亦会从监视窗口中消失。

d.激活备份主机之pulse daemon (执行# /etc/rc.d/init.d/pulse start)。

至此,HA功能已经激活,备份主机及virtual server由pulse daemon定时相互探询,一但virtual
server故障,备份主机立刻激活代替;至virtual server 正常上线后随即将工作交还virtual server。

LVS测试

经过了上面的配置步骤,现在可以测试LVS了,步骤如下:

1. 分别在vs1,real1,real2上运行/etc/lvs/rc.lvs_dr。注意,real1,real2上面的/etc/lvs
目录是vs2输出的。如果您的NFS配置没有成功,也可以把vs1上/etc/lvs/rc.lvs_dr复制到real1,real2上,然后分别运行。确保real1,real2上面的apache已经启动并且允许telnet。

2. 测试Telnet:从client运行telnet 10.0.0.2,
如果登录后看到如下输出就说明集群已经开始工作了:(假设以guest用户身份登录)

[guest@real1 guest]$——说明已经登录到服务器real1上。

再开启一个telnet窗口,登录后会发现系统提示变为:

[guest@real2 guest]$——说明已经登录到服务器real2上。

3. 测试http:从client运行iexplore http://10.0.0.2

因为在real1 和real2 上面的测试页不同,所以登录几次之后,显示出的页面也会有所不同,这样说明real server 已经在正常工作了。

热点内容
值班发布源码 发布:2024-10-25 19:23:50 浏览:369
php实现注册登陆 发布:2024-10-25 19:22:56 浏览:545
android开发库 发布:2024-10-25 18:50:28 浏览:231
优酷路由宝存储 发布:2024-10-25 18:41:37 浏览:934
pythoncmdb 发布:2024-10-25 18:41:29 浏览:200
安卓触控屏不灵怎么办 发布:2024-10-25 17:31:22 浏览:872
中信银行信用卡激活后密码是多少 发布:2024-10-25 17:28:31 浏览:506
cocos2d30编译 发布:2024-10-25 17:20:51 浏览:994
app直播平台源码 发布:2024-10-25 17:19:57 浏览:224
asp文件上传带进度条 发布:2024-10-25 17:19:54 浏览:659