2)Virtual Server via IP Tunneling(VS/TUN)
采用NAT技术时,由于请求和
响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务
器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐
量可以提高10倍。
3)Virtual Server via Direct Routing(VS/DR)
VS/DR通过改写请求报文
的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种
方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
针对不同的网络服务需求和服务器配置,IPVS调度器实现了如下八种负载调度算法,这里我只介绍前四种,因为后面的基本不常用:
1)轮叫(Round Robin)
调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2)加权轮叫(Weighted Round Robin)
调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3)最少链接(Least Connections)
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
4)加权最少链接(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
我在这里做的实验采用的基于VS/NAT,轮叫机制,这样是因为我的两台服务器是完全一样的性能,所以采用轮叫的方法.如果在公司里,要根据不同的情况选择不同的部署方案,要看实际的需要和设备的实际情况来考虑.
同样我还是采用三台虚拟机,里面还是Linux AS5的版本,其中作为虚拟主机的机器要做双ip,一个内网,一个外网
我的拓扑图
1) 下载ipvsadm软件包,下载地址:
我下载的是ipvsadm-1.24.tar.gz
2)正常的步骤应该是先编译内核,因为ipvsadm要求内核在2.4.24以后的版本,为了省事,我直接用的是AS5,它的内核是2.6.18(可以使用uname -an察看系统内核信息)
3)软件包下载完成后,就要编译和安装ipvsadm了。
先要对内核进行软连接,因为ipvsadm在安装的过程中先要去查找/usr/src/linux 这个信息,所以我们要先把内核信息做软连接到/usr/src/linux。如果不这么做,在安装的过程中会报错,如图
软连接方法:ln -s /usr/src/kernels/2.6.18-53.el5-i686 /usr/src/linux
4)包的解压 安装
tar -zxvf ipvsadm-1.24
cd ipvsadm-1.24
make all
make install
安装完成后 可以察看版本信息 ipvsadm --version
pvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1)
5) 配置LVS
在虚拟主机中启用转发功能
echo "1">/proc/sys/net/ipv4/ip_forward (因为虚拟主机在服务前段主要是负责ip的转发的,所以这项要启动)
清除ipvsadm表
ipvsadm -C
安装LVS服务
ipvsadm -A -t 10.1.1.200:80 -s rr
增加第一台服务器
ipvsadm -a -t 10.1.1.200:80 -r 192.168.1.100:80 -m -w 1
增加第二台服务器
ipvsadm -a -t 10.1.1.200:80 -r 192.168.1.200:80 -m -w 1
注意-w 后的是1而不是l
6) 配置服务器端
在192.168.1.100和192.168.1.200里分别将网关设置为192.168.1.254,并启动WEB服务(192.168.1.254是虚拟主机的内网IP)
7)测试
我在客户机上分别建立了两个主页,并启动WEB服务
在客户端多次浏览10.1.1.200(前端的虚拟主机ip),然后在虚拟主机上输入ipvsadm,会发现已经转发了4次
这个是我在访问前后的效果
现在我在访问同样一个10.1.1.200,也就是我的虚拟主机时,会发现是不同的网页
为了能看出效果,所以我弄的是两个不同的网页.在实际中,应该两个完全一样的主页,这样,虽然客户访问的同一个IP 看到同一个主页,实际上是两台不同的服务器,这样就达到了负载均衡的效果.然后在下端应用上HA(心跳连接),这样一个高可用的集群就算部署好了.