分类目录归档:EC2

常用AWS命令行汇总(awscli)

创建一个Key,查看内容并生成pem文件。

aws ec2 create-key-pair --key-name MyCypayTestCalifornia --query 'KeyMaterial' \
 --output text > MyTestCalifornia.pem

创建一个VPC安全组

aws ec2 create-security-group --group-name MyCATest --description MyCATest \
--vpc-id vpc-efxxxx8a

列举当前安全组名称和ID

aws ec2 describe-security-groups  --query SecurityGroups[*].[GroupName,GroupId,VpcId]

添加安全组规则

aws ec2 authorize-security-group-ingress --group-id sg-d1xxxxb4 --protocol tcp \
--port 22 --cidr 202.x.x.120/29  --protocol tcp --port 8080-8082 --cidr 10.10.0.0/16 \
--protocol tcp --port 80 --cidr 0.0.0.0/0

查看当前安全组规则

aws ec2 describe-security-groups --group-ids  sg-d1xxxxb4

创建实例

aws ec2 run-instances --image-id ami-7axxxx3f --count 1 --instance-type t1.micro \
--key-name MyTestCalifornia --security-group-ids sg-dxxxxbb4 \
--placement AvailabilityZone=us-west-1c --subnet-id subnet-5exxxx3b \
--block-device-mappings "[{\"DeviceName\": \"/dev/sdf\",\"Ebs\":{\"VolumeSize\":100}}]"\
--user-data  "/sbin/mkfs.ext4 /dev/xvdf && /bin/mount /dev/xvdf /home"

##注释
--image-id 指定AMI ID
--key-name 可选,登录服务器用
--placement AvailabilityZone=us-west-1c  选择AZ,此项可选,有默认值
--block-device-mappings "[{\"DeviceName\": \"/dev/sdf\",\"Ebs\":{\"VolumeSize\":100}}]"
再额外加100G的EBS磁盘,记得在powershell或者在CMD下双引号需要转义
如果size大于快照大小,需要开机后用resize2fs命令在线动态扩展文件系统
size小于快照中的大小则不生效,按照快照中的磁盘大小创建
--user-data  "/sbin/mkfs.ext4 /dev/xvdf && /bin/mount /dev/xvdf /home"  
指定开机初始化脚本,可用file://xxxx.sh 来指定网络或者本地文件

给实例打标签

aws ec2 create-tags --resources i-3xxxxb6d --tags Key=Name,Value=APITest \
 Key=PROJECT,Value=cypay

创建个EIP

aws ec2 allocate-address --domain vpc
{
   "PublicIp": "54.x.x.12",
   "Domain": "vpc",
   "AllocationId": "eipalloc-axxxxxcd"
}

将VPC中的EIP与VPC中的实例关联

aws ec2 associate-address --instance-id i-3xxxxx6d --allocation-id eipalloc-afxxxx8cd

此时可以ssh链接自己的实例

ssh -i MyTestCalifornia.pem  ec2-user@54.x.x.12

列举出所有用户和他的AccessKey ID

aws iam list-users --query 'Users[*].[UserName,CreateDate,UserId]' --output table

列举出当前实例的相关信息

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, \
 Placement.AvailabilityZone, State.Name,  InstanceType, PublicIpAddress, \
PrivateIpAddress, Tags[0].Value, Tags[1].Value]' --output text

Windows Server 2012 R2实例重启后失去网络连接或者EBS消失的问题

2014年9月10日之前使用Windows Server 2012 R2 Amazon Machine Images (AMI) 创建的实例,部分发现重启后额外的EBS磁盘消失或者有的实例起来后失去网络连接。

这是因为Windows Server 2012 R2的即插即用(Plug and Play)功能会每30天扫描机器上的不活跃设备,并自动移除这些不活跃设备,EC2的网络设备就被误认为是这样的设备,因此额外的EBS就有可能被自动移除了,重启后系统分区EBS也被移除了,也就彻底失去网络连接了。

