对比LVS-IP-TUNL和LVS-DR模式,我们可以发现LVS-DR技术没有IP隧道的额外开销,对集群中真实服务器也没有必须支持IP隧道协议的要求。
拓扑图如下
ip规划:
lvs: eth0 172.168.11.11(同样ip随便找的)
eth0:0 172.168.11.12 (提供服务的ip)
realserver1: eth0 172.168.11.252
lo:0 172.168.11.12 (提供服务的ip)
realserver2: eth0 172.168.11.253
lo:0 172.168.11.12 (提供服务的ip)
可以看出lvs、realserver都只需要一块网卡。
一、ip配置。
lvs:网卡配置。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0C:29:FA:76:ED"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=172.168.11.11
NETMASK=255.255.255.0
同样不需要配置网关。
由于使用的是直接路由模式,需要提供服务ip的mac地址,对于lvs只有eth0网卡提供了mac地址,所以将服务ip配置在eth0上
ifconfig eth0:0 172.168.11.12 netmask 255.255.255.255 up
配置好后的ip
eth0 Link encap:Ethernet HWaddr 00:0C:29:FA:76:ED
inet addr:172.168.11.11 Bcast:172.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefa:76ed/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:316398 errors:0 dropped:0 overruns:0 frame:0
TX packets:732 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26852493 (25.6 MiB) TX bytes:109912 (107.3 KiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:FA:76:ED
inet addr:172.168.11.12 Bcast:172.168.11.12 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
realserver1:
[root@web1 ~]# ifconfig lo:0 172.168.11.12 netmask 255.255.255.255 up
[root@web1 ~]# route add -host 172.168.11.12 dev lo:0
[root@web1 ~]# more lvs.sh
#!/bin/bash
echo '1'>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo '2'>/proc/sys/net/ipv4/conf/lo/arp_announce
echo '1'>/proc/sys/net/ipv4/conf/all/arp_ignore
echo '2'>/proc/sys/net/ipv4/conf/all/arp_announce
[root@web1 ~]# bash lvs.sh
说明这里配置服务ip为什么要配置在lo口上,如果配置ip在eth0上,在交换机内arp广播时,会收到多个响应,比如说这里的 lvs会响应,realserver1也会,如果配置了realserver2,它也会。
有朋友也会问了你上面不是arp_ignore了吗?想想如果我们配置在eth0上在arp_ignore eth0的arp会怎样,完全就是孤立了呀。所以这里配置在回环接口上。
同样realserver2:
[root@web2 ~]# ifconfig lo:0 172.168.11.12 netmask 255.255.255.255 up
[root@web2 ~]# route add -host 172.168.11.12 dev lo:0
[root@web2 ~]# more lvs.sh
#!/bin/bash
echo '1'>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo '2'>/proc/sys/net/ipv4/conf/lo/arp_announce
echo '1'>/proc/sys/net/ipv4/conf/all/arp_ignore
echo '2'>/proc/sys/net/ipv4/conf/all/arp_announce
[root@web2 ~]# bash lvs.sh
配置好后ip和路由
eth0 Link encap:Ethernet HWaddr 00:0C:29:64:A9:7A
inet addr:172.168.11.252 Bcast:172.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe64:a97a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:210275 errors:0 dropped:0 overruns:0 frame:0
TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18918112 (18.0 MiB) TX bytes:5476 (5.3 KiB)
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:1352 errors:0 dropped:0 overruns:0 frame:0
TX packets:1352 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:172354 (168.3 KiB) TX bytes:172354 (168.3 KiB)
lo:0 Link encap:Local Loopback
inet addr:172.168.11.12 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:16436 Metric:1
[root@web1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.168.11.12 0.0.0.0 255.255.255.255 UH 0 0 0 lo
172.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
二、配置lvs转发。
[root@LVS ~]# more ipvs.sh
#!/bin/bash
ipvsadm -C
ipvsadm -At 172.168.11.12:80 -s rr
ipvsadm -at 172.168.11.12:80 -r 172.168.11.253:80 -g #参数可产考man ipvsadm
ipvsadm -at 172.168.11.12:80 -r 172.168.11.252:80 -g
ipvsadm -L -n
[root@LVS ~]# bash -x ipvs.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.168.11.12:80 rr
-> 172.168.11.252:80 Route 1 0 0
-> 172.168.11.253:80 Route 1 0 0
三、测试lvs。
如前一篇帖子一样需要配置windows ip和lvs在同一个网段。不配置网关!
测试结果如下图
如果测试出现问题,请先在windows上测试联通情况。保证路由正常,查看两台realserver的路由情况。如有其它问题欢迎留言。