LVS-NAT配置安装

准备

1. 确认lvs内核组件已经安装

一般来说,常见的linux系统都已经安装了(用的几个操作系统中,只有suse不包含)。

[root@localhost network-scripts]# modprobe -l |grep ip_vs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
[root@localhost network-scripts]#

2. 安装ipvsadm

建议使用yum来安装。当然用ipvsadm的源码包安装也行。
安装完成后,可以执行ipvsadm试一下,看是否安装成功

[root@localhost package]# ipvsadm 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

lvs搭建

1. 组网规划


其中192.168.100.x 为client所在的IP段(记为外网IP)。 192.168.0.x为real server所在的IP段(记为内网IP)
并且从192.168.0.x到192.168.100.x不存在路由。说简单一点,就是无法ping通

2. NAT配置

LVS 节点的配置

1)Tcp配置:

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

2) Ipvsadm配置

[root@linux128 ~]# ipvsadm -A  -t 192.168.100.132:18471 -s rr
[root@linux128 ~]#ipvsadm -a  -t 192.168.100.132:18471 -r 192.168.0.220:18471 -m
[root@linux128 ~]#ipvsadm -a  -t 192.168.100.132:18471 -r 192.168.0.221:18471 -m

Real Server的配置

修改默认网关
[root@hadoop221 ~]# route add default gw 192.168.0.142 dev eth0
[root@hadoop221 ~]# route

分析

因为LVS会修改消息的mac地址,因此我们首先记录一下各个节点IP的mac地址

IP地址 MAC地址
192.168.100.130 00:0C:29:A8:47:D9
192.168.100.132 00:0C:29:79:62:EA
192.168.0.142 00:0C:29:79:62:E0
192.168.0.220 00:0C:29:56:91:D2

以SYN消息分析它的过程,其消息流程如下:
LVS-NAT配置安装_第1张图片

1) 首先客户端192.168.100.130向LVS的外网IP :192.168.100.132发送一个SYN消息
LVS-NAT配置安装_第2张图片

2) LVS收到这个SYN消息后,会将它转发给内网的220

与客户端发送消息相比。有几个明显的变化。
- Destination的ip地址变成了192.168.0.220
- Src与destination的mac地址也变化了。 查一下上面的ip与mac的对照表,可以看出来,source 的mac地址对应提192.168.0.142,而destination mac地址对应的ip为192.168.0.220
从这里可以看出来。LVS在这里将destination的ip与mac地址都修改了。

3) 因为LVS将syn消息的destination的ip与mac地址都做了修改。因此real server 192.168.0.220此时收到SYN消息都被修改后的消息

4)当real server收到SYN消息后,会回一个SYN ACK的消息。此时消息能够正常回到LVS的保证就是我们之前设置的route add default gw 192.168.0.142 dev eth0
我们查看一下220的route表:

[root@hadoop220 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     1      0        0 eth0
default         192.168.0.142   0.0.0.0         UG    0      0        0 eth0

这里说明一下,因为syn消息的source ip没有被修改,假如此时从192.168.0.220到192.168.100.x存在路由,那么syn ack消息将不会走default网关,那会导致client无法正常收到消息。因此一定要保证192.168.0.220到192.168.100.x无法ping通

5) LVS收到消息后,会将之前修改的mac 与IP地址修改回去。 对比一下LVS收到的ACK消息与client收到ACK消息:

你可能感兴趣的:(LVS-NAT配置安装)