LVS-NAT模式
lvs-nat模式
● 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为根据调度算法挑出的RS的RIP和PORT实现转发。
LVS-NAT的体系结构
lvs-nat详情
【从数据报文流向分析】
● lvs-nat主要是在lvs中改变的数据报文头部的目标ip地址[和端口],此处以httpd为例。
● 客户端:
- client访问vip网页(忽略DNS解析,直接以ip地址方式访问)
- 比如:curl vip/index.html
● lvs服务器:
-
1.对外宣称由自己提供web服务,web服务ip为vip
-
2.定义调度策略:工作在netfilter的INPUT(hook function)框架上
- 定义:如果收到数据报文中访问TCP 80 端口时,就采取调度策略
-
3.当收到client的http://vip/index.html 请求报文数据时,访问TCP 80,调度至RS
- lvs-nat模式的实现调度方式是:修改数据报文的目标地址,并且会有状态追踪
-
4.lvs修改了请求报文的目标IP,当RS回复响应报文时,由于状态追踪,了解到这是刚才lvs-nat服务器修改过请求报文目标ip的响应报文,进行转发过程中会将RIP转换为VIP
● 服务器RS:
- 接收到client的请求:curl http://vip/index.html,然后由http构建响应报文回应client。
NAT模式IP包调度过程
lvs-nat特点
●(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
●(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
●(3)支持端口映射,可修改请求报文的目标PORT
●(4)VS必须是Linux系统,RS可以是任意OS系统
lvs-nat的实验
lvs-nat实验拓扑图
lvs-nat实验准备
● 配置linux的网络环境
- 按照拓扑图将对应的主机配置好对应的网卡模式和ip地址
实验规划
● 由实验拓扑图知实验需要5台linux,并将对应的网络作如下配置:
-
hostA
client centos7 cip 仅主机模式:192.168.6.6
默认网关:192.168.6.17 -
hostB
route centos7 :
仅主机ip:192.168.6.17
桥接ip:172.18.4.17 -
hostC
lvs centos7
桥接 vip:172.18.4.27
NAT dip:192.168.38.27
注:默认网关:172.18.4.17
需要指定到达192.168.6.0/24网段的路由信息,因为响应报文经过lvs转发。 -
hostD
rs1 centos7
rs1 NAT rip1:192.168.38.37
默认网关:192.168.38.27 -
hostE
rs2 centos7
rs2 NAT rip2:192.168.38.47
默认网关:192.168.38.27
RS的配置
● 提供web服务,安装httpd,并启动
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# echo RS1:192.168.38.37 > /var/www/html/index.html
[root@RS1 ~]# systemctl start httpd
[root@RS1 ~]# curl 192.168.38.37
RS1:192.168.38.37
[root@RS2 ~]# echo RS2:192.168.38.47 >/var/www/html/index.html
[root@RS2 ~]# systemctl start httpd
[root@RS2 ~]# curl 127.0.0.1
RS2:192.168.38.47
路由器的配置
● 打开路由转发
临时有效:
[root@route ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
永久生效:
[root@route ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@route ~]# sysctl -p
lvs服务器配置
● ①打开路由转发
● 定义lvs调度策略
[root@lvs ~]# yum install ipvsadm -y 安装配置策略工具
[root@lvs ~]# ipvsadm -A -t 172.18.4.27:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.18.4.27:80 -r 192.168.38.37 -m
[root@lvs ~]# ipvsadm -a -t 172.18.4.27:80 -r 192.168.38.47 -m
- 注:lvs需要定义到达192.168.6.0/24网段的路由
client端:
[root@client ~]# while true;do curl 172.18.4.27 ;sleep 1;done
RS1:192.168.38.37
RS2:192.168.38.47
RS1:192.168.38.37
RS2:192.168.38.47