1, 如果要通过命令行操作EC2,首先需要一台可以上网的电脑安装并配置好AWS CLI(https://aws.amazon.com/cn/cli/), 配置AWS CLI的时候需要AWS Access Key ID和Secret Access Key,这对密钥可以从AWS控制台得到。
以Linux为例,配置AWS CLI的步骤,这里的默认region选成了中国北京区。
[root@bjsconsole ~]# aws configure
AWS Access Key ID []: ****************
AWS Secret Access Key []: ***************
Default region name []: cn-north-1
Default output format [None]://如下对EC2操作也可以在WEB控制台中实现,也可以通过如下的命令行实现。//
2,通过命令行启动EC2虚拟机器,为了增加示例效果,我准备一个user-data的部分,它可以指定云主机在第一次启动的时候需要执行的脚本,我在AWSCLI本地放了一个文件my_script.txt,内容是一个yum命令。
[bjs@bjsconsole ~]$ cat my_script.txt
yum install telnet -y
3,通过命令启动2个EC2实例. 这里我跳过了创建相关的资源的步骤,大家可以在控制台里面找到相应资源的id,比如安全组,子网和placement group。
[bjs@bjsconsole ~]$ aws ec2 run-instances –image-id ami-3fe13752 –count 2 –instance-type c4.8xlarge –key-name mykey-zhenyong-private –region cn-north-1 –security-group-ids sg-efcac28d –subnet-id subnet-b2e6f2c6 –user-data file://my_script.txt –placement “{ \”GroupName\”: \”test\” }”
4, 可以通过AWS CLI命令或者API得到虚拟机的列表
[bjs@bjsconsole ~]$ aws ec2 describe-instances –filters “Name=instance-type,Values=c4.8xlarge” “Name=instance-state-code,Values=16” | grep InstanceId
5,分别为2台云主机创建磁盘EBS,设置磁盘的IOPS为20000,并把磁盘挂在到AWS的EC2上
第一台EC2
[bjs@bjsconsole ~]$ aws ec2 create-volume –region cn-north-1 –availability-zone cn-north-1b –size 400 –volume-type io1 –iops 20000
[bjs@bjsconsole ~]$ aws ec2 attach-volume –volume-id vol-0a6cfa07828f05ddf –instance-id i-04ec9cae4f402c8ed –device /dev/sdb
第二台EC2
[bjs@bjsconsole ~]$ aws ec2 create-volume –region cn-north-1 –availability-zone cn-north-1b –size 400 –volume-type io1 –iops 20000
[bjs@bjsconsole ~]$ aws ec2 attach-volume –volume-id vol-001a4156071f183a6 –instance-id i-0d75e9a4071ffbfc0 –device /dev/sdb
6,把互联网IP地址连接到云主机上。
[bjs@bjsconsole ~]$ aws ec2 associate-address –instance-id i-04ec9cae4f402c8ed –allocation-id eipalloc-dfe281e5
[bjs@bjsconsole ~]$ aws ec2 associate-address –instance-id i-0d75e9a4071ffbfc0 –allocation-id eipalloc-743b584e
7,登陆到云主机上,安装一些必要的软件,准备执行后续的操作。
[root@ip-10-128-2-224 ~]# yum install fio iperf -y –enablerepo=epel
//执行一些必要的性能检测//
8,网络性能检测,在一台云主机上执行iperf –s作为网络服务器。
[root@ip-10-128-2-224 ~]# iperf -s
9,另一台虚拟机上执行iperf –c, 检查网络带宽。
[root@ip-10-128-2-92 ~]# iperf -c 10.128.2.224
查看测试结果,这是两台c4.8xlarge的虚拟机,网络性能为10Gbps,可以看到网络带宽实测数据非常接近。
10,接下来在虚拟机上执行对磁盘的测试,先进行分区,然后创建文件系统
[root@ip-10-128-2-224 ~]# fdisk /dev/sdb
通过如上命令并根据提示创建sdb1分区。
[root@ip-10-128-2-224 ~]# mkfs.ext4 /dev/sdb1
对sdb1创建文件系统。
11,挂载设备到/mnt目录,通过ioping检查磁盘的延迟。可以看到延迟大约在300us(0.3ms)左右。
[root@ip-10-128-2-224 ~]# mount /dev/sdb1 /mnt/
[root@ip-10-128-2-224 ~]# ioping -c 10 /mnt/
12,使用fio进行磁盘压力测试,可以看到磁盘的IO性能非常稳定的在20000IOPS附近,带宽在340MB/s左右,注意,这是单盘的性能,通过增加EBS的数量,还可能增加并发的性能。
[root@ip-10-128-2-224 mnt]# fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=16k -size=10G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
12,使用cloudwatch取到EC2的监控数据。
[bjs@bjsconsole ~]$ aws cloudwatch get-metric-statistics –metric-name CPUUtilization –start-time 2017-05-24T04:00:0 –end-time 2017-05-24T04:35:0 –period 300 –namespace AWS/EC2 –statistics Average –dimensions Name=InstanceId,Value=i-04ec9cae4f402c8ed
== 其他参考==
启动EC2,指定使用EIP。
[bjs@bjsconsole ~]$ aws ec2 run-instances –image-id ami-3fe13752 –count 2 –instance-type c4.8xlarge –key-name mykey-zhenyong-private –region cn-north-1 –security-group-ids sg-efcac28d –subnet-id subnet-b2e6f2c6 –user-data file://my_script.txt –placement “{ \”GroupName\”: \”test\” }” –associate-public-ip-address
AWS账号对用户能够使用的资源默认有上限,通过如下命令可以查看你的服务限制是否已经到默认的上限:
[ec2-user@bjsconsole tools]$ aws support describe-trusted-advisor-check-result –language en –region us-east-1 –check-id eW7HH0l7J9
工单是用户寻求AWS技术支持的最常用渠道,除了人工在网站提交case给AWS之外,你也可以通过命令行提交工单,有了这个工具你甚至可以把你的监控报警和AWS工单对接起来。
[ec2-user@bjsconsole tools]$ aws support create-case –subject “Test” –service-code “amazon-cloudwatch” –communication-body “Test” –region us-east-1 –category-code “apis” –severity-code “low”
{
“caseId”: “case-936200357723-muen-2017-5e8e46d0d8557d0e”
}