马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.常见的负载均衡服务
负载均衡服务是分布式体系中用于分配网络流量和哀求的关键组件,它可以资助进步应用步调的可用性、可扩展性和相应速率。以下是一些常用的负载均衡服务:
- Nginx:一个高性能的Web服务器和反向署理,广泛用于实现HTTP和HTTPS负载均衡。
- HAProxy:一个专注于提供高可用性和负载均衡的开源软件,特别擅优点理高并发的TCP和HTTP哀求。
- LVS (Linux Virtual Server):一个基于Linux内核的负载均衡办理方案,工作在网络的第四层,提供高性能和高可用性。
- F5 BIG-IP:一款市场占据率较高的硬件负载均衡器,提供SSL加速、TCP优化、HTTP压缩、防火墙等特性。
- A10 Networks:提供一系列硬件负载均衡器,支持多种负载均衡算法,具有SSL加速、TCP优化、HTTP压缩等功能。
- Radware Alteon:一款硬件负载均衡器,提供SSL加速、TCP优化、HTTP压缩、防火墙等特性。
- MetalLB:专为裸机Kubernetes集群计划的负载均衡器,支持BGP和ARP协议。
- Traefik:一个今世化的HTTP反向署理和负载均衡器,支持动态设置,与Docker、Kubernetes等容器平台集成良好。
- DNS负载均衡:通过DNS服务器将域名剖析为多个IP所在,将哀求分发到差异的服务器上,实现负载均衡。
- 云服务商提供的负载均衡服务:如AWS Elastic Load Balancing、Azure Load Balancer、Google Cloud Load Balancing等,它们提供了易于利用和管理的负载均衡办理方案。
2.Nginx
2.1.Nginx负载均衡概述
Nginx 通过反向署理的方式实现负载均衡。反向署理是指客户端不直接访问后端服务器,而是通过署理服务器来转发哀求。Nginx 作为署理服务器,根据设置文件中界说的规则,将客户端的哀求分发到差异的后端服务器上,再将处理惩罚结果返回给客户端。
Nginx 的核心在于其高效的哀求处理惩罚本领和机动的设置方式。它采取了多历程+异步非壅闭IO变乱模子,可以大概同时处理惩罚成千上万个哀求。别的,Nginx 还支持多种负载均衡计谋,以满意差异场景下的需求。
2.2.Nginx 负载均衡计谋
Nginx 支持多种负载均衡计谋,以下是一些常用的计谋:
轮询(Round Robin)
默认计谋:按照服务器列表的序次依次分发哀求,假如后端服务器宕机,则主动剔除该服务器。实用于后端服务器性能相近的环境。
特点:简朴、易用,但负载分配大概不均衡。
权重(Weight)
自界说计谋:根据服务器的权重值来分配哀求的比例,权重越高,处理惩罚的哀求越多。实用于后端服务器性能不均衡的环境。
设置示例:
- [/code] upstream backend { server backend1.example.com weight=1; server backend2.example.com weight=2; }
- [b]IP[/b][b] 哈希(IP Hash)[/b]
- 会话保持计谋:根据客户端的IP所在举行哈希盘算,将同一个客户端的哀求分发到同一个后端服务器上。实用于须要维持会话的场景,如基于session的Web应用。
- 设置示例:
- [code]
复制代码 upstream backend { ip_hash; server 192.168.1.100; server 192.168.1.200; }
最少毗连数(Least Connections)
智能分配计谋:将哀求分配给当前毗连数最少的服务器。这种计谋可以进一步进步体系的负载均衡本领,淘汰服务器的过载环境。但Nginx自己不直接支持此计谋,通常须要借助第三方模块或自界说脚本实现。
第三方计谋
Fair:根据后端服务器的相应时间来分配哀求,相应时间短的优先分配。Nginx自己不支持此计谋,须要安装第三方模块(如nginx-module-vts)。
URL 哈希(URL Hash):按访问URL的hash结果举行分配哀求,使每个URL定向到同一个后端服务器。这种计谋实用于缓存服务器集群,可以进步缓存的掷中率。Nginx自己不支持此计谋,须要安装相应的hash软件包。
3.HAProxy
3.1.ha-proxy概述
ha-proxy是一款高性能的负载均衡软件。由于其专注于负载均衡这一件变乱,因此与nginx比起来在负载均衡这件变乱上做更好,更专业。
软件:haproxy---告急是做负载均衡的7层,也可以做4层负载均衡
apache也可以做7层负载均衡,但是很贫苦。现实工作中没有人用。
负载均衡是通过OSI协议对应的
7层负载均衡:用的7层http协议,
4层负载均衡:用的是tcp协议加端标语做的负载均衡
3.2.ha-proxy的特点
ha-proxy 作为如今盛行的负载均衡软件,必须有其出色的一面。下面先容一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。
- 支持tcp/http两种协议层的负载均衡,使得其负载均衡功能非常丰富。
- 支持8种左右的负载均衡算法,尤其是在http模式时,有很多非常着实的负载均衡算法,实用各种需求。
- 性能非常良好,基于单历程处理惩罚模式(和Nginx雷同)让其性能良好。
- 拥有一个功能出色的监控
页面,及时相识体系的当前状态。
- 功能强盛的ACL支持,给用户极大的方便。
3.3.haproxy算法:
1.roundrobin
轮询,在服务器的处理惩罚时间保持匀称分布时,这是最均衡,最公平的算法.此算法是动态的,这表现其权重可以在运行时举行调解.
2.static-rr
基于权重举行轮询,与roundrobin雷同,但是为静态方法,在运行时调解其服务器权重不访问效.不外,其在后端服务器毗连数上没有限定
3.leastconn
新的毗连哀求被派发至具有最少毗连数目的后端服务器。
4.LVS
4.1.LVS负载均衡四种工作模式
- LVS/NAT:网络所在转换模式,进站/出站的数据流量经太过发器/负载均衡器(IP负载均衡,他修改的是IP所在) --利用三层功能
- LVS/DR:直接路由模式,只有进站的数据流量经太过发器/负载均衡器(数据链路层负载均衡,由于他修改的是目的mac所在)--利用二层功能mac所在
- LVS/TUN: 隧道模式,只有进站的数据流量经太过发器/负载均衡器
- LVS/full-nat:双向转换,通过哀求报文的源所在为DIP,目的为RIP来实现转发:对于相应报文而言,修改源所在为VIP,目的所在为CIP来实现转发
4.2.LVS四种工作模式原理,以及优缺点比力
4.2.1、NAT模式(LVS-NAT)
原理:就是把客户端发来的数据包的IP头的目的所在,在负载均衡器上换成此中一台RS的IP所在,转发至此RS来处理惩罚,RS处理惩罚完成后把数据交给颠末负载均衡器,负载均衡器再把数据包的源IP所在改为自己的VIP,将目的所在改为客户端IP所在即可。期间,无论是进来的流量,还是出去的流量,都必须颠末负载均衡器。
优点:集群中的物理服务器可以利用任何支持TCP/IP操纵体系,只有负载均衡器须要一个合法的IP所在。
缺点:扩展性有限。当服务器节点(寻常PC服务器)增长过多时,负载均衡器将成为整个体系的瓶颈,由于全部的哀求包和应答包的流向都颠末负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速率就会变慢!
4.2.2、直接路由(Direct Routing)模式(LVS-DR)
原理:负载均衡器和RS都利用同一个IP对外服务。但只有DB对ARP哀求举行相应,全部RS对自己这个IP的ARP哀求保持静默。也就是说,网关会把对这个服务IP的请责备部定向给DB,而DB收到数据包后根据调理算法,找出对应的RS,把目的MAC所在改为RS的MAC(由于IP划一)并将哀求分发给这台RS。这时RS收到这个数据包,处理惩罚完成之后,由于IP划一,可以直接将数据返给客户,则即是直接从客户端收到这个数据包无异,处理惩罚后直接返回给客户端。
优点:和TUN(隧道模式)一样,负载均衡器也只是分发哀求,应答包通过单独的路由方法返回给客户端。与LVS-TUN相比,LVS-DR这种实现方式不须要隧道布局,因此可以利用大多数操纵体系做为物理服务器。
缺点:(不能说缺点,只能说是不敷)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
4.2.3、IP隧道(Tunnel)模式(LVS-TUN)
原理:互联网上的大多Internet服务的哀求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理惩罚后,直接返回给客户端,不须要再颠末负载均衡器。留意,由于RS须要对负载均衡器发过来的数据包举行还原,以是说必须支持IPTUNNEL协议。以是,在RS的内核中,必须编译支持IPTUNNEL这个选项
优点:负载均衡器只负责将哀求包分发给后端节点服务器,而RS将应答包直接发给用户。以是,淘汰了负载均衡器的大量数据活动,负载均衡器不再是体系的瓶颈,就能处理惩罚海量的哀求量,这种方式,一台负载均衡器可以大概为很多RS举行分发。而且跑在公网上就能举行差异地域的分发。
缺点:隧道模式的RS节点须要合法IP,这种方式须要全部的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器大概只范围在部分Linux体系上。
4.2.4、FULL-NAT模式(双向转换模式)
原理:客户端对VIP发起哀求,Director接过哀求发现是哀求后端服务。Direcrot对哀求报文做full-nat,把源ip改为Dip,把目的ip转换为恣意后端RS的rip,然后发以后端,rs接到哀求后,举行相应,相应源ip为Rip目的ip还是DIP,又内部路由路由到Director,Director接到相应报文,举行full-nat。将源所在为VIP,目的所在改为CIP
哀求利用DNAT,相应利用SNAT
lvs-fullnat(双向转换)
通过哀求报文的源所在为DIP,目的为RIP来实现转发:对于相应报文而言,修改源所在为VIP,目的所在为CIP来实现转发:
5.haproxy负载均衡搭建流程
在Ubuntu上摆设HAProxy,你可以按照以下步调举行操纵:
5.1.安装HAProxy
打开终端,运行以下下令来安装HAProxy:
- [/code] sudo apt update sudo apt install haproxy
- [size=3]5.2.设置HAProxy[/size]
- HAProxy的告急设置文件是 /etc/haproxy/haproxy.cfg。你可以利用文本编辑器打开并编辑此文件:
- [code]
复制代码 vim /etc/haproxy/haproxy.cfg
在设置文件中,你须要界说后端服务器和监听器。以下是一个简朴的示例设置,将HAProxy设置为负载均衡HTTP哀求到两个后端Web服务器:
- [/code] global log /dev/log local0 # 设置日记记载,利用本地 syslog 的 local0 办法 log /dev/log local1 notice # 设置另一个日记记载级别为 notice,利用 local1 办法 maxconn 4096 # 界说最大并发毗连数为 4096 user haproxy # 设置 HAProxy 运行的用户为 haproxy group haproxy # 设置 HAProxy 运行的组为 haproxy defaults log global # 应用全局日记设置 mode http # 设置工作模式为 HTTP option httplog # 启用 HTTP 日记格式 option dontlognull # 不记载空的哀求 timeout connect 5000 # 毗连超时设置为 5 秒 timeout client 50000 # 客户端超时设置为 50 秒 timeout server 50000 # 服务器超时设置为 50 秒 frontend http-in bind *:80 # 监听全部接口的 80 端口举行 HTTP 哀求 default_backend servers # 将哀求转发到名为 'servers' 的后端 backend servers balance roundrobin # 采取轮询方式对后端服务器举行负载均衡 server web1 192.168.5.101:80 check # 界说第一个后端服务器,启用康健查抄 server web2 192.168.5.102:80 check # 界说第二个后端服务器,启用康健查抄
- 在这个示例中,我们界说了两个后端服务器(web1和 web2),它们的IP所在和端口是示例值,你须要更换为现实的后端服务器信息。
- 查抄设置
- 在编辑完成设置文件后,运行以下下令查抄设置文件是否有语法错误:
- [code]
复制代码 sudo haproxy -c -f /etc/haproxy/haproxy.cfg
假如没有出现错误消息,分析设置文件有用。
重启HAProxy:
重新启动HAProxy以使设置收效:
- [/code] sudo systemctl restart haproxy
- 启用主动启动(可选):
- 假如你盼望HAProxy在体系启动时主动启动,可以运行以下下令:
- [code]
复制代码 sudo systemctl enable haproxy
5.3.测试
这里我们用两台假造机分别摆设nginx web页面
分别是192.168.5.101和192.168.5.102
我们访问haproxy的web页面 端口默认80
点击革新 我们设置的计谋是轮循
可以望见页面在111和222中切换
haproxy设置文件详解更新在设置文件模版
|