标签: EC2

AWS EC2 可突增性能实例

 

可突增性能实例是唯一将积分用于 CPU 使用的实例类型。可突增性能实例(包括 T3、T3a 和 T2 实例)旨在提供基准水平的 CPU 性能,并且能够在您的工作负载需要时突增到更高的水平。可突增性能实例非常适合用于各种通用应用程序。包括微服务、低延迟交互式应用程序、中小型数据库、虚拟桌面、开发、构建和暂存环境、代码存储库以及产品原型。

CPU 积分和基准性能

传统 Amazon EC2 实例类型提供固定的性能,而可突增性能实例提供基准水平的 CPU 性能并能够突增到基准水平之上。如果你的实例CPU负载超过了基准性能,此时就会使用CPU积分,每个积分允许你一个vCPU利用率达到100%,运行一分钟;如果你的实例CPU少于基准性能(例如,处于空闲状态时),每小时也会获得一定积分,当然每个可突增实例的CPU积分累计也是有上限的,详见下面的表格。

何时使用无限模式与固定 CPU

下图显示了可突增性能实例t3.large 花费与固定性能实例m5.large 花费相同的收支平衡 CPU 使用率点。t3.large 的收支平衡 CPU 使用率点为 42.5%。

如果平均 CPU 使用率为 42.5%,则运行 t3.large 的费用与 m5.large 的运行费用相同,如果平均 CPU 使用率高于 42.5%,则t3.large费用更高。

如果工作负载需要低于 42.5% 的平均 CPU 使用率,您可以受益于 t3.large 的较低价格,同时获得与 m5.large 相同的性能。

 

Amazon EC2丢失密钥解决方法

AWS实例的密钥登录机制

AWS创建EC2实例时会生成一个密钥文件,有了这个密钥才能使用SSH登录实例,可以使用 AWSSupport-ResetAccess 文档在 Amazon EC2 Windows 实例上自动重新启用本地管理员密码生成,以及在 Amazon EC2 Linux 实例上生成新 SSH 密钥。

工作原理

使用自动化和 AWSSupport-ResetAccess 对实例进行故障排除的工作原理如下:

  • 您为实例指定 ID 并运行 Automation 工作流程。
  • 系统创建一个临时 VPC,然后运行一系列 Lambda 函数以配置该 VPC。
  • 系统在与您的原始实例相同的可用区内为您的临时 VPC 标识一个子网。
  • 系统启动一个临时的启用了 SSM 的 帮助程序实例。
  • 系统停止您的原始实例并创建备份。然后,它将原始根卷附加到帮助程序实例。
  • 系统使用 Run Command 在帮助程序实例上运行 EC2Rescue。在 Windows 上,EC2Rescue 通过在附加的原始根卷上使用 EC2Config 或 EC2Launch 为本地管理员启用密码生成。在 Linux 上,EC2Rescue 生成并注入新的 SSH 密钥并将私有密钥加密保存到 Parameter Store 中。完成后,EC2Rescue 重新将根卷附加回原始实例。
  • 系统根据您的实例创建新 Amazon 系统映像 (AMI),现在密码生成已启用。您可以使用此 AMI 创建新 EC2 实例,并根据需要关联新密钥对。
  • 系统重启您的原始实例,并终止临时实例。系统也将终止临时 VPC 和在自动化开始时创建的 Lambda 函数。
  • Windows:您的实例生成一个新密码,您可以使用分配给实例的当前密钥对从 EC2 控制台对该密码进行解码。

Linux:您可以使用存储在 Systems Manager Parameter Store 中的 SSH 密钥(格式为 /ec2rl/openssh/instance_id/key),通过 SSH 连接到实例。

使用AWSSupport-ResetAccess重置EC2(LINUX)密钥

  1. 使用CloudFormation创建角色

S3 URL: https://s3.amazonaws.com/awssupport-ssm.us-east-2/cfn/EC2Rescue/AWSSupport-EC2RescueRole.template

复制Output中的Value,这是后续AssumeRole 的 ARN

2、进入AWSSupport-ResetAccess

