LVS负载均衡NAT/DR模式搭建、keepalived+LVS配置

LVS 介绍

LVS(Linux Virtual Server)Linux虚拟服务器,主要用于搭建负载均衡集群,LVS属于4层(OSI模型)的负载均衡,而nginx属于7层,相比较来说,LVS这种4层的负载均衡更稳定,能承受更多的请求,而nginx这种7层的负载均衡更加灵活,能实现更多的个性化需求,LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs),LVS有三种常见的模式:NAT、IP Tunnel、DR

LVS 的三种工作模式

1.LVS NAT模式

在这里插入图片描述
这种模式借助iptables的nat表来实现,用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去,rs需要设定网关为分发器的内网ip,用户请求的数据包和返回给用户的数据包全部经过分发器,分发器有一个Hash表,表中会记录连接请求及转发信息,当同一个tcp连接的下一个数据包发送给分发器时,从Hash表中可以直接找到之前的连接记录,并根据记录信息选出相同的rs及端口,发送给相同的rs,在nat模式中,只需要分发器有公网IP即可,但这种模式当rs大于10台时,接收和返回的大量数据包都交给分发器,分发器就会成为整个集群的瓶颈

2.LVS IP Tunnel模式

在这里插入图片描述
IP Tunnel:IP隧道,为了避免分发器出现瓶颈,tun模式将请求与响应分离,分发器只管接收请求,转发给后端的rs,rs将响应的数据直接发送给客户端,这种模式需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip,客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包添加新的包头(新的源IP地址、端口和新的目标IP地址和端口),从而实现将一个目标为调度器的VIP地址的数据包封装,通过隧道转发给后端的rs,这种模式分发器与后端rs都需要有公网IP,rs才能直接将响应数据包发送给客户端

3.LVS DR模式

在这里插入图片描述
DR:直接路由模式,IP Tunnel模式分发器需要与rs创建隧道连接,同样会增加服务器的负担,在DR模式中,同样也是由分发器接收请求,rs直接给客户端返回响应数据,与tun模式不同的是,DR模式中分发器与后端rs必须在同一个内网中, 这种模式也需要有一个公共的IP配置在分发器和所有rs上,也就是VIP,rs向客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是分发器的VIP地址,回应的源地址也依然是该VIP地址,分发器在不修改数据包报文的情况下,将包头的MAC地址修改为rs的MAC地址,通过交换机将数据包发送给同一内网中的rs,这种模式下同样分发器与rs都需要有公网IP

LVS 常用调度算法

不管使用哪种模式,都需要分发器根据各种算法来决定将请求转发给后端的哪台rs

1.轮询:Round Robin,简称rr,分发器按照循环的方式将请求平均的发送给后端的rs

2.加权轮询:Weight Round-Robin,简称wrr,增对轮询的优化,会给每台rs定义对应的权重值,权重值大的rs会比权重值小的rs接收到更多分发器转发的请求

3.最小连接:Least-Connection,简称lc,分发器向每台rs转发请求时,会记录rs的连接数,根据连接数判断所有rs的情况,将最新的请求转发给连接数最少的rs

4.加权最小连接:Weight Least-Connection,简称wlc,增对最小连接的优化,定义每台rs的权重值,分发器将新的请求转发给rs时,会根据权重值判断转发请求给每台rs的比例,分发器可以自动判断rs的情况,动态调整权重值

#以上为4中常用调度算法,除此之外还有基于局部性的最小连接、带复制的基于局部性最小连接、目标地址散列调度、源地址散列调度等

LVS NAT模式搭建

测试环境:准备3台机器,1台分发器(dir)和2台rs

dir内网:192.168.234.110 外网:192.168.111.129
rs1内网:192.168.234.128
rs2内网:192.168.234.130

#两台rs网关需要设置为dir的内网地址,三台机器都关闭firewalld防火墙管理工具,使用iptables工具配置(centos7需要安装iptables工具,centos7以下版本可直接使用iptables)

关闭firewalld:

[root@rs1 ~]# systemctl stop firewalld
[root@rs1 ~]# systemctl disable firewalld

安装iptables:

[root@rs1 ~]# yum -y install iptables

开启iptables:

[root@rs1 ~]# systemctl start iptables
[root@rs1 ~]# systemctl enable iptables

清空iptables默认规则:

[root@rs1 ~]# iptables -F
[root@rs1 ~]# service iptables save

设置rs1与rs2的网关为dir的内网ip:

[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.234.110 0.0.0.0         UG    100    0        0 ens33
192.168.234.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
[roo
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值