NAT模式
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,在返回给客户,完成整个负载调度过程。
优点:
配置及管理简单。Director Server 和 Real Server 群组可以不在一个网段。
缺点:
要求 Director Server必须要有两块网卡 ,Director Server很容易成为整个集群的性能瓶颈(所有数据都经过这里)
Client ->VS(转换IP)->RS->VS(转换IP)->Client
NAT模式通信过程:
-
用户发送请求到达VS,请求的数据报文会先到内核空间的PREROUTING链。
(此时报文的源IP为CIP,目标IP为VIP) -
PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
-
INPUT链上的IPVS规则会比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为RIP,然后将数据包发至POSTROUTING链。
(此时报文的源IP为CIP,目标IP为RIP) -
POSTROUTING链通过选路,将数据包发送给Real Server
RS比对发现目标为自己的IP,开始构建响应报文发回给VS。
(此时报文的源IP为RIP,目标IP为CIP) -
VS在响应客户端前,会将源IP地址改为VIP地址,然后响应客户端。
(此时报文的源IP为VIP,目标IP为CIP)
配置NAT模式的LVS:
调度器server1:1.设置两个不同网段的ip,一个用来接收客户端的请求,另一个作为真实服务器的网关
[root@server1 ~]# ip addr add 172.25.254.100/24 dev eth0 ## 添加ip
[root@server1 ~]# yum install -y ipvsadm
[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
#-A: 添加vip。 -t: tcp协议 。-s: lvs调度算法 rr 轮叫调度
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.40.3:80 -m # 添加真实服务器, # -m 使用nat模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.40.2:80 -m
[root@server1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP server1:http rr
-> 172.25.40.2:http Masq 1 0 0
-> 172.25.40.3:http Masq 1 0 0
开启调度器的内核路由功能
[root@server1 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@server1 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
加载模块
[root@server1 ~]# modprobe iptable_nat
真实服务器:
真实服务器需要安装httpd服务并设置资源,设定网关为调度器的对内ip。
[root@server2 ~]# yum install httpd -y # 安装服务
[root@server2 ~]# vim /var/www/html/index.html # 设定服务器资源页面
[root@server2 ~]# systemctl start httpd #启动服务
[root@server2 ~]# systemctl enable httpd # 设置服务开机自动启动
[root@server2 ~]#vim /etc/sysconfig/network-script/ifcfg-eth0 #添加网关
GATEWAY=172.25.40.1
测试: