lvs模式之NAT模式和TUN隧道模式实现负载均衡

一、NAT模式的数据走向

client–>vs–>rs–>vs–>clent(原路返回)

用户请求为客户端IP到调度器的虚拟IP,(CIP-VIP)—->LVS调度DIRECTOR,
在此处调度器会将报文再次封装一个RS的IP头,即此时的数据包是((CIPVIP)+RIP),
调度器将再次封装后的数据发到RS,—>用户请求到达RSRS解包数据相应处理再发回调度器,由调度器返回客户端。此阶段RS也会在本地LO回环
接口上绑定VIP别名并抑制ARP相应,因此RS发送到调度器DIRECTOR的数据包是VIP-CIP,不会是RIP-CIP。
NAT模式下,RS响应后的数据包封装成(VIP-CIP),为什么调度器能收到?
是因为NAT模式下,调度器IP必须是RS的网关,RS响应后的数据包必须通过调度器返回客户端。
该模式调度器负载较大,一般不用。

二、NAT负载均衡配置

server1:

1、server1添加一块网卡,为双网卡

激活网卡、添加外网IP
ip link set up eth1
ip addr add 172.25.254.161/24 dev eth1
ip addr

这里写图片描述

2、修改内部路由设置

打开ip转换功能
sever1收到客户端请求后,得到一个公网的ip,跟目的主机server2和server3不在一个网段,所以如果想要将客户端来的数据包转发给后端服务器,那么必须对这个数据包进行ip转换,再进行数据包转发。出于安全考虑,Linux系统默认是禁止数据包转发的。配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能.

vim /etc/sysctl.conf 
  7 net.ipv4.ip_forward = 1
sysctl -p

这里写图片描述

3、添加ipvsadm策略

[root@server1 keepalived]# ipvsadm -A -t 172.25.254.161:80 -s rr
[root@server1 keepalived]# ipvsadm -a -t 172.25.254.161:80 -r 172.25.61.2:80 -m
[root@server1 keepalived]# ipvsadm -a -t 172.25.254.161:80 -r 172.25.61.3:80 -m
[root@server1 keepalived]# 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.254.161:80 rr
  -> 172.25.61.2:80               Masq    1      0          0         
  -> 172.25.61.3:80               Masq    1      0          0       

server2、server3:

1、打开httpd服务并设置默认发布文件

/etc/init.d/httpd start

2、修改网络配置,配置RS的网关指向VS

因为NAT模式下数据包的走向是原路返回,要带着返回的数据包经过调度器回到客户端

route add default gw 172.25.61.1     ##临时设置,开机取消

物理机检测:轮循

这里写图片描述

三、TUN隧道模式负载均衡配置

server1:

1、取消调用eth1网卡

ip addr del 172.25.254.161/24 dev eth1
ip link set down eth1

2、添加tun隧道IP

modprobe ipip              ##添加隧道
ip link set up tunl0       ##激活隧道
ip addr add 172.25.61.200/24 dev tunl0   ##添加VIP

这里写图片描述

3、添加ipvsadm规则

[root@server1 ~]# ipvsadm -A -t 172.25.61.200:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.61.200:80 -r 172.25.61.2:80 -i
[root@server1 ~]# ipvsadm -a -t 172.25.61.200:80 -r 172.25.61.3:80 -i
[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.61.200:80 rr
  -> 172.25.61.2:80               Tunnel  1      0          0         
  -> 172.25.61.3:80               Tunnel  1      0          0   

4、修改内部路由设置

vim /etc/sysctl.conf
  7 net.ipv4.ip_forward = 1
 10 net.ipv4.conf.default.rp_filter = 0
 sysctl -p

这里写图片描述

server2、server3:

1、添加tun隧道IP

modprobe ipip
ip link set up tunl0
ip addr add 172.25.61.200/24 dev tunl0

2、设置IP禁用

因为在一个网内,如果三台服务器有着相同的ip,那么会发生冲突,那么我们可以利用arptables将servere2和server3的ip端口对外隐藏。

添加DROP策略
/etc/init.d/arptables_jf start
arptables -A IN -d 172.25.61.200 -j DROP
临时修改内部路由参数
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
[root@server3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.25.61.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.25.61.0     0.0.0.0         255.255.255.0   U     0      0        0 tunl0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0

3、开启httpd服务

/etc/init.d/httpd start

物理机检测:

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值