Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

一、lvs-nat模式原理

LVS的转发主要通过修改IP地址 (NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。

NAT模式: 网络地址转换
NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

二、LVS—NAT模型的特性

RS应该使用私有地址,RS的网关必须指向DIP 
DIP和RIP必须在同一个网段内, 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈 
支持端口映射 
RS可以使用任意操作系统 

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

三、iptables之四表五链(理解数据包的流向)

四表:
	filter表——过滤数据包 
	Nat表——用于网络地址转换(IP、端口) 
	Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS 
	Raw表——决定数据包是否被状态跟踪机制处理 
五链:
	INPUT链——进来的数据包应用此规则链中的策略 
	OUTPUT链——外出的数据包应用此规则链中的策略 
	FORWARD链——转发数据包时应用此规则链中的策略 
	PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理) 
	POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据 包出来的时侯都先由这个链处理)

四、lvs-nat模式实现负载均衡的配置

环境:

server1: eth0 172.25.75.1(内网) eth1:172.25.254.100 (外网)
server2: eth0 172.25.75.2
server3: eth0 172.25.75.3

1、server1作为实现负载均衡的调度器

网络设置:
Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

2、在server1添加ipvsadm策略

ipvsadm -A -t 172.25.254.100:80 -s wrr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.75.2 -m -w 1
ipvsadm -a -t 172.25.254.100:80 -r 172.25.75.3 -m -w 1
ipvsadm -l
/etc/init.d/ipvsadm save

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

3、在server1开启路由机制

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡
Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

4、在server1加载NAT模块开启服务

modprobe iptable_nat 		#注:如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超
时现象
/etc/init.d/ipvsadm start  #开启服务

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

5、server2作为后端服务器

route add -net 0.0.0.0 gw 172.25.75.1
ip addr show
route -n

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

/etc/init.d/httpd start		#开启httpd服务

6、server3作为后端服务器

route add -net 0.0.0.0 gw 172.25.75.1
ip addr show
route -n
/etc/init.d/httpd start

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡

测试:

用与外网ip 172.25.254.100相同的网络位的客户端测试:

curl 172.25.254.100

Linux运维之LVS使用NAT(路由转发)模式实现负载均衡
Linux运维之LVS使用NAT(路由转发)模式实现负载均衡
Linux运维之LVS使用NAT(路由转发)模式实现负载均衡
成功使用LVS实现负载均衡的NAT(路由转发)模式!!!