当前位置:网站首页>【无标题】
【无标题】
2022-08-01 08:39:00 【糖醋·小排顾】
目录
一:SLB的概念
1.1什么是负载均衡?
随着业务发展,我们对外提供的服务可能性能不达标,一台服务器可能无法满足业务的需求,为了解决这个问题,我们可能增加服务器的配置,但是服务器的配置(CPU,内存,硬盘)有上限,这时候就需要用到多台服务器提供同一个访问服务,这就是集群技术。
负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务
负载均衡服务通过设置虚拟服务地址,将位于同一地域的多台ECS实例虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用
负载均衡服务会检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实例,从而解决了单台ECS实例的单点问题,提高应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务的防护能力
1.2负载均衡SLB发展过程
- 随着业务发展,单一服务器设备无法承担,就需要使用负载均衡
- 负载均衡的功能可以由硬件设备来实现,但是价格昂贵,而且硬件也有性能瓶颈,当达到硬件的性能上限后需要购买更多设备,且硬件扩展性受到了限制,无法进行扩展和定制。
- 阿里云软件负载均衡是更好的选择方案
Ali软件负载均衡SLB VS 传统硬件负载均衡器
传统IT
- 在传统IT中,做集群技术需要用集群软件把多台服务器连接起来,集群软件来判断每个服务器的状态,来把访问请求转发给服务器。但是呢,这个配置过程比较耗时复杂,还取决于负载均衡软件的可靠性可用性
阿里云
- 阿里云为了减轻用户操作的复杂性,推出了SLB服务。SLB服务已经实现了负载均衡,用户只需要在SLB中添加后端服务器,这些后端服务器只能是阿里云同一地域下的ECS,利用这些ECS对外提供访问服务,这些ECS不要做任何其它配置。
- 用户访问SLB,再由SLB把请求转交到后端ECS服务器,ECS服务器再把业务响应给用户
- 通过设置虚拟服务地址,将添加的同一地域的多台ECS实例虚拟成一个高性能,高可用的后端服务池,并根据转发规则,将来自客户端的请求分发给后端服务器池中的ECS实例
- 默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提供了应用的整理服务能力。此外,负载均衡还具备DDoS攻击的能力,增强了应用服务的防护能力
整合的网页地址:
负载均衡(SLB)使用最佳实践 :
https://yq.aliyun.com/articles/80055?spm=5176.100240.searchblog.26.3bIToO
负载均衡(阿里云帮助与文档):
https://help.aliyun.com/product/27537.html?spm=5176.doc27544.3.1.BZgTjy基础架构:
https://help.aliyun.com/document_detail/27544.html?spm=5176.7739444.6.540.BHXBo1技术原理:
https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.100239.blogcont80055.19
健康检查原理:
https://help.aliyun.com/knowledge_detail/39455.html?spm=5176.100239.blogcont80055.20网络流量说明:
https://help.aliyun.com/knowledge_detail/39440.html?spm=5176.100239.blogcont80055.21高可用概要说明:
https://help.aliyun.com/knowledge_detail/39449.html?spm=5176.100239.blogcont80055.22
1.3负载均衡的主要作用
高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。
伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。
高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。
安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。
二:阿里云负载均衡SLB
2.1阿里云负载均衡SLB的优点
同城容灾:同城容灾是指一个地域下不同的可用区,SLB是不能跨地域的,SLB可以提供可用区的高级可用,故障时自动切换
流量分发:对多台云服务器自动进行流量分发,扩展系统服务能力
简单易用:多种付费类型,计费模式与管理方式,可灵活轻松管理
超强性能:推出性能保障型实例,并提供超高性能规格的实例
可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提高应用系统的可用性。
2.2负载均衡SLB应用场景
负载均衡的应用场景为高访问量的业务,提供应用程序的可用性和可靠性
- 高访问量的业务:如果应用的访问量很高,可以通过配置监听规则将流量分发到不同的ECS实例上
- 扩展应用程序:可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力
- 消除单点故障:可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,将请求分发给正常运行的ECS实例
- 同城容灾(多可用区容灾):使用负载均衡,可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾
- 跨地域容灾:SLB自身不可以实现跨地域容灾。可以在不同地域下部署负载均衡实例,并分别挂载相应地域内不同可用区的ECS,上层利用云解析做智能DNS
2.3阿里云负载均衡SLB组成
阿里云负载均衡SLB主要由3个基本概念组成:负载均衡器LoadBalancer,监听器Listener,后端服务器BackendServer
- 负载均衡实例Server Loader Balancer instances:一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。
- 监听器Listeners:监听器用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查
- 后端服务器Backend Servers:一组接收前端请求的ECS实例,ECS实例是真正提供服务访问的,后端服务器的数据要一致,对后端服务器的操作系统等配置没有要求,只要求它们的数据是一致的
2.4SLB的产品优势
- 高可用:采用全冗余设计,无单点,支持同城容灾,搭配DNS可以实现跨地域容灾。SLB仅仅支持同一个地域的SLB,如果要实现不同地域的容灾,需要在两地搭建两套SLB,再借助DNS实现这两套SLB的轮询访问
- 可扩展:可以根据业务的需要,随时增加或减少后端服务器的数量,扩展应用的服务能力
- 低成本:与传统硬件负载均衡系统高投入相比,成本可下降60%
- 安全:结合云盾,可提供5Gbps的防DDoS攻击能力
- 高并发:集群支持亿级并发连接,单实例提供千万级并发能力
2.5负载均衡中的概念/术语
负载均衡服务Server Load Balancer:阿里云计算提供的一种网络负载均衡服务,可以结合阿里云提供的ECS服务为用户提供基于ECS实例的TCP、UDP与HTTP负载均衡服务
地域Region:代表资源所在并有效的地域,每个地域包含一组数据中心
可用区Zone:代表负载均衡所在的Zone
负载均衡实例Load Balancer:负载均衡实例可以理解为负载均衡服务的一个运行实例,用来接收流量并将其分配给后端服务器。用户要使用负载均衡服务,就必须先创建一个负载均衡实例,LoadBalancer是识别用户负载均衡实例的唯一标识。.
负载均衡服务监听Listener:负载均衡服务监听,包括监听端口,负载均衡策略和健康检查配置等
后端服务器BackendServer:接受负载均衡分发请求的一组云服务器,负载均衡服务将外部的访问请求按照用户设定的规则转发到这一组后端服务器上进行处理
服务地址Address:系统分配的服务地址,当前为IP地址。用户可以选择该服务地址是否对外公开,来分别创建公网和私网类型的负载均衡
三:SLB原理
负载均衡基础架构是采用集群部署,提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性
- 传输层:传输层用端口号区分不同连接,比如 连网站http:默认用TCP80端口;连网站https:443端口;ssh:22端口
- 应用层:http,https,ssh,ftp等协议属于应用层协议
SLB基本架构图
阿里云当前提供四层和七层的负载均衡服务。
- 七层:采用Tengine实现负载均衡;只能选HTTP和HTTPS;Tengine 是由淘宝网发起的 Web 服务器项目,它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
- 四层:采用开源软件LVS (Linux Virtual Server) + keepalived的方式实现负载均衡。可以自定义端口
选择四层or七层
- 如果是访问网站,选七层,http和https都支持,配置简单
- 如果需要自定义端口,建议用四层,四层麻烦一些;七层只能选HTTP或HTTPS协议
3.1转发方式的工作原理
- 轮询模式:会将外部和内部的访问请求依序分发给后端ECS进行处理
- 加权轮询模式:会将外部和内部的访问请求依序分发给后端ECS进行处理,权重越高,被分配的几率越达
- 最小连接数:访问请求分发给当前连接数最小的一台后端ECS进行处理
- 加权最小连接数:
3.2会话保持及权重设置的工作原理
会话保持:开启会话保持后,负载均衡会把来自同一个客户端的请求分配到同一台后端服务器上,提高访问效率
- 四层TCP:同一IP地址的请求持续发往同一台后端服务器
- 七层HTTP:相同cookie的请求发往同一台后端服务器
权重设置:访问请求按权重大小依次分发
3.3如何把负载均衡和云产品结合?
云解析企业版(智能DNS):提供丰富的智能解析策略,合理调度来自不同线路用户的入站访问量,后续还支持根据地域调度访问流量和健康检查,实现跨地域负载均衡或全局负载均衡
云服务器ECS:挂载同地域Region的ECS,可实现流量分发和消除单点故障
云盾:结合云盾实现DDoS防护,包括清洗和黑洞
弹性伸缩服务:结合弹性伸缩服务可以做到弹性扩容
对象存储OSS,数据库RDS:用户通过ECS上的应用,可访问OSS,RDS,Memcache等应用。用户也可以直接在ECS上部署DB等应用,通过SLB做负载均衡。
3.4SLB中的概念
3.4.1监听
创建负载均衡实例后,需要为实例配置监听。负载均衡实例监听负责检查连接请求,然后根据调度算法定义的转发策略将请求分发至后端服务器。负载均衡提供四层(TCP/UDP协议)和七层(HTTP/HTTPS协议)监听,可根据应用场景选择监听协议:
- TCP:先和对方建立连接,三次握手,再发送数据
- UDP:直接发送数据给对方;适合关注实时性而相对不注重可靠性
- HTTP:基于Cookie的会话保持;适合web应用
- HTTPS:加密传输数据;适合银行等加密传输的应用
3.4.2监听转发
HTTPS是加密数据传输协议,安全性高。负载均衡支持将HTTP访问重定向至HTTPS,方便进行全站HTTPS部署。负载均衡已经在全部地域开放了HTTPS重定向功能。
3.4.3会话保持
负载均衡是可以设置会话保持功能的。如果开启会话保持,在超时时间范围内,会将同一请求转发给后端同一台服务器;如果过了超时时间,就会重新选择后端服务器。如果负载均衡本身请求流量较小,就会显得分发不那么均衡。所以如果是要做压力测试,建议先关闭会话保持测试。压力测试可以测试负载均衡的性能如何
- 四层会话保持:四层TCP方式的负载均衡是基于客户IP进行会话保持的,它会把同一IP地址的请求持续发往一台服务器
- 七层会话保持:七层HTTP负载方式进行会话保持是基于cookie的。可以分为植入cookie和重写cookie。
3.4.4SLB的后端服务器
在使用负载均衡服务前,需要添加ECS实例作为负载均衡实例的后端服务器,用来接收负载均衡监听转发的请求。负载均衡服务通过设置虚拟服务地址,将添加的同一地域的多台ECS实例虚拟成一个高性能,高可用的应用服务池。也可以通过虚拟服务器组管理后端服务器。
可以在任意时刻增加或减少负载均衡实例的后端ECS数量,确保开启了负载均衡的健康检查功能并同时保证负载均衡实例中至少有一台正常运行的ECS。添加后端服务器时,要注意:
- SLB与ECS同地域:负载均衡不支持跨地域部署,确保ECS实例的所属地域和负载均衡实例的所属地域相同。
- ECS操作系统:负载均衡本身不会限制后端ECS实例使用哪种操作系统
- 50个应用:一个负载均衡实例最多支持添加50个监听,每个监听对应后端ECS实例上的一个应用
- 指定ECS的权重:可以指定都断服务器池内各个ECS实例的转发权重,权重越高的ECS实例将被分配到更多的访问请求
- 如果同时开启了会话保持功能,那么有可能会造成后端服务器的访问并不完全相同的。当负载均衡服务分发请求不均匀时,可以参考以下方法进行检查处理:
统计一个时间段内,后端ECS实例的Web服务访问日志记录数据量
按照负载均衡的配置,对比多台ECS实例日志的数量是否有相差。开启会话保持后,需要剥离相同IP的访问日志。如果负载均衡配置了权重,需要根据权重比例计算日志中访问比例是否正常。
- ECS进行热迁移时,可能导致SLB长连接断开。重新连接后即可恢复,请做好应用的重连工作
后端服务器组分类
默认服务器组:用来接收前端请求的ECS实例。如果监听没有设置虚拟服务器组或主备服务器组,默认将请求转发至默认服务器组中的ECS。
主备服务器组:一个主备服务器组只包括两台ECS实例,一台作为主服务器,一台作为备服务器。由于备服务器不会做健康检查,所以只要主服务器健康检查失败,系统会直接将流量切到备服务器。当主服务器健康检查成功恢复服务后,流量会自动切到主服务器。备机一直不工作,除非主机坏了,备机才工作
虚拟服务器组:当需要将不同的请求转发到不同的后端服务器上时,或需要通过域名和URL进行请求转发时,可以选择虚拟服务器组。
3.4.5健康检查
负载均衡通过健康检查来判断后端服务器(ECS实例)的业务可用性。健康检查机制提高了前端业务整体可用性,避免了后端ECS异常对总体服务的影响。
开启健康检查功能后,当后端某台ECS健康检查出现异常时,负载均衡会自动将新的请求分发到其它健康检查正常的ECS上;而当该ECS恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中。
SLB四层和七层健康检查机制如下:
3.4.6访问控制
负载均衡提供监听级别的访问控制。可以针对不同的监听设置访问白名单和黑名单。
- 白名单:仅转发来自所选访问控制策略组中设置的IP地址或地址的的请求。适用于应用只允许特定IP访问的场景
- 黑名单:来自所选访问控制策略组中设置的IP地址或地址段的所有请求都不会转发。黑名单适用于应用只限制某些特定IP访问的场景。
3.5SLB的计费
SLB提供两种计费模式:按量付费和预付费。
- 按量付费:适合波峰波谷的应用
- 预付费:就是按照带宽计费,包年包月的方式
SLB的计费项包括实例费,流量费,带宽费,规格费。注意无论是公网还是私网,公网中无论是按流量还是按带宽,性能保障型都会收取规格费。私网只收取规格费。
四:总结
4.1SLB的功能
调度算法:负载均衡支持轮询,加权轮询(WRR),加权最小连接数(WCL)和一致性哈希(CH)调度算法
- 加权就是比例,ECS性能和处理能力不同,所占加权比重就不同
- 一致性哈希:同一个主机发送的请求就转发给同一个ECS后端服务器,减少浪费
健康检查:负载均衡会检查后端服务器的运行状况。当探测到后端服务器运行状况不佳时,会停止向其发送流量,然后将流量转发给其它正常运行的后端服务
会话保持:负载均衡提供会话保持功能。在会话的生命周期内,可以将同一客户端的请求转发到同一台后端服务器上
访问控制:负载均衡支持添加黑名单和白名单,灵活控制客户端访问
高可用:负载均衡可以将流量转发给多个可用区的后端服务器。并且,负载均衡已经在大部分地域支持了多可用区部署,当主可用区出现故障时,负载均衡可自动切换到备可用区上提供服务
安全防护:结合云盾,可提供5Gbps的防DDoS攻击能力
4.2负载均衡SLB相关问题
- 为什么请求不均衡? 答:1.访问量太少 2.不同ECS服务器的性能不同 都会导致请求不均衡
- 负载均衡是否可以自定义端口?答:端口可以自定义1~65535
- 负载均衡服务本身解决了后端ECS服务的灾备问题,单如何避免负载均衡服务本身故障导致的单点问题?关于负载均衡的灾备,有什么好的建议?答:在同一地域,可以购买多个负载均衡实例,通过DNS轮询的方式提高SLB可用性。两个地域都购买SLB,然后在两个地域的SLB做DNS轮询。
边栏推荐
- How to get page data
- leetcode 42. Catch the rain
- 力扣周赛304 6135. 图中的最长环 内向基环树
- Redis 3.2.3 crashed by signal: 11 服务宕机问题排查
- Delphi MDI appliction 文档最大化显示、去掉最大化最小化等按钮
- VoLTE基础学习系列 | 什么是SIP和IMS中的Forking
- The soul asks: How does MySQL solve phantom reads?
- Prime Ring Problem
- app 自动化 打开app (二)
- MySQL query advanced - from the use of functions to table joins, do you remember?
猜你喜欢
类似 MS Project 的项目管理工具有哪些
SAP ABAP ALV+SMARTFORS 表分页 报表打印程序
leetcode-6134: Find the closest node to the given two nodes
自定义IP在PCIE中使用
Chapter 9 of Huawei Deep Learning Course - Convolutional Neural Network and Case Practice
灵魂发问:MySQL是如何解决幻读的?
Redis middleware (from building to refuse pit)
Microsoft Azure & NVIDIA IoT 开发者季 I|Azure IoT & NVIDIA Jetson 开发基础
云原生FAQ
Leicester Weekly 304 6135. The longest ring in the picture Inward base ring tree
随机推荐
华为深度学习课程第六、七章
类似 MS Project 的项目管理工具有哪些
【面试:并发篇39:多线程:线程池】ThreadPoolExecutor类-提交、停止
Delphi MDI appliction documents maximize display, remove buttons such as maximize and minimize
UXDB如何返回当前数据库所有表的记录数?
微信小程序请求封装
【杭电多校第四场 B题】最短路图+缩点dp
leetcode-6133: maximum number of groupings
Gethostbyname \ getaddrinfo DNS domain name IP address is not safe
【HDLBits 刷题】Circuits(1)Combinational Logic
小程序更多的手势事件(左右滑动、放大缩小、双击、长按)
HoloView--live data
Flink SQL - client, how to deal with the source side and to increase the target, the SQL - client including mapping table and the JOB such as
app 自动化 打开app (二)
zip打包目录所有文件(含隐藏文件/夹)
SaaS安全认证综合指南
云原生FAQ
Data Analysis 5
Parsing MySQL Databases: "SQL Optimization" vs. "Index Optimization"
How to query database configuration parameters in GBase 8c, such as datestyle