LVS之NAT、TUN模式配置

LVS之DR请参考上一篇文章。

NAT模式实验

服务器IP及部署角色如下:

  • node01:192.168.252.10,负载均衡器。
  • node02:192.168.252.11,Real Server,上面部署httpd,对外提供服务。
  • node03:192.168.252.12,Real Server,上面部署httpd,对外提供服务。

部署图如下:

LVS之NAT、TUN模式配置_dr

具体部署步骤如下:

  1. node02、node03分别安装httpd,并在浏览器测试能正常访问页面。
  2. node02、node03分别配置默认网关为node01(lvs负载均衡器的DIP)。
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.252.2   0.0.0.0         UG    100    0        0 ens32
192.168.252.0   0.0.0.0         255.255.255.0   U     100    0        0 ens32
# route del default gw 192.168.252.2
# route add default gw 192.168.252.10
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.252.10  0.0.0.0         UG    0      0        0 ens32
192.168.252.0   0.0.0.0         255.255.255.0   U     100    0        0 ens32

这里只是临时配置,临时生效,要想永久生效,需要修改/etc/sysconfig/network-scripts/ifcfg-ens32中的默认网关。

  1. node01的配置

配置VIP:ifconfig ens32:5 192.168.224.100/24

lvs配置:

# ipvsadm -At 192.168.224.100:80 -s rr
# ipvsadm -at 192.168.224.100:80 -r 192.168.252.11:80 -m -w 1
# ipvsadm -at 192.168.224.100:80 -r 192.168.252.12:80 -m -w 1
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.224.100:80 rr
  -> 192.168.252.11:80            Masq    1      0          0         
  -> 192.168.252.12:80            Masq    1      0          0

centos默认是不开启转发功能,所以需要激活ip转发功能,我测试的时候不需要开启这个配置,先记录到这里吧:

# echo 1 > /proc/sys/net/ipv4/ip_forward

注意/proc/下的文件都是内核虚拟出来的,不能用vi打开,修改后立刻生效,但是都是临时的,要想永久生效,需在/etc/sysctl.conf设置net.ipv4.ip_forward = 1,并重启系统。

TUN模式实验

TUN模式只不过在DR模式的基础至少加了一层隧道而已。

服务器IP及部署角色如下:

  • node01:192.168.252.10,负载均衡器。
  • node02:192.168.252.11,Real Server,上面部署httpd,对外提供服务。
  • node03:192.168.252.12,Real Server,上面部署httpd,对外提供服务。

具体部署步骤如下:

  1. node02、node03分别安装httpd,并在浏览器测试能正常访问页面。
  2. node01、node02、node03分别开启隧道支持modprobe ipip
  3. node02、node03上执行如下脚本:
#!/bin/bash

VIP=192.168.252.100

echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/ens32/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens32/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/ens32/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

ifconfig tunl0 $VIP netmask 255.255.255.255

rp_filter参数:当IP隧道数据包到达Real Server192.168.252.11服务器后,首先进行拆包,发现目标IP为192.168.252.100(配置在tunl0这个网卡上),但是这个数据包是由192.168.252.11ens32这个网卡接收的,那么系统默认认为这是一个不合法的数据包,故而拒绝之,所以要配置rp_filter接收这种包。

  1. node01上执行如下脚本:
#!/bin/bash
VIP=192.168.252.100
RIP1=192.168.252.11
RIP2=192.168.252.12

ipvsadm -C
ifconfig ens32:1 $VIP/24

ipvsadm -A -t $VIP:80 -s rr
ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
ipvsadm -a -t $VIP:80 -r $RIP2:80 -i