解决办法下:
(1)如果机器还能远程连接上去,但是额外的EBS磁盘没了。
下载http://ec2-downloads-windows.s3.amazonaws.com/Scripts/RemediateDriverIssue.zip,用powershell执行脚本修复问题
(2)如果机器重启了,已经连不上去了,那就关机,修改实例类型,再开机,这时候实例能连上去,但是额外的磁盘没了。登上去修复问题。下载http://ec2-downloads-windows.s3.amazonaws.com/Scripts/RemediateDriverIssue.zip 修复补丁,解压后用powershell执行脚本。然后从添加删除组件中卸载 aws pv drivers 并重启,再下载https://s3.amazonaws.com/ec2-windows-drivers/AWS+PV+7.2.0/MicrosoftSigned/Installer/AWSPVDriverPackager.exe新版的安装,安装后重启,重启后再次执行RemediateDriverIssue.zip修复脚本。
检查日志,出现如下字段,代表修复完成:

20141016_0838:39+00 INFO : Scheduled task Plug and Play Cleanup is already disabled.
20141016_0838:40+00 INFO : This machine was found to be in a non-impacted state. At this time it is OK to perform all instance actions including reboot, stop, start and resize.

新EC2实例类型t2

以前一直有个特殊的实例类型t1.micro,说是计算单元为1ECU,但是能burst到2ECU,说是适合平时使用率较低、偶尔使用率高的场景。昨天AWS发布了3款t2类型的新实例,将这种能burst的特性发挥到变态的极致。

t2实例解析,以Virginia节点为例
Type vCPUs Baseline Performance RAM(GiB) CPU Credits / Hour monthly cost 对应旧款类型 对应旧款月费用
t2.micro 1 10% 1 6 $9.50 t1.micro $ 14.64
t2.small 1 20% 2 12 $19.00 m1.small $ 32.21
t2.medium 2 40% 4 24 $38.00 m1.medium $ 63.69

Baseline Performance,是指平时低使用率时虚拟CPU核心所拥有整个实体CPU核心计算能力的百分比,例如t2.medium,40%是说在不burst的时候,一个vCPU最高拥有底层一个实体CPU核心计算能力的40%。当这些计算资源不够用的时候,CPU能burst到更强的计算能力,不再继续需要更强的计算能力时,它会自动降会到原来的Baseline performance,而且这种降级是逐渐的降,以最大程度减小对业务的影响(15分钟小降一次,直到降会Baseline)。

RAM,这一代的实例,内存终于是整数了,不再是坑爹的3.75G或者620MB了,而且t1.micro内存慷慨的给到了1GiB,注意GiB是1024进制的,而GB是坑爹的1000进制。

Network Performance,创建实例的时候,就会发现,这三个新类型的网络性能都是low to moderate,burst的时候跟m3.medium一个级别,t2.micro也不再是t1.micro那种坑爹的very low了。

CPU Credits / Hour,是指每小时低使用率时所积攒的CPU绩点,1个绩点允许你拥有整个底层实体CPU计算能力的1分钟时间,这样的话,t2.micro平时CPU使用率没超过100%时(没超过按照底层实体CPU一个核心计算能力10%预留给你的计算能力时),它每小时就能积攒6个绩点,这样10个小时后,这个实例就能有机会独占1个实体CPU核心跑一个小时了。注意Credit不使用的话,最多只能保留24小时,这样不同级别实例能保留的Credits数也有上限(CPU Credits per Hour * 24 hours)。还有个特点需要注意,该实例关机后再开机,之前积累的Credit也没了,terminate之后同样也肯定没了。但是重启还在。
实例在创建之初,AWS就给了一些CPU Credits,使你在开机的时候做初始化的时候,CPU能力是最强的。这点从CloudWatch上能看到,我稍后展示。

价格,对比对应的旧款,便宜了40%左右,注意新款t2实例不能使用instance storage,只能使用EBS,包括新款的SSD的EBS。

其他变化,在实例的monitoring里多了两个metrics,  CPU Credit Usage实例已经使用了的CPU绩点、和CPU Credit Balance实例积累的CPU绩点。我们在CloudWatch中把这两个Metrics放在一个图中看。
 
t2.micro       
蓝线是实例积累的CPU credits,橙线是使用了的CPU Credits

注意看最开始的时间,也就是实例创建的时间,蓝线不是从0开始的,它初始就有30个CPU Credits的样子,不过我没怎么用。之后后来编译几个软件的时候才开始消耗CPU Credits,编译完之后,CPU Credits又开始积累了。