3、输入参数
InstanceID,指定无法访问实例的 ID
EC2RescueInstanceType,为 EC2Rescue 实例指定实例类型。默认实例类型为 t2.small
SubnetId,指定您指定的实例所在可用区中某个现有 VPC 的子网。
AssumeRole,从 CloudFormation 控制台复制的 AssumeRole ARN

4、执行自动化

5、检查结果


控制台显示执行成功,这时候去到Parameter Store,/ec2rl/openssh/instance_id/key就是连接到服务器的密钥,通过SSH就可以连接到服务器了。
 

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

一键启停EC2

EC2是AWS的虚拟主机。 比较常见的EC2的计费方式是按照实际使用时间计费。如果一个主机只需要每天白天使用10个小时,那么这个主机的费用将节省差不多50%。(停机的时候也会收取EBS磁盘的费用)

为了达到这个目的,需要让AWS每天早上执行一个定时任务,将符合条件的EC2筛选出来,并对这些EC2执行启动操作;每天晚上执行一个定时任务,将符合条件的EC2筛选出来,并对这些EC2执行关闭操作。

AWS的Lambda和CloudWatch Event满足的要求,但是对于大部分用户,配置Lambda和CloudWatch Event都存在一定的困难,为此我们准备了专门的CloudFormation自动化脚本。

特别需要指出的是,由于代码的原因,这个CloudFormation堆栈需要在东京区域创建。模板的地址是:

https://s3.awstweaker.com.s3-ap-northeast-1.amazonaws.com/onekey/EC2/managerEC2.json

参考下图,可以在创建堆栈的过程中通过参数配置所在的时区,希望的EC2启动和停止时间(本地时间),以及希望自动启停的EC2范围(EC2上的标记名称以及标记的Name)。

默认的选项表示,希望在北京时间早上8:00自动启动所有已经做了名为”Online”的tag,且该Tag的值为” DayofBeijingTime”的EC2实例,并在北京时间晚上22:00关闭这些实例。和其他的模板一样,依次点击下一步,同意创建IAM角色,大概1分钟后,所有的资源创建成功,自动启停的任务就部署成功了。

如附图所示在CloudWatch的界面可以看到相应的启动和停止规则。

最后,如果想调整自动启停的EC2的范围,只需要给EC2增加或者删除相应的标记就可以了。

定时启停实例

实现原理

在CloudWatch中创建规则用来定时调用lambda函数,lambda函数中编写启动和停止EC2实例的代码实现启动停止EC2实例。

实现前提和所创建的资源

要实现定时启停EC2实例需要CloudWatch规则来调用lambda函数启动和停止EC2实例,而lambda如果想要操作EC2 需要给lambda附加一个role 并要为role附加所需的权限。

综上创建的资源有:

  1. CloudWatch中创建了两个规则 StartInstanceStopInstance
  2. 四个分别用来启动和停止宁夏和北京区EC2实例的lambda函数 StopEC2InstancesStarEC2InstancesStopEC2InstancesForBeiJingStarEC2InstancesForBeiJing
  3. 一个用来附加到lambda函数的role lambda_stop_start_ec2_rol
  4. 一个包含启停实例所需权限的策略lambda_stop_start_ec2,并将该策略附加到所创建的角色

各资源配置

CloudWatch规则

资源用途

  1. StartInstance用来在每天6:00调用启动EC2实例的lambda函数StarEC2InstancesStarEC2InstancesForBeiJing
  2. StopInstance用来在每天20:30调用停止EC2实例的lambda函数 StopEC2InstancesStopEC2InstancesForBeiJing

如何修改

  1. 想要修改EC2实例启停时间只需要修改CloudWatch规则的Corn表达式即可,Cron的具体格式可参考官方文档:https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/events/ScheduledEvents.html

此处一定注意!!!cron 使用的时间是UTC时间!环境是我们国内的话,时间要以当前北京时间-8:



  1. 规则只有在启用状态才会执行进行启用和禁止操作可以实现对规则的启用和停止。当前是禁止状态:

Lambda函数

资源和当前代码规则

  1. StopEC2Instances :stop宁夏区中具有特定标签(key:online value:day)且实例状态为running的EC2实例
  2. StarEC2Instances :启动宁夏区中具有特定标签(key:online value:day)且实例状态为stopstopped的EC2实例
  3. StopEC2InstancesForBeiJing :stop北京区中具有特定标签(key:online value:day)且实例状态为running的EC2实例
  4. StarEC2InstancesForBeiJing :启动北京区中具有特定标签(key:online value:day)且实例状态为stopstopped的EC2实例

