当前位置:文档之家› 负载均衡系统构架

负载均衡系统构架

负载均衡系统构架负载均衡系统构架【摘要】随着计算机网络和Internet应用的飞速发展,信息共享日益广泛化,并深入到人们工作和生活的各个领域。

人们对信息共享的依赖正逐渐增强。

而作为提供信息载体的服务器的压力也越来越大,对于电子商务、信息共享平台急需合理分配访问流量来减少服务器的压力。

本文对目前的负载均衡技术进行简单的阐述,并对现有均衡算法进行简单的比较,分析其不足之处。

并采用LVS(Linux虚拟服务器)实现负载均衡的架构。

采用Keepalived技术实现负载均衡的高可用性。

并对LVS不同策略上实现的均衡结果进行详细的比较。

最终完成对负载均衡系统的构建同时提供了详细的系统搭建步骤,为研究该方向的人员提供可靠的参考资料。

【关键词】负载均衡、LVS、Keepalived、高并发中图分类号:TN711 文献标识码:A 文章编号:简介1.1背景目前随着网络技术的迅速崛起,网络信息共享数据越来越大,访问量和数据流量的快速增长,所需的处理能力和运算强度也越来越大,使得单一的服务器设备根本无法承担。在此情况下,如果花大量的资金进行硬件方面的升级,会造成大量的资源浪费。

并且对于下一次升级来说,将会投入更大的成本,如何才能利用现有资源,在少量的投入下解决该问题?针对此情况而衍生出来的一种廉价有效透明的方法来扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

1.2负载均衡技术概述负载均衡(又称为负载分担),英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器通采用现有主机进行服务器集群,并把访问流量分发到不同的服务器上从而减少对单一服务器的压力。

负载均衡有两方面的含义:1、大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;2、单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

对一个网络的负载均衡应用,可以从网络的不同层次入手,具体情况要看对网络瓶颈所在之处的具体分析,网络的负载均衡可以从不同的网络层入手,总体上不外乎从传输链路聚合、采用更高层网络交换技术和设置服务器集群策略三个角度实现。

现有的均衡技术2.1局部负载均衡技术局部负载均衡技术就是对一个服务器群执行两种功能:1、将对服务器发出的请求根据服务器的负载情况进行分配另外一个是将损坏的服务器的工作做无缝的接替,从而最大程度上确保网站的业务不受影响。

2、能够进行无级的扩充,而不要很早就担心将来的容量不够问题。

局部负载均衡技术是一项比较成熟的技术,因为负载均衡技术最初就是为了解决局部均衡问题,但是局部负载均衡技术先天不足之处在于无法攻克通往网站最后一段连接。

2.2全局负载均衡技术负载均衡技术的近期发展产物是全局负载,它能更有效的解决网站在大范围内的负载均衡问题,同时避免因为大量的流量访问而造成网络阻塞或瘫痪。

通常情况下,一个网站采用先全局均衡,然后在局部均衡的逐层均衡方式。

所以全局负载均衡具有以下几个特点: 1.分布性:全局负载均衡技术解绝的是远距离(地理距离或拓扑距离)上的对象。

2.对等性:全局负载均衡技术处理的是具有相同内容的网站的镜像。

2.3实现负载均衡的四个方案目前实现的负载均衡的有四个方案。

不论全局或者局部均衡,但其侧重点不同。

比如:HTTP重定向就适合于均不均衡技术。

1、HTTP 重定向基2、基于 TCP层的方法3、基于IP层的方法4、基于DNS的方法负载均衡本次研究的负载均衡技术主要是指在均衡服务器群中所有服务器和应用程序之间流量负载的应用,负载均衡技术用于提高Web服务器、数据库服务器的高可用性和高可伸缩性。

3.1负载均衡算法LVS集群属于任务级负载均衡集群, 采用集中式任务分配。

负载均衡任务的分配是以连接为粒度的,这在一定程度上避免了用户访问的突发性引起的负载不均问题。

LVS目前支持以下八种调度算法:(1) 轮询算法 (RR):把新的连接请求按顺序轮流分配到不同的服务器上, 从而实现负载均衡。

该算法最大的优点在于简单易行,但不适用于每个服务器处理性能不一致的情况。

(2) 加权轮询算法 (WRR) :克服轮询算法的不足, 用相应的权值表示服务器的处理能力, 权值较大的服务器将被赋予更多的请求。

一段时间后, 各服务器处理的请求数趋向于各自权值的比例。

(3) 目的哈希算法 (DH) :以目的地址为关键字查找一个静态hash表来获得所需的真实服务器。

