DIP:调度器的IP地址
RIP:后台真实服务器(realserver)的IP地址
VIP:就是用于服务提供的虚拟IP
LVS的DR模式比较其NAT模式复杂,也不容易实现,因为这种模式更接近与基于硬件的负载均衡,虽然性能较硬件的负载均衡调度还有差距,但是与NAT和TUN模式性能有了较大的提高,其要求调度器和realserver在同一个网段内(可以使用交换机相连,当然也可以基于IP的网络连接),在这里调度器上仅仅使用一张网卡即可,DIP是否等于VIP都可以,DT模式最大的优势在于对服务质量的大幅提高,同时应采取相关的设置对realserver上ARP做的某些限制。
具体实现过程可以这么来说:
1、 客户端发来请求报文到调度器,调度器接到分包不做深入的处理,仅仅把目标MAC地址根据算法修改成realserver pool里的某台真实服务器的MAC地址,同时在缓存一份连接记录(确保此次连接的所有报文都传到同一台realserver上)
2、 Realserver接到报文,根据要求做相关的处理,处理结束之后,根据自身网卡绑定的VIP地址,改写报文的源、目标地址,直接把报文回复给客户端,而不再经过调度器,在客观上减轻了调度器的负担。
实验的平台三台VM下linux服务器主机(CentOS 5.5,内核是2.6版本的是默认支持LVS的,所以不需要重新编译内核,可以直接使用),其中一台用作调度器,另外两台用作realserver。
第一:在调度器上的设置:
[root@localhost ~]# yum -y install ipvsadm //安装LVS管理工具
[root@localhost ~]# ifconfig //查看初始的网卡信息(这里仅仅采用一张网卡)
eth0 Link encap:Ethernet HWaddr 00:0C:29:09:22:5D
inet addr:192.168.1.196 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe09:225d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17657 errors:0 dropped:0 overruns:0 frame:0
TX packets:17945 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7404853 (7.0 MiB) TX bytes:10817894 (10.3 MiB)
Interrupt:169 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:88 errors:0 dropped:0 overruns:0 frame:0
TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6797 (6.6 KiB) TX bytes:6797 (6.6 KiB)
[root@localhost ~]# vi /etc/init.d/lvsdr //编写集群管理脚本,当然你也可以自己逐条添加
#!/bin/bash
#description:start LVS of Directorserver DR
VIP=192.168.1.200
RIP1=192.168.1.193
RIP2=192.168.1.195
#./etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer DR"
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
echo "1">/proc/sys/net/ipv4/ip_forward
/sbin/ipvadm -C
/sbin/ipvsadm -A -t $VIP:80 -s rr //仍然是轮度算法
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 –g //-g表示采用直接路由模式
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g
/sbin/ipvsadm
;;
stop)
echo "stop LVS of DirectorServer DR"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage:$0{start|stop}"
exit 1
esac
[root@localhost ~]# chmod a+x /etc/init.d/lvsndr //加可执行权限
[root@localhost ~]# /etc/init.d/lvsdr start
start LVS of DirectorServer DR
/etc/init.d/lvsdr: line 13: /sbin/ipvadm: No such file or directory
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.200:http rr
-> 192.168.1.195:http Route 1 0 0
-> 192.168.1.193:http