阿里云产品之负载均衡

萱蘇的运维日常 2024-04-01 14:04:07
概述

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

负载均衡分类

OSI(Open System Interconnect),即开放式系统互联。是OSI组织为了互联网各层之间协作而制定的标准模型。再具体点来说是为了使互联网各个基础组件厂商统一标准而制定的标准,这样就能实现互联了。

四层负载

基于IP+端口的负载均衡,在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加上四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或UDP的流量时由哪台服务器处理的,后续这个连接的所有流量都会同样转发到同一台服务器处理。对应的负载均衡器称为四层交换机(L4 Switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡不理解应用协议(如HTTP/FTP/MySQL等等)实现四层的软件:

LVS

NGINX

HAPROXY

七层负载

七层负载均衡工作在 OSI 模型的第七层(应用层),指的是负载均衡设备通过请求报文中的应用层信息(如URL、HTTP头部、资源类型等信息)和负载均衡算法,选择到达的目标内部服务器。七层负载均衡的功能更加丰富灵活,另外七层负载均衡两端(面向用户端和服务器端)的连接都是独立的,在一定程度上也提升了后端系统的安全性,因为像网络常见的DoS攻击,在七层负载均衡的环境下通常在负载均衡设备上就截止了,不会影响到后台服务器的正常运行。比如常见 Nginx 就是运行在七层的负载均衡软件实现七层负载软件

HAPROXY

NGINX

APACHE

负载算法

负载均衡算法,主要分为以下5种,轮询、加权轮询、哈希、随机、最少连接。轮询:

加权轮询

哈希

随机

最小连接数

负载均衡应用场景

弹性横向扩张

服务高可用

流量调度

云产品

阿里云负载均衡产品分为ALB(应用负载均衡)、NLB(网络负载均衡)、CLB(传统负载均衡)。该三种SLB配置方法大体相同,以下以配置步骤以CLB为例。

计费方式

ALB实力规格费+LCU+公网流量费,LCU可使用LCU资源包进行抵扣NLB实力规格费+LCU+公网流量费CLB包年包月:实例费+规格费+公网带宽费按量收费:实例费+规格费+LCU+公网流量费

LCU是按小时进行收费的,其计算规则如下:LCU费用 = LCU单价 * LCU个数LCU 单价:

ALB/CLB  0.049

NLB  0.037

ALB/CLBLCU个数 = MAX{新建连接个数LCU,并发连接个数LCU,处理流量个数LCU,规则评估数LCU}新建连接个数LCU = 最大连接数 / 25(单位 个)并发连接个数LCU = 最大并发连接数 / 300(单位 个)处理流量个数LCU = 总处理流量 / 1                  (单位 GB)规则评估数LCU = 规则评估数 / 1000NLBLCU个数 = MAX{新建连接个数LCU,并发连接个数LCU,处理流量个数LCU}新建连接个数LCU = 最大连接数 (800/400/50)(单位 个)并发连接个数LCU = 最大并发连接数 / (100000/50000/3000)(单位 个)处理流量个数LCU = 总处理流量 / 1(单位 GB)

配置步骤

配置前准备

业务是否平稳(按量付费)

四层:最大并发连接数;七层:QPS数(包年包月)

确认实例网络类型,公网 or 私网

确认实例所在地域,CLB不支持跨地域

选择合适的规格

确定转发协议(TCP/UDP/HTTP/HTTPS)

创建CLB实例

登录【负载均衡SLB控制台】>【传统型负载均衡CLB】>【实例管理】>【创建传统型负载均衡】

填写相关配置信息,点击【立即购买】

配置监听

在【实例管理】页面,找到对应的CLB实例,在【操作列】单击【监听配置向导】

在向导页面进行相关配置的填写。例如协议、监听端口、调度算法等

添加后端服务器组

在【实例管理】页面,单击实例 ID 进入实例详情页面

在【默认服务器组】页签,单击【添加】,勾选已存在的ECS实例

配置健康检查

进入实例详情页面,在【监听】页签,单击【添加监听】或者在目标监听的【操作】列单击【修改监听配置】

进入【健康检查】页面进行配置

配置域名解析

登录【域名解析控制台】,在目标域名【操作】列点击【解析设置】

添加记录

验证均衡是否正常,流量是否转发到对应的后端服务上

配置证书(七层)

CLB支持两种来源的证书:

在阿里云SSL证书服务中签发或托管的证书:从阿里云SSL证书服务选择,可实现证书到期提醒和一键续期。暂未支持客户端CA证书。

第三方签发的证书:上传第三方签发证书,您需要持有证书的公钥和私钥文件。支持HTTPS服务器证书及客户端CA证书。

在创建证书前,请注意:

如果一个证书要在多个地域使用,那么创建证书时需要选择多个地域。

每个地域最多可以创建100个服务器证书。

每个地域最多可以创建100个客户端CA证书。

传阿里云证书

登录【传统型负载均衡CLB控制台】,在左侧导航栏,选择【传统型负载均衡 CLB(原SLB)】 > 【证书管】

在【证书管理】页面,单击【创建证书】。

在【创建证书】面板,选择阿里云签发证书,从证书列表中选择使用的SSL证书,并选择证书所属资源组和证书部署地域。证书不支持跨地域使用。如果该证书需要在多个地域使用,选择所有需要的地域。

上传非阿里云证书

登录【传统型负载均衡CLB控制台】,在左侧导航栏,选择【传统型负载均衡 CLB(原SLB)】 > 【证书管理】。

在【证书管理】页面,单击【创建证书】。

在【创建证书】面板,选择上传非阿里云签发证书,并完成以下配置。

替换证书

替换监听证书

登录【传统型负载均衡CLB控制台】,在【实例管理】页面单击需要替换证书的CLB实例ID,选择【监听】页签。

单击需要替换证书的HTTPS监听【操作】列的【管理证书】。

在【管理证书】面板选择服务器证书(默认证书)下拉框选择一个服务器证书。

单击【高级配置】右侧的【修改】,修改双向认证和TLS安全策略配置,然后单击确定。

在左侧导航栏选择【传统型负载均衡 CLB(原SLB)】 > 【证书管理】,在【证书管理】页面找到过期目标证书,然后在【操作】列单击【删除】,并在弹出的对话框中,单击【确定】。

若过期证书关联了其他监听,则无法进行删除操作

通过证书管理替换证书

通过证书管理替换证书后,所有关联该证书的监听或扩展域名上的证书也将自动替换

登录【传统型负载均衡CLB控制台】,在左侧导航栏,选择【传统型负载均衡 CLB(原SLB)】 > 【证书管理】。

在【证书管理】页面,单击需要替换证书的操作列的替换证书。

至少关联了一个监听或者域名扩展的证书才能被替换。

在替换服务器证书页面,修改证书。

选择【阿里云签发证书】,选择证书部署地域和所属资源组,在证书列表选择新的证书。

选择【上传非阿里云签发证书】

选择【创建一个证书并替换】。

选择【使用已有证书】替换,在已有证书列表中选择用来替换的服务器证书。

单击【替换证书】。

单击【去证书列表】查看,在【证书管理】页面,可以查看关联监听或者扩展域名对应的证书变成新替换的证书。

WAF与SLB相结合

SLB可与WAF结合使用,将更好的保护后端服务器。目前进行配置的方法有以下两种

通过【负载均衡控制台】

在【实例管理】页面,单击实例 ID 进入实例详情页面

在【安全防护】页签,单击立即开通

目前负载均衡控制台只支持为七层监听开启WAF2.0

通过【web应用防火墙控制台】

web应用防火墙3.0

在【接入管理】页面,单击【云产品接入】页签。

在CLB(HTTP/HTTPS)分页,单击目标实例前的image.png图标,展开查看该实例下已添加到WAF防护的端口。

登录【web应用防火墙3.0控制台】,在左侧导航栏点击【接入管理】

在【云产品接入】页签选择CLB(HTTP/HTTPS),单击【接入】

根据页面对服务进行授权

在配置页面进行相关配置的填写,点击【确认】

查看源站服务器和管理引流端口

查看端口详情:单击端口详情,查看端口、协议、配置的证书信息,设置WAF前是否有七层代理(高防/CDN等)、启用流量标记。取消接入:单击取消接入,在取消接入对话框,单击确定。取消接入后,您资产上的流量将不再受到WAF保护,您可以单击接入,重新添加端口。具体操作,请参见添加引流端口。

更新引流端口配置的证书

在数字证书管理服务(原 SSL 证书)控制台部署证书到七层CLB实例

在负载均衡控制台更新证书

续费证书或将第三方证书上传到数字证书管理服务(原 SSL 证书)

同步证书到七层CLB实例

七层CLB实例绑定的证书更新后,会自动同步到WAF。如果没有同步,您可以在WAF控制台执行如下操作:在【接入管理】 > 【云产品接入】 > 【CLB(HTTP/HTTPS)】页签,单击【接入】。在【接入资产】- 【七层CLB面板】,单击【同步最新资产】,手动同步更新。

3. 如果引流端口更换的证书为第三方证书,引流端口会自动取消接入。您需要在更换证书后重新添加端口,具体操作,请参见添加引流端口

web应用防火墙2.0

SLB存在公网ip,且端口未开启双向认证

托管在内地服务上的域名需要进行icp备案

已上传证书(只有七层需要满足)

在【网站接入】页面,单击【服务器列表】页签。

单击实例前的

图标,展开查看该实例下已添加到WAF防护的端口。

透明接入前提:

登录【web应用防护2.0管理控制台】,在左侧导航栏点击【资产中心】>【网站接入】

在【域名列表】页签,单击【网络接入】,选择【接入模式】为【透明接入】,并填写域名相关信息,点击【确认】

查看源站服务器和管理引流端口

四层SLB类型、ECS类型实例的端口不会自动同步到服务器列表,您需要手动添加端口。具体操作,请参见添加端口。

Web流量状态(图示①)表示该端口的流量目前是否经过WAF防护,可选项开启或关闭。您可以单击操作列下的【关闭引流】、【开启引流】,修改端口引流状态。

关闭端口引流后,该服务器端口的流量将不会经过WAF防护。Web流量状态(图示②)表示该实例下端口接入WAF防护的整体状态,可选项未防护、部分防护、运行中。

3. 如果实例为四层SLB类型、ECS类型,您可以单击端口【操作】列下的【删除】,并在提示对话框中单击【确定】,删除某个不再需要流量防护的端口。

更新引流端口配置的证书

如果实例监听端口配置的证书被更新,您只需要在SLB实例中更新证书,WAF会自动同步。同步时长约30分钟

ALB实例和七层SLB实例:无需在WAF重新上传证书。

如果监听端口证书更换为通过第三方平台(非阿里云)购买的证书,您需要在更新证书后,重新将实例接入WAF

2. 如果WAF自动同步的证书未生效,您可以在【服务器列表】页签,单击【更新】图标,手动更新实例监听端口配置的证书2. **ECS实例和四层SLB实例:**需要在WAF重新上传证书1. 您可以在服务器列表页签,定位到需要更新证书的实例,单击目标端口【操作】列的【编辑】,通过手动上传或选择已有证书的方式上传证书。

阿里云产品ALB、NLB、CLB区别

|| ALB | NLB | CLB || --- | --- | --- | --- || 转发能力 | 七层 | 四层 | 四/七层基础能力 || 协议 | HTTP/HTTPS | TCP/UDP | TCP/UDP/HTTP/HTTPS || 效率 | 低 | 高 | - || 安全性 | 高 | 低 | - || 架构和性能 |

基于NFV虚拟化平台,支持弹性伸缩

单实例最大支持100万QPS|

基于NFV虚拟化平台,不依赖物理机,支持弹性和快速扩容等需求

单实例最大支持1亿并发|

基于物理机架构

单实例最大支持100万并发、5万QPS|| 典型应用场景 |

互联网应用七层高性能自动弹性场景

音视频应用大流量低时延场景

云原生应用金丝雀蓝绿发布场景|

四层大流量高并发业务场景

物联网、车联网等IoT业务入口

多活容灾、IDC云上出入口场景|

网站、系统四层流量分发高可靠场景

大并发高性能网络分流场景

同城灾备、跨地域容灾场景|

SLB+ESS

当用户架构处于一下几种情况:

用户直接访问服务器

应用、数据未分离

应用、数据分离

用户通过软件负载访问

应用、数据未分离

应用、数据分离

现状2:

单点故障

无法横向扩容

现状1:

横向扩容工作量大

空闲资源浪费

通过使用阿里云SLB+ESS+云监控可以很好的解决该情况弹性伸缩:弹性伸缩(Elastic Scaling Service,简称ESS),也称为Auto Scaling,是指根据业务需求和策略自动调整计算能力(即实例数量)的服务。您可以指定实例的类型,即ECS实例或ECI实例。弹性伸缩不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。

弹性伸缩支持直接绑定SLB、ECS、ECI实例,弹性实例的增减有多种方式:

手动添加

报警任务

业务波动性较大,不可预估业务高峰期,可以使用监控指标(cpu使用率、内存使用率......)进行弹性扩容

定时任务

业务的波动有迹可循,能够明确的知道业务的高峰时段

伸缩原理:

依据模式触发伸缩(多模式并行)

通过接口调用伸缩程序

根据规则和配置执行伸缩活动

创建实例并加入SLB、RDS

注意点:

静态存储(图片、视频、文件......)最好放在OSS、NAS上,保证数据一致性

挂载文件系统

通过oss内网地址进行访问(AK、AS、Endpoint,【私有需要进行系统对接,申请url签名才能访问】)

挂载为目录

OSS

NAS

推荐使用OSS进行存储,使用内网访地址进行访问。相对于其他三类,使用内网地址访问最简洁,最便利。其他两种方式都需要进入系统进行挂载,需要在进行扩容时进行挂载,挂载过程中可能出现异常导致挂载失败,从而导致所扩容服务器无法正常提供服务。

伸缩动作之后,会存在冷却时间,在冷却时间内不执行报警任务(重启伸缩组,冷却时间失效)

数据库目前只能直接关联RDS,其他类型的可用生命周期挂钩+OOS进行关联

0 阅读:12