LVS负载均衡(三种工作模式、原理、实验)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: LVS负载均衡(三种工作模式、原理、实验)

一、LVS DR 模式


image.png

工作原理: DR和REAL SERVER都是用同一个IP对外服务。但只有DR对ARP请求进行响应,所有REAL SERVER对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REAL SERVER之间必须在一个广播域,也可以理解为在同一台交换机上。


白话文:客户端发起一个http请求,我要上网,那么这个请求发给DR(调度均衡服务器),DR看这个请求的MAC地址是那个然后发给对应的RS(真实服务器),RS直接把回应发给client。


搭建DR环境:


基础环境:
Centos7.7
DR:
DIP:11.11.11.10 VIP:11.11.11.13
RS1:
RIP:11.11.11.11 VIP:11.11.11.13
RS2:
RIP:11.11.11.12 VIP:11.11.11.13


1、关闭防火墙和SELINUX

[root@d ~]# systemctl stop firewalld
[root@rs1 ~]# systemctl stop firewalld
[root@rs2 ~]# systemctl stop firewalld
[root@d ~]# setenforce 0
[root@rs1 ~]# setenforce 0
[root@rs2 ~]# setenforce 0


2、DR操作


(1)配置VIP和路由转发
[root@d ~]# ifconfig ens32:0 11.11.11.13 broadcast 11.11.11.13 netmask 255.255.255.255 up
[root@d ~]# route add -host 11.11.11.13 dev ens32:0
[root@d ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward=1 #开启路由转发功能
 (2)安装集群管理工具并进行配置
[root@d ~]# yum install -y ipvsadm
[root@d ~]# ipvsadm -A -t 11.11.11.13:80 -s wrr
[root@d ~]# ipvsadm -a -t 11.11.11.13:80 -r 11.11.11.11 -g -w 1
[root@d ~]# ipvsadm -a -t 11.11.11.13:80 -r 11.11.11.12 -g -w 1
-A在服务器列表中新添加一条新的虚拟服务器记录
-t表示为tcp服务
-s使用的调度算法
-a在服务器表中添加一条新的真实主机记录
-r真实服务器地址
-m指定LVS工作模式为NAT模式
-g指定LVS工作模式为直接路由模式(LVS默认的模式)
-w真实服务器的权值


3.RS操作


[root@rs1 ~]# ifconfig lo:0 11.11.11.13 broadcast 11.11.11.13 netmask 255.255.255.255 up
#配置VIP到本地回环网卡lo上,并只广播自己
[root@rs1 ~]# route add -host 11.11.11.13 lo:0
#配置本地回环网卡路由
[root@rs1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
#1只回答目标IP地址是来访网络接口本地地址的ARP查询请求 
[root@rs1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
#2对查询目标使用最适当的本地地址,在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址
[root@rs1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
#1仅在请求的目标IP配置在本地主机的接收到请求报文的接口上,才给予回应
[root@rs1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
#2必须避免将接口信息向非本网络进行通告
[root@rs2 ~]# ifconfig lo:0 11.11.11.13 broadcast 11.11.11.13 netmask 255.255.255.255 up
[root@rs2 ~]# route add -host 11.11.11.13 lo:0
[root@rs2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce


4.RS进行测试


[root@rs1 ~]# yum install -y httpd
[root@rs1 ~]# echo "test" > /var/www/html/index.html && systemctl restart httpd
[root@rs2 ~]# yum install -y httpd
[root@rs2 ~]# echo "test" > /var/www/html/index.html && systemctl restart httpd

image.png

image.png

image.png


DR模式负载均衡完成啦!


2、LVS NAT模式


image.png

实验原理:就是不端的转化dest地址,利用了nat原理(一目了然)

image.png


搭建LVS的NAT模式环境


基础环境: Centos7.7 4台虚拟机 client: CIP:192.168.1.17 lvs: 内网:11.11.11.10 外网:192.168.1.16 RS1:内网:11.11.11.11

RS2: 内网:11.11.11.12 192.168.1.0网段网络为我虚拟机桥接网络,11.11.11.0为仅主机网段


1.关闭防火墙和selinux


[root@d ~]# systemctl stop firewalld
[root@rs1 ~]# systemctl stop firewalld
[root@rs2 ~]# systemctl stop firewalld
[root@client ~]# systemctl stop firewalld
[root@d ~]# setenforce 0
[root@rs1 ~]# setenforce 0
[root@rs2 ~]# setenforce 0
[root@client ~]# setenforce 0

2.lvs服务器配置


[root@d ~]# yum install ipvsadm -y
#设置集群调度算法,(便于验证,此处使用轮询算法):
[root@d ~]# ipvsadm -A -t 11.11.11.10:80 -s rr
设置后端服务器:
[root@d ~]# ipvsadm -a -t 11.11.11.10:80 -r 11.11.11.11  -w 
[root@d ~]# ipvsadm -a -t 11.11.11.10:80 -r 11.11.11.12  -w
查看ipvsadm规则(这些规则没有保存在配置文件,重启失效):
[root@d ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.16:80 rr
  -> 11.11.11.11:80               Masq    1      0          0         
  -> 11.11.11.12:80               Masq    1      0          0 
#sever1收到客户端请求后,得到一个公网的ip,跟目的主机server2和server3不在一个网段
所以如果想要将客户端来的数据包转发给后端服务器,那么必须对这个数据包进行ip转换,再进行数据包转发。
出于安全考虑,Linux系统默认是禁止数据包转发的。配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能.
[root@d ~]# vi /etc/sysctl.conf 
...
net.ipv4.ip_forward = 1
[root@d ~]# systemctl restart network

3.web服务器配置

[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# echo web1 > /var/www/html/index.html
[root@rs1 ~]# systemctl start httpd
[root@rs1 ~]# route add default gw 11.11.11.10
[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         11.11.11.10     0.0.0.0         UG    0      0        0 ens32
11.11.11.0      0.0.0.0         255.255.255.0   U     100    0        0 ens32
[root@rs2 ~]# yum install httpd -y
[root@rs2 ~]# echo web2 > /var/www/html/index.html
[root@rs2 ~]# systemctl start httpd
[root@rs2 ~]# route add default gw 11.11.11.10
[root@rs2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         11.11.11.10     0.0.0.0         UG    0      0        0 ens32
11.11.11.0      0.0.0.0         255.255.255.0   U     100    0        0 ens32

4.client端进行测试


[root@client ~]# curl 192.168.1.16
web1
[root@client ~]# curl 192.168.1.16
web2

LVS的nat模式实验成功啦!


三、VS/TUN模式


②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

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

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

相比于其他两种模式,TUN 模式用的不多


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
26天前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
30天前
|
网络协议 Linux C语言
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
本篇主要介绍了 Intel HDSLB 的基本运行原理和部署配置的方式,希望能够帮助读者们顺利的把 HDSLB-DPVS 项目 “玩” 起来。
155 9
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
|
23天前
|
负载均衡 运维 监控
负载均衡与容错性:集群模式在分布式系统中的应用
本文由小米分享,解释了分布式系统中的集群模式。集群模式是通过组合多个服务器节点,共同提供服务,实现高可用性、负载均衡和扩展性。文章介绍了主控节点的角色及其高可用性策略,如主备模式和选举机制,并以Zookeeper为例详细阐述了其工作机制。集群模式的优势在于高可用性、负载均衡、扩展性和数据一致性,但也面临节点通信、数据一致性、故障检测和管理等挑战。最后,作者鼓励读者讨论和交流相关技术问题。
178 5
|
1月前
|
负载均衡 算法
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的
|
1月前
|
负载均衡 算法 调度
负载均衡原理及算法
负载均衡原理及算法
24 1
|
26天前
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署
|
30天前
|
负载均衡
【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
24 0
|
1月前
|
负载均衡 算法
SpringCloud&Ribbon负载均衡原理与实践
SpringCloud&Ribbon负载均衡原理与实践
27 3
|
1月前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
66 0
|
1月前
|
负载均衡 应用服务中间件 API
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
66 4

热门文章

最新文章