【lvs】lvs-NAT模式和lvs-DR模式

  一、什么是lvs

        LVS(Linux Virtual Server)即Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,现已成为Linux标准内核的一部分。LVS是一种基于Linux内核实现的高可用性、高性能的负载均衡技术,是一款负载均衡软件,能够将来自客户端的请求分发到多台服务器上,再将后端服务器的返回结果提供给用户,从而实现多台服务器的负载均衡,减少用户等待时间,提高整个系统的性能和可用性。

  二、lvs-NAT和lvs-DR模式的区别

  1. NAT模式(网络地址转换)

    • 数据包的源IP和目标IP在转发过程中都会发生变化。
    • 所有进出Real Server的数据包都必须经过负载调度器。
    • Real Server可以与Director处于不同物理网络。
    • 适用于小型到中型规模的负载均衡场景。
  2. DR模式(直接路由)

    • 数据包的源IP和目标IP在转发过程中保持不变。
    • 只有请求数据包需要经过负载调度器,响应数据包直接由Real Server发送给客户端。
    • Real Server必须与Director处于同一局域网。
    • 适用于大型规模的负载均衡场景。

  三、lvs-NAT和lvs-DR模式拓扑图

 1.lvs-NAT拓扑图

     lvs-NAT模式的Real Server可以与Director可以处于不同物理网络。本文中为了简化拓扑图所以将Real Server和Director做在了同一局域网中。Director作为负载均衡器接受来自客户端的请求通过网络地址转换分发到Real Server中。再接受Real Server返回的数据包,将数据包做网络地址转换后发送给客户端。

 

 2.lvs-DR拓扑图

        lvs-DR模式的Director和Real server 必须在同一局域网网络中,因为lvs-DR模式的原理是:通过修改数据包的mac,将数据包通过二层数据链路层转发给rip(具体步骤为:将数据包源 MAC 地址修改为负载均衡器的 MAC 地址,将目标 MAC 地址修改为真实服务器的 MAC 地址。源 IP 地址和目标 IP 地址保持不变(仍然是 CIP 和 VIP) 修改后的数据包通过二层数据链路层发送给真实服务器)

  四、lvs-NAT和lvs-DR模式数据包走向图

  1.lvs-NAT数据包走向

接受客户端请求       

 Director作为负载均衡器接受来自客户端的请求,通过调度算法判断将请求转发给哪个后端服务器

 返回数据给客户端

 Director接受Real Server返回的数据包,将数据包做网络地址转换后发送给客户端

  2.lvs-DR数据包走向

接受客户端请求       

       Director接收来自客户端的请求后,通过修改数据包的mac,将数据包通过二层数据链路层转发给后端服务器Real Server

  返回数据给客户端

       与lvs-NAT模式不同的是,Real Server返回的数据包直接通过路由器返回给客户端,不会经过负载均衡器Director,降低了负载均衡器Director的压力

  五、lvs-NAT部署过程

本文使用的环境如下:
操作系统:CentOS Linux release 7.7.1908 (Core) 
虚拟机使用KVM在linux中创建

第一步、创建虚拟机,搭建环境

 创建五台虚拟机:

客户端IP:192.168.122.1
路由器IP:
网卡1:192.168.122.254
网卡2:10.10.10.254
负载均衡器IP:
网卡1:10.10.10.100
网卡2:172.17.10.254
web1 IP:172.17.10.101
web2 IP:172.17.10.102

第二步、配置Director

开启转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

安装ipvsadm

yum install ipvsadm -y

清空lvs规则

ipvsadm -C

使用ipvsadmin工具配置vip(虚拟ip),调度算法为轮询rr(Round Robin),转发方式为NAT

#-A 表示添加(Add),-t 10.10.10.100:80 指定了虚拟服务的IP地址
ipvsadm -A -t 10.10.10.100:80 -s rr

#-r 后跟real server的地址,-m 表示使用NAT(网络地址转换)模式
ipvsadm -a -t 10.10.10.100:80 -r 172.17.10.101:80 -m

#-r 后跟real server的地址,-m 表示使用NAT(网络地址转换)模式
ipvsadm -a -t 10.10.10.100:80 -r 172.17.10.102:80 -m

查看lvs规则

ipvsadm -Ln

第三步、配置Real Server

将Real Server web1 和 web2的网关指向Director

[root@web1 ~] ip route add default via 172.17.10.254 dev eth0

[root@web2 ~] ip route add default via 172.17.10.254 dev eth0 

第四步、验证负载均衡效果

 可以看到访问虚拟ip(vip)10.10.10.100后,请求被轮询分发到了web1和web2上

 

  六、lvs-DR部署过程

第一步、创建虚拟机,搭建环境

 创建五台虚拟机:

客户端IP:192.168.122.1
路由器IP:
网卡1:192.168.122.254
网卡2:10.10.10.254
负载均衡器IP:10.10.10.100
web1 IP:10.10.10.101
web2 IP:10.10.10.102

第二步、配置Director

 开启转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

 安装ipvsadm

yum install ipvsadm -y

清空lvs规则

ipvsadm -C

使用ipvsadmin工具配置vip(虚拟ip),调度算法为轮询(Round Robin),转发方式为DR

#-A 表示添加(Add),-t 10.10.10.100:80 指定了虚拟服务的IP地址
ipvsadm -A -t 10.10.10.100:80 -s rr

#-r 后跟real server的地址,-m 表示使用DR(直接路由)模式
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.101:80 -g

#-r 后跟real server的地址,-m 表示使用DR(直接路由)模式
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.102:80 -g

查看lvs规则

ipvsadm -Ln

第三步、配置Real Server

1)将Real Server web1 和 web2的网关指向路由器Router 

[root@web1 ~] ip route add default via 10.10.10.254 dev eth0

[root@web2 ~] ip route add default via 10.10.10.254 dev eth0 

 2)给Real Server web1 和 web2添加虚拟ip

[root@web1 ~] ip addr add 10.10.10.100/32 dev lo

[root@web2 ~] ip addr add 10.10.10.100/32 dev lo

3)设置内核参数 

arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。(只响应rip的ARP请求)
arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址(不使用vip对应的mac),而选择发送接口的IP地址(rip对应的mac)。

[root@web1 ~] echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

[root@web1 ~] echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

[root@web2 ~] echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

[root@web2 ~] echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

第四步、验证负载均衡效果

可以看到访问虚拟ip(vip)10.10.10.100后,请求被轮询分发到了web1和web2上

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值