函数代码修改

1.如果不想用key:online value:day的标签想用其他的标签则需要修改lambda函数代码(注意四个函数都要修改)点击要修改的lambda函数名找到函数代码部分如下图:

修改完点击保存。

IAM role和策略

  1. Role: lambda_stop_start_ec2_rol lambda所需的角色
  2. 策略lambda_stop_start_ec2:配置有lambda操作EC2所需的权限

直接启用

如果每天6:00启动20:30停止具有特定标签(key:online value:day)的EC2实例符合你的需求需要进行如下操作来启用:
1. 为要实现自动启停的实例配置标签且标签的key必须是online,value必须是day 如图:

2. 启用CloudWatch 规则:

 

巧用EC2“本地存储”

Amazon Web Services的用户大多知道,EC2的类型很多。其中m5d、r5d等类型的,跟对应的m5、r5系列有什么区别,知道的人可能少一些。不过看了本文标题也会猜到,这些机型是带有一定容量的本地存储的。按aws不太接地气的用词,叫做实例存储

大家知道,EBS其实不是EC2所在服务器的本地盘,而是从大的分布式存储中划出来、通过网络连到EC2所在服务器的,八成是采用iSCSI等协议映射成EC2的块设备的。好处是独立于特定服务器,这样EC2才可以在不同服务器、甚至不同的机房和机楼之间方便地飘移。

凡事有利就有弊。大家知道,从磁盘上读写大文件有时很占资源,衡量存储性能的最主要指标是吞吐量和IOPS。EBS模式下这俩指标不只取决于磁盘本身、也受网络带宽和波动的影响,而且是受最差的影响。

而所谓的实例存储,就是EC2所在服务器上插着的磁盘,所以性能表现不受网络影响。但是EC2飘走后磁盘带不走,这就是这类存储关机就丢失的内在原因,因为下次开机不见得还跑在原来的服务器上。

这个道理专业IT人员容易理解。一般情况下,EBS跟服务器之间是高速专有网络,网络不一定会成为存储性能瓶颈。所以大多数实际使用场景中,用户对两者的性能差别没什么感觉。但是笔者最近调测一个程序,需要多次顺序读写和处理好几T的文件,执行一遍要等半天,比较痛苦。而且同样数据、同样程序,不同时候执行感觉时快时慢的。这个EC2是东京区域的,初步怀疑受到了同AZ内其他租户业务忙闲的影响。

于是我修改了实例类型,从r5.large改成了r5d.large, 并在操作系统内对本地磁盘创建分区、文件系统,并挂载到程序访问的数据目录。再次跑程序,发现性能还是有明显改善的。

从价格看,带d的系列比不带d的贵不了多少。我的程序输入输出数据都在S3上,本机不需要永久保存数据,EC2跑完程序就会关机。这种情况下采用带d的机型,不但可以提高性能、缩短运行时间,而且关机后也无需为数据盘付费,是个少有的双份好处、没有坏处的选择,推荐给大家参考。

实例存储与 EBS 之间有何区别?

实例存储(Amazon EC2 instance store)User Guide

使用CloudWatch一键监控所有EC2实例

使用 CloudWatch 可以轻松监控 AWS 资源和应用程序。它与 Amazon EC2、Amazon DynamoDB、Amazon S3、Amazon ECS、Amazon EKS 和 AWS Lambda 等 70 多种 AWS 服务原生集成.

利用CloudWatch可以深入了解相关内容的日志,比如监控每台EC2实例的CPU使用率、磁盘吞吐量、网络带宽等信息,同时我们可以对每个资源的监控指标设置警告,及时发现资源运行中的异常。

如果我们有几十上百个甚至更多的实例,为每一个实例分别设置告警的工作变得非常困难,那么能否设置一个警告,对所有实例的相应监控指标进行统一监控呢?答案当然是肯定的,

我们可以通过对聚合统计数据设置告警来实现以上需求。

接下来我们将创建一个聚合统计数据告警,监控所有EC2的CPU利用率,当任何实例的CPU利用率超过90%则会告警。

