LVS的NAT模式搭建

1. NAT模式原理图

NAT(Network Address Translation)网络地址转换模式
在这里插入图片描述
当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP

PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP

POSTROUTING链通过选路,将数据包发送给Real Server

Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP

Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

2. LVS-NAT模型的特性

RS应该使用私有地址,RS的网关必须指向DIP

DIP和RIP必须在同一个网段内

请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈

支持端口映射

RS可以使用任意操作系统

缺陷:对Director Server压力会比较大,请求和响应都需经过director server

3. 配置NAT模式的LVS

1.在server1上加一块网卡eth1,给该网卡加上外网ip,激活网卡

其中,172.25.254.1 作为内网地址,与真实服务器交流
172.25.8.110 作为对外的地址,接收客户端的请求

[root@server1 ~]# ip addr add 172.25.8.110/24 dev eth1
[root@server1 ~]# ip link set up eth1
[root@server1 ~]# ip addr show

在这里插入图片描述2.在server1添加ipvsadm策略

[root@server1 ~]# ipvsadm -A -t 172.25.8.110:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.8.110:80 -r 172.25.254.2:80 -m
[root@server1 ~]# ipvsadm -a -t 172.25.8.110:80 -r 172.25.254.3:80 -m
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  server1:http rr
  -> server2:http                 Masq    1      0          0         
  -> server3:http                 Masq    1      0          0         
[root@server1 ~]# 

在这里插入图片描述3.在server1开启路由机制

[root@server1 ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
[root@server1 ~]# vim /etc/sysctl.conf 
[root@server1 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@server1 ~]# 

在这里插入图片描述4.在server1加载NAT模块开启服务

[root@server1 ~]# modprobe iptable_nat
[root@server1 ~]# 

5.server2,server3作为后端服务器,需要安装httpd服务,设定网关为调度器的对内ip

[root@server2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.1    0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
[root@server2 ~]# cat /var/www/html/index.html 
i am server2
[root@server2 ~]# 
[root@server3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.1    0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
[root@server3 ~]# cat /var/www/html/index.html 
i am server3
[root@server3 ~]# 

真机测试:

[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$ 

在这里插入图片描述

发布了168 篇原创文章 · 获赞 1 · 访问量 2977

猜你喜欢

转载自blog.csdn.net/yrx420909/article/details/104426112