linux运维进阶-LVS详解

(基于Red Hat rhel6.5)

一.负载均衡的四种工作模式

Load Balancer:
kernel 2.6.x  已內建 LVS 模组
kernel 2.4.x 需打补丁
rhel5  预设安裝即可使用 LVS 模组,  另以 yum  安裝 ipvsadm 套件
rhel5 /rhel6 自带 LVS 软件包 安装 ipvsadm 软件包即可使用
Real Server:
VS/NAT  可使用任何平台的网络服务器当 Real Server
VS/TUN  需支持 IP Tunneling
VS/DR 需支持 Non­ARP 网络设备

(一).VS/NAT
在一组服务器前有一个调度器,它们是通过 Switch/HUB 相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执 行结果是一样的。

服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如 NFS)共享,也可以通过一个分布式文件系统来提供。

VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。

缺点是它的伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。

Load Balance 双网卡 eth0: 192.168.0.254  (对内)   eth1: 192.168.1.254  (对外)  

如果只有一块网卡可用以下方式:

Load Balance:192.168.0.254
Virtual IP: 192.168.1.254
Gateway: 192.168.0.254
Realserver1:  192.168.0.3
Realserver1:  192.168.0.4
开启路由机制
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl ­p
加载 nat 模块
modprobe iptable_nat
注:如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超时现象加载 rule
ipvsadm ­A ­t 192.168.1.254:80 ­s rr
ipvsadm ­a ­t 192.168.1.254:80 ­r 192.168.0.3:80 ­m
ipvsadm ­a ­t 192.168.1.254:80 ­r 192.168.0.4:80 ­m
保存 rule
service ipvsadm save
绑定 vip
ifconfig eth0:0 192.168.1.254 netmask 255.255.255.0 up
 

RealServer 设置

Default Gateway 指向 Director  的 LAN IP 即 192.168.0.254echo `hostname` > /var/www/html/index.html

service httpd start
 
测试:选择一台 192.168.1.0/24 网段主机访问 http:// 192.168.1.254 反复刷新网页,每次出现的网页不同则表示成功

(二).VS/TUN
它的连接调度和管理与 VS/NAT 中的一样,只是它的报文转发方法不同。

调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个 IP 报文中,再将封装后的 IP 报文转发给选出的服务器;

服务器收到报文后,先将报文解封获得原来目标地址为VIP 的报文,服务器发现 VIP地址被配置在本 地的 IP 隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

在 VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。

这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps 的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。

所以,VS/TUN 可以极大地增加负载调度器调度的服务器数量。

VS/TUN 调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以 用来构建高性能的超级服务器。

Load Balance:192.168.0.254
Virtual IP: 192.168.0.200
gateway: 192.168.0.254
Realserver1:  192.168.0.3
Realserver1:  192.168.0.4
开启路由机制
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl ­p
加载 rule
ipvsadm ­C  #清除以前的 rules
ipvsadm ­A ­t 192.168.0.200:80 ­s rr
ipvsadm ­a ­t 192.168.0.200:80 ­r 192.168.0.3:80 ­i
ipvsadm ­a ­t 192.168.0.200:80 ­r 192.168.0.4:80 ­i
保存 rule
service ipvsadm save
绑定 vip
ifconfig eth0:0 192.168.0.200 netmask 255.255.255.255 up

RealServer 设置
Default Gateway 指向 Director  的 LAN IP 即 192.168.0.254

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl ­p
ifconfig tunl0 192.168.0.200  netmask 255.255.255.255 up
route add ­host 192.168.0.200 dev tunl0
echo `hostname` > /var/www/html/index.html
service httpd start 

测试:选择一台主机访问 http:// 192.168.0.200 反复刷新网页,每次出现的网页不同则表示成功。

(三).VS/DR
跟 VS/TUN 方法相同,VS/DR 利用大多数 Internet 服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。

调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB 相连。

VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文;

所有的服务器把 VIP 地址配置在各自的 Non­ARP 网络设备上,它对外面是不可见的,只是用于处 理目标地址为 VIP 的网络请求。

Load Balance:192.168.0.254
Virtual IP: 192.168.0.200Gateway: 192.168.0.254
Realserver1:  192.168.0.3
Realserver1:  192.168.0.4
加载 rule
ipvsadm ­C
ipvsadm ­A ­t 192.168.0.200:80 ­s rr
ipvsadm ­a ­t 192.168.0.200:80 ­r 192.168.0.3:80 ­g
ipvsadm ­a ­t 192.168.0.200:80 ­r 192.168.0.4:80 ­g
保存 rule
service ipvsadm save
绑定 vip
ifconfig eth0:0 192.168.0.200 netmask 255.255.255.255 up
 
RealServer 设置
vi /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl ­p
ifconfig lo:0 192.168.0.200  netmask 255.255.255.255 up
route add ­host 192.168.0.200 dev lo:0
echo `hostname` > /var/www/html/index.html
service httpd start 
 
测试:访问 192.168.0.200 反复刷新网页,每次出现的网页不同则表示成功。

二.LVS 的负载调度算法 在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法:



(一)轮叫调度(Round­Robin Scheduling )


轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行 i = (i + 1) mod n,并选出第i 台服务器。

算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。


(二)加权轮叫调度(Weighted Round­Robin Scheduling )


加权轮叫调度 (Weighted Round­Robin Scheduling)算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为 1。

假设服务器 A 的权值为1,B 的 权值为 2,则表示服务器 B 的处理性能是 A 的两倍。

加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服 务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。



(三)最小连接调度(Least­Connection Scheduling )


最小连接调度(Least­ Connection Scheduling)算法是把新的连接请求分配到当前连接数最小的服务器。

最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。

调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加 1;当连接中止或超时,其连接数减一。


(四)加权最小连接调度(Weighted Least­Connection Scheduling)


加权最小连接调 度(Weighted Least­Connection Scheduling)算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。

服务器的缺省权值为 1,系统管理员可以动态地设置服务器的权 值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。


(五)基于局部性的最少链接(Locality­Based Least Connections Scheduling )


基 于局部性的最少链接调度(Locality­Based Least Connections Scheduling,以下简称为LBLC)算法是针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中 客户请求报文的目标 IP 地址是变化的。


这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标 IP 地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存 Cache 命中率,从而整个集群系统的处理能力。


LBLC 调度算法先根据请求的目标 IP 地址 找出该目标IP 地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;


若服务器不存在,或者该服务器超载且有服务器处于其一半的工 作负载,则用 “ 最少链接 ” 的原则选出一个可用的服务器,将请求发送到该服务器。


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


带复制的基于局部性最少链接调度(Locality­Based Least Connections with Replication Scheduling,以下简称为 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 Scheduling )


目标地址散列调度 (Destination Hashing Scheduling)算法也是针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务器。


目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。


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


源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反,它根据请求的源 IP 地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。


它采用的散列函数与目标地址散列调度算法 的相同。


它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标 IP 地址换成请求的源 IP 地址,所以这里不一一叙述。


在实际应用中,源地址散列 调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值