一、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.70.1(内网) eth1:172.25.254.100 (外网)
server2: eth0 172.25.70.2
server3: eth0 172.25.70.3
1、server1作为实现负载均衡的调度器
网络设置:
2、在server1添加ipvsadm策略
ipvsadm -A -t 172.25.254.100:80 -s wrr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.70.2 -m -w 1
ipvsadm -a -t 172.25.254.100:80 -r 172.25.70.3 -m -w 1
ipvsadm -l
/etc/init.d/ipvsadm save
3、在server1开启路由机制
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
4、在server1加载NAT模块开启服务
modprobe iptable_nat #注:如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超
时现象
/etc/init.d/ipvsadm start #开启服务
5、server2作为后端服务器
route add -net 0.0.0.0 gw 172.25.70.1
ip addr show
route -n
/etc/init.d/httpd start #开启httpd服务
6、server3作为后端服务器
route add -net 0.0.0.0 gw 172.25.70.1
ip addr show
route -n
/etc/init.d/httpd start
测试:
用与外网ip 172.25.254.100相同的网络位的客户端测试:
curl 172.25.254.100
LVS的NAT模式的负载均衡成功实现。