电子商务网站建设和维护,成都广告公司联系方式电话,第三方网站建设平台,什么行业愿意做网站1.常见的负载均衡服务
负载均衡服务是分布式系统中用于分配网络流量和请求的关键组件#xff0c;它可以帮助提高应用程序的可用性、可扩展性和响应速度。以下是一些常用的负载均衡服务#xff1a; Nginx#xff1a;一个高性能的Web服务器和反向代理#xff0c;广泛用于实现…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
自定义策略根据服务器的权重值来分配请求的比例权重越高处理的请求越多。适用于后端服务器性能不均衡的情况。
配置示例 upstream backend { server backend1.example.com weight1; server backend2.example.com weight2; }
IP 哈希IP Hash
会话保持策略根据客户端的IP地址进行哈希计算将同一个客户端的请求分发到同一个后端服务器上。适用于需要维持会话的场景如基于session的Web应用。
配置示例 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相对LVSNginx等负载均衡软件的优点。 支持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 sudo apt update sudo apt install haproxy
5.2.配置HAProxy
HAProxy的主要配置文件是 /etc/haproxy/haproxy.cfg。你可以使用文本编辑器打开并编辑此文件 vim /etc/haproxy/haproxy.cfg
在配置文件中你需要定义后端服务器和监听器。以下是一个简单的示例配置将HAProxy配置为负载均衡HTTP请求到两个后端Web服务器 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地址和端口是示例值你需要替换为实际的后端服务器信息。
检查配置
在编辑完成配置文件后运行以下命令检查配置文件是否有语法错误 sudo haproxy -c -f /etc/haproxy/haproxy.cfg
如果没有出现错误消息说明配置文件有效。
重启HAProxy
重新启动HAProxy以使配置生效 sudo systemctl restart haproxy
启用自动启动可选
如果你希望HAProxy在系统启动时自动启动可以运行以下命令 sudo systemctl enable haproxy
5.3.测试
这里我们用两台虚拟机分别部署nginx web页面
分别是192.168.5.101和192.168.5.102 我们访问haproxy的web页面 端口默认80 点击刷新 我们设置的策略是轮循 可以看见页面在111和222中切换
haproxy配置文件详解更新在配置文件模版