AWS如何配置自动定量来实现高可用的弹性计算服务

  介绍

这期内容当中小编将会给大家带来有关AWS如何配置自动定量来实现高可用的弹性计算服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

先验知识

AWS是亚马逊云计算平台。

EC2是AWS提供的云主机,一般采用基于Linux CentOS的亚马逊系统,像大多数云主机一样使用。

ELB是AWS提供的负载均衡服务,可以将请求转发到目标组中的某个EC2实例,也会对目标组实例进行健康检查,只将请求转发到健康的实例。

目标

AWS自动定量服务允许我们设定自动定量组(ASG) .ASG维护了一组EC2实例,EC2实例可以分布在不同的可用区里以保证可用性.AutoScaling能检查实例健康状况,自动替换不健康的实例,能根据特定规则增减需要的实例数量,并能在启动,销毁EC2实例时触发事件调用其他服务.AutoScaling服务能够与ELB弹性负载均衡服务结合使用,实例不需要公网IP,而且实例在启动后会自动加入ELB的目标组,在终止实例前会先等待ELB连接耗尽。

我们要实现的结构如图所示:

 AWS如何配置自动定量来实现高可用的弹性计算服务

看上去梦寐以求,但用起来却没有这么舒服。

给ASG创建EC2的启动配置

我们需要给ASG提供启动配置(启动配置),启动配置里指定了EC2的实例类型,AMI镜像,存储设备,我角色,SSH密钥,用户数据(用户数据)等一系列信息,用于启动新实例。

我们主要关心我角色和启动脚本,其他的按需配置。

用户数据实际上是启动脚本,当EC2实例启动时,在初始化的最后以根身份将用户数据作为脚本执行。你可以登录实例,在<代码>/var/log/cloud-init-output。日志日志尾查看其输出。

因为每次修改启动配置都需要重新创建ASG,而这就需要清空实例等十分繁琐,所以最好将用户数据设置为从外部获取真正的启动脚本来运行,以便修改调试:

 # !/usr/bin/env  bash
  aws  s3  cp  s3://桶/key /tmp/myscript.sh ,,
  chmod  + x /tmp/myscript.sh ,,/tmp/myscript。sh 

这需要给EC2的我角色允许S3访问权限。

创建ASG

我们根据启动配置创建ASG,设定最低,最高,所需的实例数量,将实例连接到特定的ELB目标组,以ELB的健康检查作为ASG中实例的健康依据等等。

不健康的实例在健康检查失败且等待超时后将被终止。具体请参考ASG中实例的运行状况检查。

ASG中实例的生命周期

ASG中实例有生命周期的概念,也就是实例有一个状态,并在不同的状态间转移。

ASG中实例的生命周期如图所示:

 AWS如何配置自动定量来实现高可用的弹性计算服务

<编辑>生命周期钩子

在启动的等待和终止的终止状态均可以添加钩子,钩子会触发事件,并等待事件完成再进入下一状态(当没有钩子时实例会自动跳到下一状态)。钩子能设置超时时限,超时结果。

可以使用aws-cli或AWS SDK等主动完成生命周期事件,或延期它。事件完成需要提供结果,主动完成和超时均有“继续”和“放弃”两种结果可选。

可以给启动或终止阶段添加多个钩子,他们会在上一个钩子完成且结果为“继续”后依次执行。在启动阶段一旦出现“放弃”的结果后,实例会跳过其他钩子,直接开始终止过程,这也会触发终止阶段的钩子;在终止阶段出现“放弃”的结果后,实例会跳过其他钩子,直接终止。

<编辑>添加钩子

使用<代码> AWS自动定量put-lifecycle-hook 命令添加沟子,有两种可选的过渡值:

<李>

<代码>自动定量:EC2_INSTANCE_LAUNCHING 实例启动时

<李>

<代码>自动定量:EC2_INSTANCE_TERMINATING 实例终止时

下面这个命令的例子演示了添加“启动时钩子,超时时限600年代,超时后放弃该实例”:

 aws  autoscaling  put-lifecycle-hook  \
  ,,,,auto-scaling-group-name  $ {ASG} \
  ,,,,lifecycle-hook-name  ${钩}\
  ,,,,lifecycle-transition “自动定量:EC2_INSTANCE_LAUNCHING" \
  ,,,,heartbeat-timeout  600 \
  ,,,——default-result “ABANDON" 

如果使用了下文的SNS或SQS接收事件,还需要提供<代码> role-arn 和<代码> notification-target-arn .AWS提供了比较完整的文档添加生命周期钩子来讲述这一过程。

AWS如何配置自动定量来实现高可用的弹性计算服务