LVS学习

  • 格式:doc
  • 大小:26.50 KB
  • 文档页数:5

LVS学习一、基础:IPVS使用的三种负载均衡机制1、(-m)VS/NAT(Virtual Server via Network Address Translation,通过网络地址翻译实现的虚拟服务器)在这种方式中。

调度服务器将改写请求报文中的目标地址(即VIP地址)和端口,将其改为应用服务器的地址和端口;当应用服务器返回数据时,调度服务器再将报文中源地址和端口地址改写为VIP地址和端口,然后把数据返回给用户。

在这种方式下,由于请求报文和返回保温都需要被调度服务器重写,所以调度服务器的性能将成为整个LVS系统的瓶颈2、(-i)VS/TUN(Virtual Server via IP Tunneling,通过IP隧道技术实现的虚拟服务器)。

这种方式和VS/NAT方式类似,不同的是,当调度服务器把用户请求发送给应用服务器后,应用服务器将直接返回数据给用户,而不再经过调度服务器。

由于在这种方式下,调度服务器只处理用户请求,所以整个系统的吞吐量较VS/NAT方式大大提高。

3、(-g)VS/DR(Virtual Server via Direct Routing,使用直接路由技术实现的虚拟服务器)。

这种方式类似于VS/NAT与VS/TUN的综合,但报文转发的方式有所不同。

VS/DR通过改写请求报文的MAC地址,将请求发送至应用服务器,而应用服务器将数据直接返回给用户。

VS/DR调度方式是三种负载均衡方式中性能最好的,但前提是调度服务器和应用服务器必须在同一网段中(通过改写报文的MAC地址,因此而不能跨网传播)。

IPVS负载调度算法rr wrr lc wlc lblc lblcr dh sh1.轮叫(Round Robin)调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2.加权轮叫(Weighted Round Robin)调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。

这样可以保证处理能力强的服务器处理更多的访问流量。

调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3.最少链接(Least Connections)调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。

如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

4.加权最少链接(Weighted Least Connections)在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。

调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

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)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

实验:单Director模式下实现LVS1、环境检测:安装kernel-devel gcc 包2、创建链接,预防错误ln -sv /usr/src/kernels/$(uname -r) /usr/src/linux3、Director端源码包编译安装cd $DIR1tar xzvf ipvsadm-1.24.tar.gzcd ipvsadm-1.24make && make install4、Director端IPVS环境配置脚本(lvs_dr.sh)#!/bin/bashVIP=172.24.10.1 //VIP设置RIP1=172.24.30.32 //Real server1 IPRIP2=172.24.30.33 //Real server1 IPcase "$1" instart)echo "start LVS of DirectorServer"#####开启IP转发(三种模式都需要IP转发)echo 1 > /proc/sys/net/ipv4/ip_forward/sbin/sysctl -p#####设置虚拟端口,并IP值为VIP 因为要发ARP广播,因此把掩码设为#####32位/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up#####设置报文出口为eth0:0端口VIP/sbin/route add -host $VIP dev eth0:0#####清空ipvs规则/sbin/ipvsadm -C#####设置IPVS Director VIP和服务使用的端口-s指定所运用负载调度算法rr为#####轮叫,默认为加权最少链接wlc/sbin/ipvsadm -A -t $VIP:80 -s rr#####设置Realserver端(即LVS客户端)IP和服务使用端口。

##### -g 指定使用的负载均衡机制-g DR直接路由技术-w指定加权值/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1####启用ipvsadm/sbin/ipvsadm;;stop)echo "Close LVS Directorserver"/sbin/ifconfig eth0:0 down/sbin/ipvsadm -C;;*)echo "Usage0{start|stop}"exit 1Esac5、在两台RealServer机器上安装NGIUX或者Apache服务6、Real Server端环境配置脚本realserver.sh#!/bin/bash# description: Config realserver lo and apply noarpVIP=172.24.10.1case "$1" instart)###环回端口设置成VIP,即直接把回应报文返回给VIP端口,不经过Director端/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up ####设置报文出口为eth0:0端口VIP/sbin/route add -host $VIP dev lo:0####防止ARP广播风暴echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)/sbin/ifconfig lo:0 down/sbin/route del $VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*)echo "Usage: $0 {start|stop}"exit 1esac7、接下来就可以测试了,当访问VIP时,网页会在两个服务器下的页面之间切换。