LVS的nat和tun模式

一、NAT模式
NAT的原理:
就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
在之前配置的DR模式下接着操作,详情请参考上一篇博客< LVS负载均衡的DR模式配置及高可用 >,地址:https://mp.csdn.net/mdeditor/8271589

NAT模式的特性
1)RS应该使用私有地址;
2)RS的网关的必须指向DIP;
3)RIP和DIP必须在同一网段内;
4)请求和响应的报文都得经过Director;在高负载场景中,Director很可能成为系统性能瓶颈;
5)支持端口映射;
6)RS可以使用任意支持集群服务的OS;

配置搭建
server1上:
1)清除之前的规则(关闭keepalived服务)
这里写图片描述
2)打开内部路由设置

[root@server1 ~]# vim /etc/sysctl.conf 

这里写图片描述
3)添加ipvsadm规则(最好添加两块网卡,eth0负责和外网通信,eth1负责和RS通信)

[root@server1 ~]# ipvsadm -A -t 172.25.96.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.96.100:80 -r 172.25.96.2:80 -m
[root@server1 ~]# ipvsadm -a -t 172.25.96.100:80 -r 172.25.96.3:80 -m
[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.96.100:80 rr
  -> 172.25.96.2:80               Masq    1      0          0         
  -> 172.25.96.3:80               Masq    1      0          0         
[root@server1 ~]# 

4)导入net模块,否则在测试的时候会出现访问一次后,在次访问会出现超时情况(这里在第一次测试的时候,由于没有导入net模块,访问出现了问题,查找资料后加入net模块后测试正常)

server2和server3上:
只需要修改RS的网关指向即可,其他不用配置。

[root@server2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

这里写图片描述

[root@server3 ~]# echo 'GATEWAY=172.25.96.1' >> /etc/sysconfig/network-scripts/ifcfg-eth0 

这里写图片描述

测试:
在物理机上测试
这里写图片描述
server1上

[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.96.100:http rr
  -> 172.25.96.2:http             Masq    1      0          2         
  -> 172.25.96.3:http             Masq    1      0          2      

二、TUN隧道模式
TUN模式的原理:
首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。

TUN模式的特性
1)RIP、DIP、VIP都得是公网地址;
2)RS的网关不会指向也不可能指向DIP;
3)请求报文经过DR,但响应报文一定不经过DR;
4)不支持端口映射;
5)RS的OS必须得支持隧道功能;

配置搭建
server1上
1)清除原先的规则,设置VIP,添加规则,启动http服务。
这里写图片描述

[root@server1 ~]# /etc/init.d/httpd start

这里写图片描述
2)禁用rp_filter内核以及打开内部路由

[root@server1 ~]# vim /etc/sysctl.conf 

这里写图片描述
这里写图片描述

server2上
1)安装arptables_jf
因为设置172.25.96.100/24作为vip,不可以和外部通信,所以设用arptables将其的访问全部DROP,出去的包全部转化为本机的ip

[root@server2 ~]# arptables -A IN -d 172.25.96.100 -j DROP
[root@server2 ~]# arptables -A OUT -d 172.25.96.100 -j mangle --mangle-ip-s 172.25.96.2
[root@server2 ~]# arptables -L

这里写图片描述
保存规则
这里写图片描述
2)添加隧道tunl

[root@server2 ~]# ifconfig tunl0 172.25.96.100 netmask 255.255.255.255 up
[root@server2 ~]# ifconfig 

这里写图片描述
3)添加路由接口,确保从隧道进来的包由隧道出去

[root@server2 ~]# route add -host 172.25.96.100 dev tunl0
[root@server2 ~]# route -n

这里写图片描述
server3的设置和server2相同,这里不在演示

测试:
这里写图片描述
server1上的查看规则:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/oikinkl/article/details/82734981
今日推荐