使用场景
这类实例的特点就是可以将平时空闲的CPU资源积累到需要的时候使用,比较适合平时使用率较低,有时候又需要较多的计算资源的场景。如果你发现自己的实例几乎剩不下什么CPU Credits,那说明该升级实例配置了。反之,如果CPU Credits一直处于没机会使用的状态,那该考虑降级实例了。比较适合开发、测试、以及业务量平时很小但偶尔有突发的场景

注意事项:
这类实例都是只支持HVM虚拟化方式的,之前PV虚拟化的AMI都用不了了,例如本网站,从t1.micro迁移到t2.micro,就得完全重搭。建议将业务AMI都更换成HVM的,毕竟HVM支持所有新出的实例类型,而PV只支持部分旧款的类型。
这类实例不支持Instance Storage。

 

关于存储优化型实例和大型数据仓库EC2实例选型

介绍些存储型实例的特性,以及大型数据仓库和大型NoSQL搭建在EC2实例上该如何选型
下表是存储型实例的配置:

Size

ECUs

vCPUs

Memory (GiB)

Instance Storage (GB)

EBS-Optimized Available

Network Performance

hi1.4xlarge

35

16

60.5

2 x 1024 (SSD)

不支持

10 Gigabit

hs1.8xlarge

35

16

117

24 x 2048

不支持

10 Gigabit

存储优化型实例提供与实例直接相连的存储,既保证了较高的IO性能要求,又满足大量的存储要求,推荐作为数据库使用。

(1)hi1.4xlarge提供16个虚拟核心60GB内存,总共拥有35个计算单元,另外还提供2x1TBSSD实例存储,网卡是10Gbps,推荐作为大型NoSQL数据库使用

因为网卡是10Gbps,所以EBS优化选项就没必要了。这种类型拥有非常快的本地存储,加上大量内存和10Gbps的网卡,推荐作为NoSQL数据库使用,它提供非常高的随机读写和较低的延时(因为SSD是本地的实例存储,读写延时都比较低,唯一的隐患是实例存储数据再掉电之后会清空,重启时不会,真的需要关机再开始的时候,我们可以将数据备份到EBS,或者快照)。hi1实例可以提供2GB/s 2MB块的顺序读性能,和1.1GB/s 2MB块的顺序写入性能,4KB块大小的情况下,提供120000随机读IOPS表现,和10000~85000随机写IOPS表现(具体数值取决于具体的逻辑块寻址)

(2)hs1.8xlarge提供117GB内存和24TB存储,适合做大型数据仓库或并行文件系统

Hs1.8xlarge实例提供跟hi1.4xlarge相同的计算能力,每个虚拟核心是Intel Xeon E5-2650CPU的一个超线程,但内存增加至117GB,本地存储虽不是SSD,但容量更大,提供24x2TB的本地实例存储。网卡也是10Gbps, 可以提供2.4GB/s 2MB块的顺序读性能,和2.6GB/s 2MB块的顺序写入性能

(3)另外一种较为廉价的选择就是选择一款内存和CPU都比较合适的EC2实例类型,然后选择EBS优化选项(EBS-Optimized),这样EC2实例到EBS卷的IO通道就是专用通道,更快更稳定。然后选择预设IOPS的EBS卷,目前单块EBS卷最高IOPS为4000。我们可以使用6~7块IOPS为4000的EBS卷做raid0(striping)以获得更高的IOPS表现,raid1不用做了,因为EBS底层就有冗余,基于快照恢复也比较快。

下次做个EBS-Optimized EC2实例加7块4000IOPS的EBS的IO性能测试再分享数据给大家。

关于ECU(弹性计算单元)

ECU(弹性计算单元)是AWS用来衡量实例计算能力的元单位,粗略来说每个ECU相当于一个1.2GHz 核心CPU计算能力
每种系列的实例底层锁采用的CPU型号不同,因此即使同样是双核(2 vCPU)他们所具有的计算能力也有不同

例如:
m1系列底层CPU,亚马逊方面只给出是Intel Xeon processors,并没有给出具体型号;
m3系列给出具体CPU型号为Intel Xeon E5-2670,m3系列每个vCPU的是英特尔至强E5-2670处理器的一个硬件超线程
c3类型的底层CPU为Intel Xeon E5-2680v2 ,c3系列每个vCPU的是英特尔至强E5-2680v2处理器的一个硬件超线程,所以我们可以看到同样是一个虚拟CPU核心,c3系列比m3系列所含ECU多,计算能力也更强;
m2,c1系列亚马逊也未给出具体CPU型号