实验拓扑


 实验环境

使用三台虚拟机:一台为Director,两台为RealServer
地址分配为:VIP-172.16.19.1,DIP-192.168.0.55,RIP-192.168.0.88和192.168.0.72
软件版本:ipvsadm-1.24
使用yum库安装软件

实验步骤

1、全局配置

在RealServer上做如下配置,以192.168.0.88为例。

(1)设置内核参数。当CIP发出需找VIP的ARP广播求情时,为了避免RealServer响应ARP请求,需要隐藏RealServer的VIP,此时就需要修改内核中的两个内置参数arp_announce, arp_ignore

 
  
  1. #echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore  
  2. #echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce  
  3. #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  4. #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 

注:以上选项需要在启用VIP之前进行。否则,则需要在Drector上清空arp表才能正常使用LVS。

(2)配置VIP

 
  
  1. #ifconfig lo:0 172.16.19.1 broadcast 172.16.19.1 netmask 
  2. 255.255.255.255 up    
  3. #route add -host 172.16.19.1 dev lo:0  //添加路由,
  4. 表示使用这个网卡进栈的数据再次使用此网卡的地址出栈  

(3)编辑浏览页面

#echo  "<h1>From 192.168.0.88</h1>" > /var/www/html/index.html
在192.168.0.72主机上的配置和此主机一样。添加页面为:
#echo  "<h1>From 192.168.0.72</h1>" > /var/www/html/index.html

(4)测试页面
 

 访问一切正常。

Director的配置如下:

(1)首先打开路由转发转发功能,编辑/etc/sysctl.conf文件将net.ipv4.ip_forward = 1

(2)安装ipvsadm并设置VIP 

 
  
  1. #yum -y install ipvsadm
  2. #ifconfig eth0:0 172.16.19.1 broadcast 172.16.19.1 netmask 
  3. 255.255.255.255 up  
  4. # route add -host 172.16.19.1 dev eth0:0  

(3)测试Director对RealServer的可访问性

访问一切正常。

(3)配置简单的负载均衡集群以便验证持久连接

 
  
  1. #ipvsadm -A -t 172.16.19.1:80 -s rr //没有设置持久连接 
  2. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.88 -g  
  3. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.72 -g  



(4)测试负载均衡效果

 

测试结果为负载均衡成功。

2、实现PCP-持久客户端连接

设置持久客户端集群只需在Director上把把集群端口定义为0即可。

 
  
  1. #ipvsadm -C          //清除之前定义的集群服务  
  2. #ipvsadm -A -t 172.16.19.1:0 -s rr -p 1800 //持久连接1800s  
  3. #ipvsadm -a -t 172.16.19.1:0 -r 192.168.0.88 -g  
  4. #ipvsadm -a -t 172.16.19.1:0 -r 192.168.0.72 -g 

此时就配置好了持久客户端集群。查看配置:

在浏览器中输入:http://172.16.19.1

刷新网页结果仍是如此。web服务被定义到了192.168.0.88这台RealServer上。根据持久客户端的原理则其他服务也会被定义到192.168.0.88这台主机上。

3、实现PPC-持续端口连接

配置持久端口连接只需把某端口定义为集群服务即可。在此以端口80和23为例。

 
  
  1. #ipvsadm -A -t 172.16.19.1:80 -s rr -p 1800  
  2. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.88 -g  
  3. #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.72 -g  
  4. #ipvsadm -A -t 172.16.19.1:23 -s rr -p 1800  
  5. #ipvsadm -a -t 172.16.19.1:23 -r 192.168.0.88 -g  
  6. #ipvsadm -a -t 172.16.19.1:23 -r 192.168.0.72 -g 

在此定义了两个端口服务。

首先测试80端口:

 web服务被定义在了192.168.0.72服务器上。

查看23端口:

由连接数据可知telnet服务被定义到了192.168.0.88主机上。由此可知,被定义的两个端口被定义到了不同的RealServer上,则PPC配置成功。

4、持久防火墙标记

把80端口和443 端口做成一个持久防火墙标记,同时定向到同一个RealServer上,即若在访问80服务的时候是192.168.0.88,然后改为访问443服务的时候依然定向到同一个RealServer上。
基于防火墙标记来定义集群服务,也称为端口的姻亲关系。

 
  
  1. #ipvsadm -C       
  2. #iptables -t mangle -A PREROUTING -d 172.16.19.1 -p tcp --dport 80 
  3. -j MARK --set-mark 6    
  4. #iptables -t mangle -A PREROUTING -d 172.16.19.1 -p tcp --dport 443 
  5. -j MARK --set-mark 6    
  6. #ipvsadm -A -f 6 -s rr -p 1800    
  7. #ipvsadm -a -f 6 -r 192.168.0.88 -g    
  8. #ipvsadm -a -f 6 -r 192.168.0.72 -g  

使用ipvsadm -Ln 查看定义的集群服务。

在此如何配置ssl服务便不再详述。443端口的站点名字为cacti.magedu.com。

测试集群服务。



此时可知web服务被定义在了192.168.0.88节点上。下面访问cacti.magedu.com,查看443端口的响应节点是否也是192.168.0.88。

  如我们所料,443端口和80端口被定义到了同一台RealServer上。

至此,三种持久连接就已全部介绍完毕。它们有各自的适用场景,在具体的使用中根据所需进行选择便好。