AWS 7 AWS Fundamentals_ELB+ASG

可扩展性和高可用性
•可扩展性意味着应用程序/系统可以处理更大的负载通过适应。

•有两种可扩展性: •垂直可扩展性 •横向可扩展性(=弹性)
•可扩展性与高可用性相关,但不同
•让我们以呼叫中心为例,深入探讨这一区别

垂直可扩展性

•垂直可扩展性意味着增加尺寸
例如
•例如,您的应用程序运行在t2。微型的
•垂直扩展该应用程序意味着在t2上运行。大的
•垂直可扩展性在非分布式系统中非常常见如数据库。
•RDS、ElastiCache是可以扩展的服务垂直地
•你能做的事情通常是有限度的垂直比例(硬件限制)

水平可扩展性
•横向可扩展性意味着增加您的应用程序的实例/系统数应用
•水平扩展意味着分布式系统。
•这在web应用程序中非常常见/现代应用
•借助云端,可以轻松进行水平扩展,亚马逊EC2等产品

高可用性
•高可用性通常是齐头并进的水平扩展
•高可用性意味着运行应用程序/系统中至少有2个数据中心(=可用区域)
•高可用性的目标是在数据中心丢失的情况下生存下来
•高可用性可以是被动的(例如RDS Multi AZ)
•高可用性可以处于active状态(例如水平缩放

EC2的高可用性和可扩展性
•垂直缩放:增加实例大小(=向上/向下缩放)
• From: t2.nano - 0.5G of RAM, 1 vCPU
• To: u-12tb1.metal – 12.3 TB of RAM, 448 vCPUs
•水平缩放:增加实例数量(=向外/向内缩放)
•自动缩放组
•负载平衡器

•高可用性:跨多个应用程序运行同一应用程序的实例
•自动缩放组多AZ
•负载均衡器多功能
----------------------------------------------------------------------
负载均衡
负载平衡是将流量转发到多个服务器的服务器 下游服务器(如EC2实例)

为什么要使用负载平衡器?

•将负载分散到多个下游实例上
•向应用程序公开单点访问(DNS)
•无缝处理下游实例的故障
•定期对您的实例进行健康检查
•为您的网站提供SSL终止(HTTPS)
•加强cookies的粘性
•跨区域的高可用性
•将公共交通与私人交通分开

•弹性负载平衡器是一种托管负载平衡器 Elastic Load Balancer
•AWS保证它将正常工作
•AWS负责升级、维护和高可用性
•AWS仅提供少量配置旋钮

•安装自己的负载平衡器成本较低,但需要付出更多努力在你这边

•它与许多AWS产品/服务集成
•EC2、EC2自动缩放组、亚马逊ECS
•AWS证书管理器(ACM),CloudWatch
•53号公路、AWS WAF、AWS全球加速器

健康检查
•健康检查对负载平衡器至关重要
•它们使负载平衡器能够知道它是否将流量转发给其他实例可以回复请求
•在端口和路由上进行健康检查(/健康是常见的)
•如果响应不是200(OK),则实例不健康

AWS上的负载平衡器类型
•AWS有4种托管负载平衡器
•Classic负载平衡器(v1-旧一代)-2009-CLB
•HTTP、HTTPS、TCP、SSL(安全TCP)
•应用负载平衡器(v2-新一代)-2016-ALB
•HTTP、HTTPS、WebSocket
•网络负载平衡器(v2-新一代)-2017-NLB
•TCP、TLS(安全TCP)、UDP
•网关负载平衡器–2020–GWLB
•在第3层(网络层)运行——IP协议

•总体而言,建议使用新一代负载平衡器,因为它们提供更多功能
•一些负载平衡器可以设置为内部(专用)或外部(公共)ELB

负载均衡也有安全组的概念
Load Balancer Security Group:
Application Security Group: Allow traffic only from Load Balancer

--------------------------------------------------------------------------------
ELB-CLB

Classic负载平衡器(v1)

•支持TCP(第4层)、HTTP&HTTPS(第7层)
•健康检查是基于TCP或HTTP
•固定主机名
XXX.region.elb.amazonaws.com


1.创建 实例 2. 创建负载均衡,正常状态是InService
3.如果安全组没有htttp 则状态可能是 OutOfService
还有一种原因是 引导脚本未正确执行。

如果想要加强安全措施,可以在入境安全组设置仅允许实例访问
如果配置三个实例,访问网站的话,将是三个网站轮询显示在浏览器上。
说明我们依据使用CLB成功了
--------------------------------------------------------------------------------
ELB-ALB

应用程序负载平衡器(v2)

•应用程序负载平衡器是第7层(HTTP)
•跨机器对多个HTTP应用程序进行负载平衡(目标群体)
•在同一台机器上对多个应用程序进行负载平衡(例如:集装箱)
•支持HTTP/2和WebSocket
•支持重定向(例如从HTTP到HTTPS)

•基于URL中路径的路由(example.com/users和example.com/posts)
•基于URL中主机名的路由(one.example.com和other.example.com)
•基于查询字符串、标题的路由(example.com/users?id=123&order=false)
•ALB非常适合微服务和基于容器的应用(例如:Docker&Amazon ECS)
•具有端口映射功能,可以重定向到ECS中的动态端口
•相比之下,每个应用程序需要多个Classic负载平衡器

目标群体
•EC2实例(可由自动缩放组管理)–HTTP
•ECS任务(由ECS自身管理)——HTTP
•Lambda函数–HTTP请求被转换为JSON事件
•IP地址–必须是专用IP
•可以将ALB路由到多个目标组
•在目标群体层面进行健康检查

ALB-Good to Know
•固定主机名(XXX.region.elb.amazonaws.com)
•应用服务器无法直接看到客户端的IP
•客户端的真实IP插入到X-Forwarded-For头中
•我们还可以获得端口(X-Forwarded-Port)和proto(X-Forwarded-proto)


--------------------------------------------------------------------------------
ELB-NLB
网络负载均衡器(v2)
•网络负载平衡器(第4层)允许:
•将TCP和UDP流量转发到您的实例
•每秒处理数百万个请求
•延迟小于100毫秒(ALB为400毫秒)
•NLB每个AZ有一个静态IP,并支持分配弹性IP(有助于将特定IP列入白名单)
•NLB用于极限性能、TCP或UDP流量
•不包括在AWS免费层中

网络负载均衡器——目标群体
•EC2实例
•IP地址–必须是专用IP
•应用程序负载平衡器
--------------------------------------------------------------------------------
ELB-GWLB
网关负载平衡器
•部署、扩展和管理第三方团队AWS中的网络虚拟设备
•示例:防火墙、入侵检测和预防系统,深包检查系统、有效载荷操纵…
•在第3层(网络层)-IP上运行小包
•结合了以下功能:
•透明的网络网关——单一入口/出口所有交通工具
•负载均衡器–将流量分配到虚拟机器具
•在端口6081上使用GENEVE协议

网关负载平衡器-目标群体
•EC2实例
•IP地址–必须是专用IP

网络在到达应用之前,需要经过一个检查应用。 这就需要网关负载平衡器,
在后端将会更新你的VPC,路由会被修改,然后从 检查应用 才会进入应用
--------------------------------------------------------------------------------
粘性会话(会话关联)
•可以实现粘性,以便同一个客户端总是重定向到同一个客户端负载平衡器后面的实例
•这适用于经典的负载平衡器&应用程序负载平衡器
•用于粘性的“饼干”具有有效期由你控制
•用例:确保用户不会丢失会话数据
•启用粘性可能会给系统带来不平衡加载后端EC2实例


粘性会话–Cookie名称
•基于应用程序的cookie
•定制cookie
•由目标公司产生
•可以包括应用程序所需的任何自定义属性
•必须为每个目标组单独指定Cookie名称
•不要使用AWSALB、AWSALBAP或AWSALBTG(保留供ELB使用)
•应用程序cookie
•由负载平衡器生成
•Cookie名称为AWSALBAP
•基于持续时间的cookie
•负载平衡器生成的Cookie
•Cookie名称为AWSALB表示ALB,AWSELB表示CLB
--------------------------------------------------------------------------------
跨区域负载平衡
每个负载平衡器实例分布均匀在所有AZ中的所有注册实例中(跨区域)
请求分布在弹性负载平衡节点(不跨区域)

•应用程序负载平衡器
•常开(不能禁用)
•内部AZ数据不收费,跨外部AZ会收费
•网络负载均衡器
•默认情况下禁用
•如果启用,您需要为AZ内部数据支付费用($)
•经典负载平衡器
•默认情况下禁用
•如果启用,AZ间数据不收费
--------------------------------------------------------------------------------
SSL/TLS 基础

•SSL证书允许客户端和负载平衡器之间的通信在运输途中进行加密(飞行中加密)
•SSL指用于加密连接的安全套接字层
•TLS指的是传输层安全性,它是一个较新的版本
•如今,主要使用TLS证书,但人们仍将其称为SSL

•公共SSL证书由证书颁发机构(CA)颁发
•科摩多、赛门铁克、戈达迪、GlobalSign、Digicert、Letsencrypt等…

•SSL证书有到期日期(由您设定),必须续订

负载平衡器-SSL证书
•负载平衡器使用X.509证书(SSL/TLS服务器证书)
•您可以使用ACM(AWS证书管理器)管理证书
•您可以创建或上传自己的证书

•HTTPS侦听器:
•必须指定默认证书
•您可以添加可选的证书列表,以支持多个域
•客户端可以使用SNI(服务器名称指示)来指定他们访问的主机名
•能够指定安全策略以支持较旧版本的SSL/TLS(遗留客户端)


SSL–服务器名称指示(SNI)Server Name Indication (SNI)

•SNI解决了加载多个SSL的问题将证书转移到一台web服务器上(用于多个网站)
•这是一个“较新”的协议,需要客户端指示目标服务器的主机名在最初的SSL握手中
•然后服务器将找到正确的证书,或返回默认证书

注:
•仅适用于ALB和NLB(较新) (newer generation), CloudFront
•不适用于CLB(老一代)

弹性负载平衡器–SSL证书
•经典负载平衡器(v1)
•仅支持一个SSL证书
•必须对具有多个SSL证书的多个主机名使用多个CLB

•应用程序负载平衡器(v2)
•支持具有多个SSL证书的多个侦听器
•使用服务器名称指示(SNI)使其正常工作

•网络负载均衡器(v2)
•支持具有多个SSL证书的多个侦听器
•使用服务器名称指示(SNI)使其正常工作
--------------------------------------------------------------------------------

Connection Draining

•功能命名
•Connection Draining——用于CLB
•注销延迟——针对ALB和NLB
•完成“飞行中请求”的时间,同时实例正在注销或不健康
•停止向EC2发送新请求正在取消注册的实例,转向下一个健康的实例
•1到3600秒之间(默认值:300秒)
•可禁用(将值设置为0)
•如果您的请求很短,请将其设置为低值

当一个实例不健康,或者等待时间长,直接会转向下一个请求。
--------------------------------------------------------------------------------
什么是自动缩放组?
•在现实生活中,网站和应用程序上的负载可能会发生变化
•在云中,您可以非常快速地创建和删除服务器
•自动缩放组(ASG)的目标是:
•扩展(添加EC2实例)以匹配增加的负载
•放大(移除EC2实例)以匹配减少的负载
•确保我们有最少和最多数量的机器在运行
•自动向负载平衡器注册新实例

ASG具有以下属性
•发射配置
•AMI+实例类型
•EC2用户数据
•EBS卷
•安全组
•SSH密钥对

•最小尺寸/最大尺寸/初始容量
•网络+子网信息
•负载平衡器信息
•扩展策略

自动缩放警报
•可以根据CloudWatch警报缩放ASG
•警报监控指标(如平均CPU)
•为整个ASG实例计算指标
•根据警报:
•我们可以创建扩展策略(增加实例数量)
•我们可以在创建缩小规模(减少实例数量)

自动缩放新规则
•现在可以定义“更好”的自动缩放规则,直接由EC2管理
•目标平均CPU使用率
•每个实例在ELB上的请求数
•平均网络输入
•平均网络输出
•这些规则更容易设置,也更有意义

自动缩放自定义度量
•我们可以根据自定义指标(例如:连接的数量)自动缩放(用户)
• 1. 从EC2上的应用程序向CloudWatch发送自定义度量(PutMetric API)
• 2. 创建CloudWatch警报以对低/高值做出反应
• 3. 使用CloudWatch警报作为ASG的缩放策略

ASG大脑转储
•扩展策略可以基于CPU、网络……甚至可以基于自定义指标或基于时间表(如果你知道你的访客模式)
•ASG使用发射配置或发射模板(更新版)
•要更新ASG,您必须提供新的启动配置/启动模板
•附加到ASG的IAM角色将分配给EC2实例
•ASG是免费的。你为正在启动的基础资源付费
•ASG下的实例意味着,如果它们因任何原因被终止,ASG将自动创建新的替代品。额外的安全!
•ASG可以终止LB标记为不健康的实例(并因此替换它们)

Hand on
--------------------------------------------------------------------------------
自动缩放组–动态缩放策略
•目标跟踪缩放
•最简单且易于设置
•示例:我希望ASG的平均CPU保持在40%左右

•简单/分步缩放
•触发CloudWatch警报时(例如CPU>70%),然后添加2个单元
•当触发CloudWatch警报(例如CPU<30%)时,移除1


自动缩放组–预测缩放
•预测性扩展:持续预测负荷和提前计划扩展

•计划的行动
•根据已知的使用模式预测可扩展性
•示例:在周五下午5点将最小容量增加到10

良好的衡量标准
•CPU利用率:平均CPU跨实例的利用率
•RequestCountPerTarget:确保每个EC2的请求数实例是稳定的
•平均网络输入/输出(如果您应用程序(受网络限制)
•任何自定义指标(您推送的使用CloudWatch)

自动缩放组-缩放冷却时间
•发生缩放活动后,您处于冷却时间(默认值为300秒)
•在冷却期间,ASG将不启动或终止额外的实例(允许指标稳定)
•建议:使用现成的AMI来减少配置时间,以便提供服务
要求禁食并减少冷却时间时期

Hand on
--------------------------------------------------------------------------------

posted @ 2022-04-12 08:14  姓蜀名黍  阅读(327)  评论(0)    收藏  举报