(4) 源哈希算法 (SH):以源地址为关键字查找一个静态hash 表来获得所需的真实服务器。

(5) 最小连接算法 (LC):负载均衡器记录各个真实服务器的连接数。

当用户请求到达时,负载均衡器把该连接请求分配到当前连接数最小的真实服务器。

(6) 加权最小连接算法(WLC):克服最小连接算法的不足, 用相应的权值表示服务器的处理能力, 将用户的请求分配给当前连接数与权值之比最小的服务器。

WLC是LVS缺省的负载分配算法。

(7) 基于位置的最小连接算法(LBLC):根据请求的目标IP地址找出该目标IP地址最近使用的服务器。

若该服务器是可用的且没有超载,将请求发送到该服务器;否则用“最小连接”的原则选出一个可用的服务器,将请求发送到该服务器。

(8) 带复制的基于位置的最小连接算法 (LBLCR):根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从该服务器组中选出一台服务器。

若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器,并定期将该集合中负载最大的服务器节点剔除。

由以上分析可知,前四种调度策略属于静态调度算法,而后四种属于动态调度算法, 但它们是以最小连接算法为基础的。

3.2LVS集群的体系结构IPVS软件实现了这三种IP负载均衡技术,它们的原理如下:1、Virtual Server via Network Address Translation(VS/NAT)通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

NAT结构图如图3.3.1:图3.3.1 NAT结构2、Virtual Server via IP Tunneling(VS/TUN)采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。

为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。

由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

TUN结构图如图3.3.2:图3.3.2TUN结构3、VS/DR(Virtual Server via Direct Routing)通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。

同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。

这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。

DR结构图如图3.3.3图3.3.3DR结构负载均衡实现我们采用了LVS+Keepalived 组合来实现高性能和高可负载的均衡架构。

采用了如下图的均衡架构:图4-14.1软件安装1、获取LVS和Keepalived软件包#mkdir /usr/local/src/lvs#cd /usr/local/src/lvs#wget#wget可到官方网站下载最新版本(分别为ipvsadm-1.25和keepalived-1.1.19)2、安装LVS和Keepalived#lsmod |grep ip_vs //查看内核是否已经安装了ip_vs,若安装了则不需要再安装#uname -r2.6.18-53.el5PAE#ln -s/usr/src/kernels/2.6.18-53.el5PAE-i686//usr/src/linux#tar zxvf ipvsadm-1.24.tar.gz#cd ipvsadm-1.24#make && make install#find / -name ipvsadm //查看ipvsadm的位置#tar zxvf keepalived-1.1.15.tar.gz#cd keepalived-1.1.15#./configure#make && make install#find / -name keepalived // 查看keepalived位置#cp /usr/local/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ #mkdir /etc/keepalived#cp /usr/local/etc/keepalived/keepalived.conf/etc/keepalived/#cp /usr/local/sbin/keepalived /usr/sbin/#service keepalived start|stop //做成系统启动服务方便管理.4.2配置LVS实现负载均衡(本例:隧道模式)1、LVS-TUN,配置LVS脚本实现负载均衡#vi /usr/local/sbin/lvs-tun.sh //编辑lvs-tun.sh脚本文件,加入如下内容#!/bin/shVIP=192.168.25.99RIP1=192.168.25.188RIP2=192.168.25.221/etc/rc.d/init.d/functionscase "$1" instart)echo "Start Lvs of DirectorServer"#set vip server/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up/sbin/route add -host $VIP dev tunl0#clear IPVS table/sbin/ipvsadm -C#set lvs/sbin/ipvsadm -A -t $VIP:80 -s rr //rr为调度算法,可修改/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i#Run Lvs/sbin/ipvsadm;;stop)echo "Close Lvs DirectorServer "ifconfig tunl0 down/sbin/ipvsadm -C;;*)echo "Usage: $0 {start|stop}"exit 1esac2、配置Realserver脚本.#vi /usr/local/sbin/lvs-real-tun.sh //编辑lvs-real-tun.sh脚本文件,加入如下内容#!/bin/shVIP=192.168.25.99/etc/rc.d/init.d/functionscase "$1" instart)echo "tunl port starting"/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask255.255.255.255 up/sbin/route add -host $VIP dev tunl0echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announcesysctl -p;;stop)echo "tunl port closing"ifconfig tunl0 downecho "0" > /proc/sys/net/ipv4/conf/all/arp_announce;;*)echo "Usege: $0 {start|stop}"exit 1esac3、启动DR上的lvs-tun脚本和realserver上的lvs-real-tun 脚本#./usr/local/sbin/lvs-tun.sh start // DR------------最新【精品】范文。

相关主题