负载均衡之LVS(二)


前言

软件负载均衡设备:

  • LVS(四层路由设备)根据用户请求的IP与端口号,实现将用户的请求分发至一个客户端不同的主机
  • nginx:要功能是针对http,smtp,pop3,imap等协议实现负载均衡,可实现四七层负载。
  • HAproxy:主要功能是针对http协议实现负载均衡,也可以实现tcp(mysql,smtp)等协议的负载均衡

对比:

软件每秒的并发量CPU占用结论
LVS(DR)1.6 w25%综合性能最好,配置复杂
HAproxy2.3 w95%转发快,占用CPU高,配置简单
nginx2 w80%转发比haproxy低,CPU占用也低

一、LVS工作模式

1、NAT模式(<20台web服务器) ★★★

在这里插入图片描述

  1. 客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP 。目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
  2. 负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
  3. 报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返给LVS。
  4. 然后lvs将此报文的源地址修改为本机并发送给客户端。

  注意:

   在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端

  缺点:

   director很可能成为系统性能瓶颈,所有的请求director都需要处理应答

2、DR直接路由模式(100+台web服务器) ★★★

在这里插入图片描述

  1. 客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
  2. 负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。
  3. RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

 特点:

  • 集群节点和director必须在一个物理网络内
  • RIP可以使用公网地址或私有地址
  • director仅处理入站请求,director服务器的压力比较小
  • 集群节点网关不指向director,故出站不经过director
  • 不支持端口映射
  • 大多数操作系统可以作为realserver,要支持隔离ARP广播

 ARP广播:

 通常,DR模式需要在Real-server上配置VIP,配置的方式为:

ifconfig lo:0 VIP netmask 255.255.255.255 设置广播地址就是自己 ARP广播域内就他自己

3、TUN-IP隧道模式(后台web服务器100台左右)

在这里插入图片描述

  1. 客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
  2. 负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
  3. RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

 优点:

 负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

  缺点:

 隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上

4、FULL-NAT

在这里插入图片描述


解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可以做到多个LVS对应多个RS,解决水平扩容的问题。后端的web服务器也可以是外网上的任意服务器。

5、模式对比

LVS/NATLVS/TUNLVS/DR
OS任意多数多数(要支持non-arp)
网络私有网络局域网/广域网局域网
web服务器数量10~20100左右大于100
服务器网关负载均衡服务器路由路由
效率一般最高

二、LVS-DR模式

环境:

DR: 192.168.93.136

web1: 192.168.93.137

web2: 192.168.93.138

配置:

  1. DR端网卡添加VIP (vip要和rip要绑定在一起)
ifconfig ens33:0 192.168.93.222 broadcast 192.168.93.255 netmask 255.255.255.0 up

0:子接口 无数个
broadcast:广播地址,为网段255
netmask:子网掩码
up:开启
  1. 设置路由(因为服务器不是路由器 只要进行数据包转发 不要求转发重定向 所以关闭该功能)
vim /etc/sysctl.conf

net.ipv4.ip_forward = 1     # 开启路由转发功能

net.ipv4.conf.all.send_redirects = 0   # 关闭重定向

net.ipv4.conf.ens32.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0
  1. LVS设置路由条目
yum -y install ipvsadm

ipvsadm -C      # 清除虚拟主机表

ipvsadm -A -t 192.168.93.222:80 -s rr # 设置vip调度策略

 调度策略:

  • Fixed Scheduling Method 静态调服方法

    RR 轮询:
      调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

    WRR 加权轮询:
      调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

  • Dynamic Scheduling Method 动态调服方法

    LC 最少连接:
      调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

    WLC 加权最少连接:
      在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

ipvsadm -a -t 192.168.93.222:80 -r 192.168.93.137:80 -g

ipvsadm -a -t 192.168.93.222:80 -r 192.168.93.138:80 -g

  -A 添加virtual server
  
  -t  指定使用tcp协议
  
  -s 指定调度策略为rr
  
  -a 添加realserver
  
  -r 指定realserver是谁
  
  -g    LVS类型:
  
    -g:Gateway,DR(默认使用的类型)
  
    -i:ipip,TUN
  
    -m:masquerade(地址伪装),NAT
  
ipvsadm-save >/etc/sysconfig/ipvsadm       # 配置生效

systemctl enable ipvsadm

  1. 在两个web服务器部署nginx 并修改主页 为了更直观看出实验效果
yum -y install nginx

echo "<h1>137<h1>" >/usr/share/nginx/html/index.html

sed -ri /^SELINUX=/cSELINUX=disabled /etc/selinux/config && setenforce 0

systemctl stop firewalld && systemctl disable firewalld
  1. 配置两个web服务器的lo网卡设置子网掩码为32位vip
web1: ifconfig lo:0 192.168.93.222/32

web2: ifconfig lo:0 192.168.93.222/32
  1. 配置两个web服务器内核参数、code
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore    # 忽略arp响应

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce   # 让vip发包出去

arp设置:

arp_announce : INTEGER ,默认为0
0 - (默认) 在任意网络接口上的任何本地地址
1 - 尽量避免不在该网络接口子网段的本地地址. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送

arp_ignore : INTEGER , 默认为0
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应

  1. 浏览器访问 192.168.93.222
curl 192.168.93.222

三、LVS-NAT模式

环境

web1: 192.168.93.137

web2: 192.168.93.138

client: 10.18.47.139

DR: 网卡1: 10.18.47.194(桥接模式)

    网卡2: 192.168.93.141(NAT模式)
  1. web1 web2 配置nginx服务(参考DR案例部署)

  2. 路由配置

client:  route add -net 192.168.93.0/24 gw 10.18.47.194

web1:  route add -net 10.18.47.0/24 gw 192.168.93.141

web2:  route add -net 10.18.47.0/24 gw 192.168.93.141
  1. lvs配置
echo 1 >/proc/sys/ipv4/ip_forward

yum -y install ipvsadm

ipvsadm -A -t 10.18.47.194:80 -s rr       # 调度方法轮询

ipvsadm -a -t 10.18.47.194:80 -r 192.168.93.137:80 -m   # -m NAT模式

ipvsadm -a -t 10.18.47.194:80 -r 192.168.93.138:80 -m
  1. client端测试
curl 10.18.47.194

四、 常用命令

1、虚拟服务管理

  • 添加一个虚拟服务 192.168.93.223:80,使用轮询算法
ipvsadm -A -t 192.168.93.223:80 -s rr
  • 修改虚拟服务的算法为加权轮询
ipvsadm -E -t 192.168.93.223:80 -s wrr
  • 删除虚拟服务
ipvsadm -D -t 192.168.93.222:80
  • 清除虚拟服务
ipvsadm -C

2、真实服务管理

  • 添加一个真实服务器 192.168.93.139,使用DR模式,权重2
ipvsadm -a -t 192.168.93.222:80 -r 192.168.93.139 -g -w 2
  • 增加真实服务器的权重
ipvsadm -a -t 192.168.93.222:80 -r 192.168.93.139 -g -w 5
  • 修改真实服务器的权重
ipvsadm -e -t 192.168.93.222:80 -r 192.168.93.139 -g -w 5
  • 删除真实服务器
ipvsadm -d -t 192.168.93.222:80 -r 192.168.93.139

3、查看统计

  • 查看当前配置的虚拟服务和各个RS的权重
ipvsadm -Ln
  • 查看转发状态
ipvsadm -lnc
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷学技术的梁胖胖yo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值