实验拓扑
实验环境
使用三台虚拟机:一台为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。
- #echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
- #echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
- #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
注:以上选项需要在启用VIP之前进行。否则,则需要在Drector上清空arp表才能正常使用LVS。
(2)配置VIP
- #ifconfig lo:0 172.16.19.1 broadcast 172.16.19.1 netmask
- 255.255.255.255 up
- #route add -host 172.16.19.1 dev lo:0 //添加路由,
- 表示使用这个网卡进栈的数据再次使用此网卡的地址出栈
(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
- #yum -y install ipvsadm
- #ifconfig eth0:0 172.16.19.1 broadcast 172.16.19.1 netmask
- 255.255.255.255 up
- # route add -host 172.16.19.1 dev eth0:0
(3)测试Director对RealServer的可访问性
访问一切正常。
(3)配置简单的负载均衡集群以便验证持久连接
- #ipvsadm -A -t 172.16.19.1:80 -s rr //没有设置持久连接
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.88 -g
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.72 -g
(4)测试负载均衡效果
测试结果为负载均衡成功。
2、实现PCP-持久客户端连接
设置持久客户端集群只需在Director上把把集群端口定义为0即可。
- #ipvsadm -C //清除之前定义的集群服务
- #ipvsadm -A -t 172.16.19.1:0 -s rr -p 1800 //持久连接1800s
- #ipvsadm -a -t 172.16.19.1:0 -r 192.168.0.88 -g
- #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为例。
- #ipvsadm -A -t 172.16.19.1:80 -s rr -p 1800
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.88 -g
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.72 -g
- #ipvsadm -A -t 172.16.19.1:23 -s rr -p 1800
- #ipvsadm -a -t 172.16.19.1:23 -r 192.168.0.88 -g
- #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上。
基于防火墙标记来定义集群服务,也称为端口的姻亲关系。
- #ipvsadm -C
- #iptables -t mangle -A PREROUTING -d 172.16.19.1 -p tcp --dport 80
- -j MARK --set-mark 6
- #iptables -t mangle -A PREROUTING -d 172.16.19.1 -p tcp --dport 443
- -j MARK --set-mark 6
- #ipvsadm -A -f 6 -s rr -p 1800
- #ipvsadm -a -f 6 -r 192.168.0.88 -g
- #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上。
至此,三种持久连接就已全部介绍完毕。它们有各自的适用场景,在具体的使用中根据所需进行选择便好。