步骤如下:

1、开启详细监控生成聚合统计数据

每个监控指标都有不同的维度,只有开启EC2的详细监控的实例才能以维度生成聚合统计数据,默认情况下EC2的监控间隔为5分钟,开启详细监控后监控间隔会缩短到1分钟,可以在创建EC2时开启详细监控,也可以在实例的监控界面修改既有实例的监控粒度。开启方式如图:

创建EC2时开启详细监控

开启既有实例的详细监控

2、创建警报

Cloudwatch—警报—点击创建警报—选择指标—EC2—跨所有实例—CPU利用率—选择指标

创建警报

选择指标

注意要将统计数据修改为最大值,默认为平均值。 你也可以根据自己的需求设置为最小值或P99、P95等。

修改统计方法

设置告警阈值为80%

配置通知方式—设置名称—下一步—创建警报

设置名称

创建警报

完成

3、测试效果

我们创建两台实例,对其中的一台进行压力测试,将CPU利用率占用到100%。

观察告警情况。

加压的实例

没有压力的实例

我们看到警报已经被成功触发了。

AWS实用工具指南–MobaXterm

EC2是AWS中用量最大的服务。基本上每一个AWS用户都会使用EC2,今天我们推荐一款可以方便的远程访问EC2的工具:MobaXterm。

关于MobaXterm

MobaXterm是一款Windows平台的功能强劲的远程访问工具。MobaXterm有免费版和商业版,使用免费版,就能够满足我们远程管理EC2服务器的各种需求。

下载安装

MobaXterm的官方网站是https://mobaxterm.mobatek.net/ , 在这个网站中,可以轻松的找到 MobaXterm的下载地址。

目前,MobaXterm的版本是12.1,我们推荐使用Portable版本。也就是免安装单文件版本。对应的下载地址为

https://download.mobatek.net/1212019080215819/MobaXterm_Portable_v12.1.zip

下载完成后,直接点击解压缩就可以使用了。为了方便,还可以在桌面创建快捷方式。

主要功能

MobaXterm主要功能

从图中可以看到,MobaXterm提供了非常丰富的连接方式支持。不仅包括常见的SSH,Telnet,X-Windows,Windows远程桌面,VNC,FTP,SFTP,串口,还支持微软新推出的WSL, S3,甚至可以模拟不同版本的IE浏览器。

连接EC2的Linux实例

在MobaXterm可以直接使用私钥连接EC2实例。例如,假设某个EC2的IP地址是13.125.72.134,使用的秘钥是soul.pem。那么在MobaXterm中只需要设置一下IP地址,本地私钥的路径和用户名,就可以直接访问 EC2实例了。

连接配置

特色功能

MobaXterm提供了很多实用的特色功能,下面我们将简单介绍其中的几个。

SFTP

在日常的运维中,经常需要在服务器和本地之间上传和下载文件。针对这个需求,MobaXterm提供了一个非常实用的侧边栏文件服务功能。参考附图,当连接到服务器之后,终端窗口的左侧会有一个对应的文件窗口。这个窗口的操作就和FTP客户端一样,可以直接通过拖拽上传和下载文件。特别值得一提的是,在这个窗口下方还有一个特殊的选项,follow terminal folder。勾选上这个选项后,如果在终端中切换目录,左侧的文件窗口也会一起进行目录切换。例如,如果在终端窗口中输入 cd /var,进入/var目录,那么左侧的文件窗口也会自动的切换到/var目录,十分的方便。

文件窗口

录制宏

MobaXterm另外一个特色功能是录制宏,打开录制宏功能后,MobaXterm可以直接记录用户在终端所有的操作。用户还可以方便的对记录好的宏进行编辑、重新执行等操作。

宏管理

分屏展示

在系统维护过程中,另外一个常见的场景是一边查看运行日志,一边运行其他命令,这个时候就需要打开多个窗口。MobaXterm提供了非常方便的分屏展示功能,主要点一下split就可以实现多个终端窗口的分屏显示。

在 MobaXterm另外一个特色功能是录制宏,打开录制宏功能后,MobaXterm可以直接记录用户在终端所有的操作。用户还可以方便的对记录好的宏进行编辑、重新执行等操作。

分屏展示