注:承接上一次博客:
由于用户发送请求和返回数据都是通过一台Director来做负载均衡的调度,节点可以根据访问量的多少,增加或减少节点即可,但在NAT 方式中,对于客户端的请求数据包Director 要修改数据包的目标地址,使请求数据可以正产到达真实机,而真实机返回数据包到达Director时,Director要做的就是修改目标地址为原本请求的客户端,也就是说所有的包必须由Direcotr来修改源地址和目标地址,所以Director 却成为了影响系统Web Server 性能的瓶颈,因此我们可以采用 DR方式,用户发送请求过来后由Director 进行调度,而返回信息时直接通过外网地址的网关返回,不在经过Director。
一、实验前的准备工作
(一)清除上次实验的配置
[root@Director ~]# echo "" >/etc/sysconfig/ipvsadm
[root@Director ~]# service ipvsadm restart
(二)网络拓扑规划:
注意:做DR方式必须所有的IP地址都是公网的IP,这里为了方面就用 192.168.4.0/255.255.255.0 网段模拟
DGW:192.168.4.254
VIP:192.168.4.200
DIP:192.168.4.253
RIP:192.168.4.11 (关闭arp ,默认网关为DGW 192.168.4.254 )
RIP:192.168.4.22 (关闭arp ,默认网关为DGW 192.168.4.254 )
二、Director 的配置
(一)绑定虚拟IP地址
[root@Director ~]# cd/etc/sysconfig/network-scripts/
[root@Director network-scripts]# cp ifcfg-eth0{,:0}
[root@Director network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.4.200
NETMASK=255.255.255.0
[root@Director ~]# service network restart
(二) 同上打开ip_forward
[root@Director~]# vim /etc/sysctl.conf
net.ipv4.ip_forward= 1
[root@Director ~]# sysctl -p
三、Real Server 的配置
Real Server 1
(一)设置IP地址
(二)设置默认网关为DGW
(三)关闭arp 分别在两台web服务器上修改内核参数(当有对VIP地址做ARP请求时,WEB服务器不回应该请求) //在后边添加
[root@Server1 ~]# vim /etc/sysctl.conf
#LVS DR ARP=OFF
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
[root@Server1 ~]#sysctl -p
(四)绑定VIP 到lo本地回环上(注意是绑定在lo上,子网掩码为四个255 )
[root@Director~]# cd /etc/sysconfig/network-scripts/
[root@Director network-scripts]# cp ifcfg-eth0{,:0}
[root@Director network-scripts]# vim ifcfg-eth0:0
DEVICE=lo:0
IPADDR=192.168.4.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
BROADCAST=192.168.4.200
ONBOOT=yes
NAME=loopback
[root@Director ~]# service network restart
Real Server 2 (设置同上)
此处通过scp拷贝实现绑定VIP 到lo本地回环上,但在Server2上要重新启动网卡服务
[root@svrnetwork-scripts]# scp ./ifcfg-lo:0 \
> 192.168.4.22:/etc/sysconfig/network-scripts/
(设置完毕后,测看是否成功)
[root@Server2 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr00:0C:29:C0:87:BC
inet addr:192.168.4.22 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec0:87bc/64 Scope:Link
UPBROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RXpackets:8466 errors:0 dropped:0 overruns:0 frame:0
TXpackets:3877 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RXbytes:623345 (608.7 KiB) TX bytes:598603(584.5 KiB)
......
lo:0 Link encap:Local Loopback
inet addr:192.168.4.200 Mask:255.255.255.255
UPLOOPBACK RUNNING MTU:16436 Metric:1
[root@Server2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.4.254 0.0.0.0 UG 0 0 0 eth0
四、Director 上的部署和测试 设置防火墙规则(PREROUTING)路由选择之前处理
[root@director ~]# iptables -t mangle -A PREROUTING -d 192.168.4.200 -p tcp --dport 80 -j MARK --set-mark 1
[root@director ~]# iptables -t mangle -A PREROUTING -d 192.168.4.200 -ptcp --dport 443 -j MARK --set-mark 1 //https
[root@director ~]# service iptables save
[root@Director ~]# service iptables restart
(加上端口亲缘性的绑定,解决网上购物等网站的应用)
[root@director ~]# ipvsadm -A -f 1 -s wrr -p 3600
[root@director ~]# ipvsadm -a -f 1 -r 192.168.4.11-w 10 -g
[root@director ~]# ipvsadm -a -f 1 -r 192.168.4.22-w 20 -g
[root@director ~]# service ipvsadm save
[root@director ~]# service ipvsadm restart
注:-f 1 指说明是经过防火墙的标记过的类型;
-g 表示直接路由
由于我们使用的是静态的网页,而且很简单,测试的结果不是很明显,在这里就不做对比了
[root@localhost ~]# elinks --dump http://192.168.4.200
Server1
[root@localhost ~]# elinks --dump http://192.168.4.200
Server2
[root@localhost ~]# ab -n 1000 -c 200http://192.168.4.200
[root@localhost ~]# watch -n 1 ipvsadm -L -n --stats
说明:单纯的LVS 集群只是解决了负载均衡的问题,但假若其中某台真实机down了,或者分发器down了都会造成系统的不可用性,所有要加入HA的功能,高可用性集群,在以后的实验中会做到.