使用AWS服务来应对这些变化的一种方法是创建一个负载均衡服务器集群,然后根据需要添加或删除服务器。你可以自己管理这样一种集群,除此之外,你还可以尝试AWS Auto Scaling服务。该服务在避免过度配置的条件下保持足够的性能,同时也能够减少一些管理费用。该服务要达到的最佳应用场景是工作负载变化显著变化时,AWS Auto Scaling能够轻松地跨多个服务器分配负载。
AWS Auto Scaling 使用CloudWatch(亚马逊提供的一种监控工具)来提供所需的性能数据,完成伸缩服务建议。每隔五分钟,CloudWatch都将从服务器和其他AWS资源处,免费地收集性能统计数据,包括CPU使用率、磁盘使用情况和数据传输情况等。(额外付费的话将可获得每分钟一次的性能指标收集服务。)系统管理员可根据这些测量信息规定添加或删除服务器的配置策略。例如,一项配置策略指示当CPU平均利用率超过70%时,将启动一个额外的虚拟实例。
通过实现自动伸缩组协助制定配置策略
使用AWS Auto Scaling服务的第一步是实现一个自动伸缩组,即在逻辑上统一管理的一组亚马逊弹性计算云(EC2)实例。每一个组均被指定了最小和最大实例数,而实际数值则由基于CloudWatch的测量值做出的配置策略来决定。当需要手动干预时,通过AWS提供的ExecutePolicy命令行,系统管理员便可以无需等待触发条件,直接执行一项策略。
通过自动伸缩组的应用,企业在维护应用程序性能和开销的许多相关工作中得到了帮助。
自动伸缩组能够跨越可用性区域(一种能够支撑应用程序高可用性要求的特性)提供服务。这些可用性区域处于AWS 范围内,例如,美国东部(北维吉尼亚)或欧盟地区(爱尔兰),通过不同的基础架构隔离故障实例与正常实例。如果在某个可用性区域中发生了故障,AWS Auto Scaling将在同一个地理区域内的某个功能区启动一个新的实例。
自动伸缩组能够通过负载均衡器配置集群内服务器间的工作负载。亚马逊的弹性负载均衡服务提供了一个到你的应用程序的所有流量的单点访问。当使用负载均衡器时,可以引用负载均衡测量指标(比如请求等待时间)以及EC2实例测量指标来制定自动伸缩策略。
除了响应变化的负载,Auto Scaling还支持其他伸缩选项,包括持续确保当前实例的性能、手动伸缩以及基于排程的伸缩。
应对AWS Auto Scaling的潜在问题
完成一项自动伸缩策略的指定动作需要花费一定的时间,然而,AWS在一次触发后,实现了一个冷却周期,用于防止当对触发器最初的响应还在继续的时候,执行了对触发器第二次响应所引起的一系列事件。冷却周期始于执行策略动作。
针对Web服务器和一些应用程序服务器而言,当应用程序负载可以分布在多个服务器之上时,自动伸缩不无裨益。某些系统(如关系型数据库系统)可以配置运行于集群中,但其中存在诸多缺点:商业版关系型数据库可能通过收取额外授权费用来提供集群支持,这些授权费甚至会超过因在不同数量的小型服务器运行数据库而拒绝一台大型服务器所节省下来的费用。此外还要考虑管理数据库服务器集群与管理单个服务器的不同开销。
弹性伸缩是根据用户的业务需求自动调整弹性计算资源的服务,即能够根据应用负载情况自动扩张和收缩应用环境所使用的计算资源。在请求增加时,弹性伸缩能够为自动分配更多的计算资源,在请求下降时,弹性伸缩能够自动回收过量的资源。这样,带来一个好处是在满足客户需求的情况下,我们只需要为短期使用的资源来付费,即Pay as you go。如果我们的业务请求模式具有较大的波动性,如广告、游戏和直播等,使用弹性伸缩打造高可用高弹性的应用是非常好的选择。从特性来看,弹性伸缩服务为构建弹性可扩展的应用开发提供了以下两个方面的能力:
弹性:自动管理弹性计算资源的能力。在系统运行的整个生命周期,弹性伸缩会自动根据系统运行情况,动态创建或释放资源,使我们的应用系统能够像生物体一样自动的扩张或收缩。在整个过程中不需要任何人工的干预;
可用性:可用性也是弹性伸缩提供的重要功能。弹性伸缩会自动监测应用的运行情况,如果发现某个节点的状态异常处于停止的状态,弹性伸缩会自动将异常的节点从伸缩组中移除,并创建新的机器来替换。该特点能够极大提高系统的可用性。
下面我们一步一步讲解如何使用弹性伸缩来构建高弹性高可靠的应用集群。
创建伸缩组
使用弹性伸缩服务的第一步是是创建一个新的伸缩组。伸缩组是我们管理部署在弹性伸缩上业务的基本单元,基本上可以映射为一个应用或者一个集群。每一个伸缩组可以挂载多个SLB或者多个RDS实例。
9c2544ffef2a01732b6009ff8a5f6987138206f1
在创建伸缩组的对话框中,我们需要输入以下参数:
最大实例数:伸缩组内包含的最大实例数量。如果伸缩组内的实例数大于该参数,弹性伸缩会自动按照释放规则将多余的实例移除伸缩组。
最小实例数:伸缩组内包含的最小实例数量。如果伸缩组内的实例数小于该参数,弹性伸缩会自动创建新的按量实例来补齐缺失的数量。如果我们创建伸缩组时最小实例数不为零,则弹性伸缩会自动创建相应的实例。所以,在新建伸缩组时,最小实例数最好设置为零。等待包年包月机器加入后,再将该参数调整为需要的数量。
冷却时间:弹性伸缩活动的冷却时间,缺省为5分钟。该时间是指在某一个弹性伸缩活动执行完成后,在冷却时间内所有的新的伸缩活动请求会被拒绝,即不允许执行新的伸缩活动。该时间设置有助于避免伸缩组的频繁伸缩。
释放策略:释放策略是当弹性伸缩服务需要从伸缩组内释放实例时依据的策略,目前我们可以选择的策略包括:最早创建实例,最晚创建实例和最早伸缩配置创建的实例。如果我们希望包年包月的机器不要被移出伸缩组,则释放策略需要选择最早伸缩配置创建的实例加最早创建的实例。
网络类型:网络类型是配置弹性计算资源所使用的网络环境,目前支持两种网络类型:经典网络和专有网络。如果选择专有网络,则我们还需要选择特定的VPC和特定的vSwitch。
负载均衡:负载均衡是伸缩组内ECS实例对外挂接的负载均衡。缺省情况下只支持一个服务均衡实例,如果我们想要挂接多个负载均衡器,则需要通过工单联系客服人员修改。
数据库:数据库是ECS实例需要的RDS资源。如果设置该数据库,弹性伸缩会自动将新创建的ECS机器自动加入RDS白名单,保证ECS和RDS之间的连通性。如果我们不需要将ECS加入数据库白名单,则无需设置该选项。
伸缩组创建完成后,控制台会自动提示需要创建新的伸缩配置。下面我们会进入创建伸缩配置的步骤。
创建伸缩配置
伸缩配置是弹性伸缩在自动创建计算资源时所使用的机型配置,如4核8G或者8核16G等。目前一个伸缩组可以拥有多个不同的伸缩配置,但是生效的伸缩组只允许有一个。
伸缩配置的第一步是选择需要的机型,这一步我们根据业务需要选择相应的机型即可。目前,ECS提供了三种机型:系列1、系列2和系列3。由于系列1的机型在后期会被逐步淘汰,导致按量机型的库存非常不稳定,我们一般使用系列2或者系列3的机型。
04280ca9df2f75f4489c087d6d812dc76ee5db16
在完成机型选择后,我们需要选择机器的网络配置。目前网络配置有两种:按使用流量和按使用带宽。如果我们希望自动创建的机器带有公网IP,则选择按使用流量或者按使用带宽并且带宽值不为零。如果不希望创建公网IP,则需要按照使用带宽并且带宽值为零。
51af2373dcf53bf0b4cc0473351fd76eeb4202ee
最后是选择系统镜像、系统盘和数据盘的信息。这一块的配置内容我们根据需要自行选择即可。需要注意的是,系统盘和数据盘的配置最好能够和镜像一一对应。如果选择系统盘太小或者数据盘太小,有可能导致系统无法启动或者启动速度过慢。
70681ad709a0204cf19167dbd28cc8c167a377dd
伸缩组创建完成后,控制台会自动提醒是否启用该伸缩配置。如果我们希望直接启用,则点击“启用”即可完成配置。
创建伸缩规则
下面的一步是创建伸缩规则,我们需要告诉系统创建或者释放多少台机器,控制台界面如下。
ce67c5f8aa23b60a5b956e16dae0454a2fdeb28d
在该对话框中,我们需要输入如下信息:
规则名称:该伸缩规则特定的名称,例如“增加3台机器”或者“减少2台机器”。
规则:具体的规则,目前我们能够选择三种选项:调整至,增加和减少。调整至是让伸缩组的实例数调整至多少数量。增加是为伸缩组增加多少台机器。减少是从现有伸缩组减少多少台机器。
冷却时间:伸缩规则的冷却时间,缺省使用伸缩组的冷却时间。
在创建完成伸缩组、伸缩配置和伸缩规则后,下一步是配置定时任务或者报警任务来触
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)