linux服务器LB群集之lvs-nat

    

 

群集也称集群 。在实验以前,首先要来了解一下群集的相关知识。

1. 类型linux

1LB load balancing 负载均衡2HA high available 高可用3) HP 高性能LBweb

分发器 director算法

硬件实现:F5sql

软件实现:squidlvs(linux virtual servr)apache

Squid是七层转发,lvs是四层转发vim

四层转发:ip 协议端口后端

七层转发:squid websqlcentos

2.调度算法:缓存

当一个director收到一个访问集群服务的请求,选择的机制就是lvs调度算法。
(1)静态调度方法 fixed scheduling
 不关心当前链接的活动和非活动状态,不检查realservers的链接状态
 相应算法:
 1,轮调度(Round-RobinScheduling
    轮叫调度算法就是以轮叫的方式依次将请求调度不一样的服务器,而后进行相应的处理,这种算法的优势是其简洁性,它无需记录当前全部链接的状态,因此它是一种无状态调度。
 2,加权轮叫调度(WeightedRound-Robin Scheduling
    加权轮调算法用于区分后端服务器响应能力,权重越大分配的链接越多,能够解决服务器间性能不一的状况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。它是按权值的高低和轮叫方式分配请求到各服务器,权值高的服务器先收到的链接,权值高的服务器比权值低的服务器处理更多的链接,相同权值的服务器处理相同数目的链接数。
 3,目标地址散列调度(DestinationHashing Scheduling
    目标地址hash算法以目标地址为标准,针对目标地址的请求进行定向转发,可以实现来自同一用户的同一请求转发到同一台服务器上(基于缓存的架构,可以提升缓存的命中率),它经过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。
 4,源地址散列调度(SourceHashing Scheduling
    源地址hash ,以源地址为标准,未来自同一地址的用户转发给同一网络,算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,做为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本类似。在实际应用中,源地址散列调度和目标地址散列调度能够结合使用在防火墙集群中,它们能够保证整个系统的惟一出入口。
 静态调度算法的缺陷:不能考虑后台服务器当前的状态
(2)动态调度方法 dynamic scheduling
 优势:可以基于后台服务器当前的活动链接数,进行请求的分配,更合理,避免了一台服务器负载太多,而另外的服务器处于闲置状态。
 两种标准:
1非活动状态的链接(但仍在链接状态)   2活动状态的链接数
  相应的算法:
 1,最小链接调度(Least-Connection Scheduling
    最少链接调度是把新的链接请求分配到当前链接数最小的服务器,它经过服务器当前所活跃的链接数来估计服务器的负载状况。调度器须要记录各个服务器已创建链接的数目,当一个请求被调度到某台服务器,其链接数加1;当链接停止或超时,其链接数减一。同时检查非活动状态链接数和活动状态链接数,基于overhead决定,谁的overhead小就会接受下一次请求。
 例:overhead=当前活动状态的链接数*256+当前处于非活动状态
 2,加权最小链接调度(Weighted Least-Connection Scheduling
    加权最少链接数是最小链接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员能够动态地设置服务器的权值。加权最小链接调度在调度新链接时尽量使服务器的已创建链接数和其权值成比例,是最经常使用的算法。 例:overhead=(当前活动状态的链接数*256+当前处于非活动状态的链接数)/权重
 3,最短的指望的延迟(Shortest Expected Delay Scheduling SED
    最短时间望延迟,是对wlc算法的一种改进,不查看非状态链接数,并且在计算overhead时要把当前的活动状态链接数加一。
 例:overhead=((当前活动状态的链接数+1*256/权重
 4,最少队列调度(Never Queue Scheduling NQ
    最少队列调度不查看非活动链接数,只查看当前的活动状态,保证主机不会闲置;无需队列。若是有台realserver的链接数=0就直接分配过去,不须要在进行sed运算。
 5,基于局部性的最少连接(Locality-Based Least Connections Scheduling
    基于局部性的最少连接算法和dh类似,是动态的算法,考虑后台的实际状况进行轮调,支持权重,在wlc的基础上;目前主要用于Cache集群系统,由于在Cache集群中客户请求报文的目标IP地址是变化的。这里假设任何后端服务器均可以处理任一请求,算法的设计目标是在服务器的负载基本平衡状况下,将相同目标IP地址的请求调度到同一台服务器,来提升各台服务器的访问局部性和主存Cache命中率,从而整个集群系统的处理能力。LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于其一半的工做负载,则用最少连接的原则选出一个可用的服务器,将请求发送到该服务器。
 6,带复制的基于局部性最少连接(Locality-Based Least Connections with Replication Scheduling
    带复制的基于局部性最少连接也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不一样之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。对于一个热门站点的服务请求,一台Cache 服务器可能会忙不过来处理这些请求。这时,LBLC调度算法会从全部的Cache服务器中按最小链接原则选出一台Cache服务器,映射该热门站点到这台Cache服务器,很快这台Cache服务器也会超载,就会重复上述过程选出新的Cache服务器。这样,可能会致使该热门站点的映像会出如今全部的Cache服务器上,下降了Cache服务器的使用效率。LBLCR调度算法将热门站点映射到一组Cache服务器(服务器集合),当该热门站点的请求负载增长时,会增长集合里的Cache服务器,来处理不断增加的负载;当该热门站点的请求负载下降时,会减小集合里的Cache服务器数目。这样,该热门站点的映像不太可能出如今全部的Cache服务器上,从而提供Cache集群系统的使用效率。LBLCR算法先根据请求的目标IP地址找出该目标IP地址对应的服务器组;按最小链接原则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载;则按最小链接原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以下降复制的程度。服务器

下面就是经过一个小案例来讲明LB群集的lvs-nat的实现

 

WEB1:

建立光盘挂载点并挂载

切换到光盘里进行安装apache

 cd /mnt/cdrom/CentOS

rpm -ivh httpd-2.2.3-63.el5.centos.i386.rpm 

启动apache

service httpd start

加入开机启动列表,使其开机启动

chkconfig httpd on

建立测试站点

配置地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

 

重启网卡,使刚配置的参数生效

测试

WEB2

建立光盘挂载点并挂载

 

切换到光盘里安装apache

cd /mnt/cdrom/Packages/

rpm -ivh httpd-2.2.15-26.el6.centos.i686.rpm 

启动apache

service httpd start

加入开机启动列表,使其开机启动

chkconfig httpd on

建立测试站点

 

配置地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

重启网卡,使刚配置的参数生效

测试:

 

DIRECTORY

配置eth0地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0

 

配置eth1地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth1

 

重启网卡使参数生效:

boot目录编辑内核,看是否支持ipvs模块

cd /boot/

 vim config-2.6.18-164.el5 

由此可知,内核已经支持ipvs模块

因为如今作的是nat的转换,因此要开启数据转发功能,这时要编辑/etc/sysctl.conf文件来开启此功能

vim /etc/sysctl.conf 

接着要执行sysctl -p命令来使参数生效

接着要安装一个工具ipvsadm,到光盘里直接安装便可

 

接下来就是配置规则了,这里先来配置一个轮询式(rr)的

接着把规则保存并启动服务

测试以前先来看一下状态,这时都为0

下面就来测试

这里为何会先显示WEB1呢,由于在配置规则时,先写的WEB1的规则,因此先匹配它,这时来刷新

再来看匹配状况:

再来配置一个加权式(wrr)的

 在上面的基础上作相应的修改便可(让WEB2的权值大一点):

 

测试前查看一下状态

测试

经屡次刷新后

再来看匹配状况:

相关文章
相关标签/搜索