linux LVS-DR 实践

       对比LVS-IP-TUNL和LVS-DR模式,我们可以发现LVS-DR技术没有IP隧道的额外开销,对集群中真实服务器也没有必须支持IP隧道协议的要求。

       拓扑图如下

115818370.png


   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在同一个网段。不配置网关!

测试结果如下图

140832427.png

140849807.png

如果测试出现问题,请先在windows上测试联通情况。保证路由正常,查看两台realserver的路由情况。如有其它问题欢迎留言。


你可能感兴趣的:(linux,LVS,实战,DR)