亚马逊云教程6:创建、启动AMI,设置Cloud Watch

概要:创建亚马逊云服务器快照,从快照启动EC2服务器,设置云监控闹钟

读者:需要升级亚马逊云服务器、计划在云上做大规模计算的朋友

时间:1500字,阅读3min,操作5min

前提:亚马逊云教程1:创建并连接EC2

当使用一台服务器一段时间之后,我们一般都安装了很多软件,配置好了很多环境,这就像我们建了一栋房子,里面的客厅厨房卧室的布置都设置好了。但是之后我们想升级一下我们的服务器,或者创建很多个一模一样的服务器,这是我们可以使用亚马逊云AMI快照服务。就类似我们想把一个房子移动的地段更好的地方,或者再建立很多栋这样的房子,此时我们只需要有原来房子的图纸就可以很快完成了。AMI就像房子的图纸一样,里面记载了原服务器所有的配置信息。

创建AMI快照

创建AMI时,推荐先在EC2控制台关闭(Stop)服务器。然后右键点击服务器"Image -> Create Image"。在“Image name”那里,输入快照的名字,可以记录有哪些主要功能,或者其他一些标志性的词语,比如使用“jupyter TensorFlow”。Image description可以输入一些具体的描述,如“jupyter notebook, conda, tensorflow”等,也可以留空。然后点击右下角的Create Image创建快照。

这时我们点击EC2控制台左侧“IMAGES”栏目下的“AMIs”,在右边可以看到我们刚刚创建的AMI快照。有一列是“Status”,状态,如果是刚刚创建的,会显示为“pending”,等待创建。快照的创建需要AWS后台处理一段时间。我们可以刷新页面看看变化,等状态变为“available”,可用,就意味着创建好了。

从AMI启动EC2实例

后面的操作会产生费用,详情请查看AWS价格页面。

我们可以右键点击这个快照,选择“Launch”,来启动一台新的服务器。在“Step 2: Choose and Instance Type”这里,我们选择“c4.large”,c系列是针对计算性能优化过的类型。然后一路下一步到“Step 6: Configure Security Group”,“Add Rule”,“Custom TCP”后面添加9999这个端口,因为我们的jupyter服务器之前是设置的9999端口,“Source“后面输入”0.0.0.0/0“选择所有地方(当然也可以输入你的本地机器的IP,这样服务器安全性更高)。然后一直下一步创建服务器。在”Select an existing key pair or create a new key pair“中,因为快照里面已经有我们本地的ssh密钥对中的公有密钥了,所以我们可以选择"Proceed without a key pair",当然也可以选用已有的密钥对或者新创建一个。

稍等片刻,等到新创建的EC2实例的public ip显示出来之后,我们就可以开始使用它了。如果我们成功登录服务器,并且里面的文件和软件都是完整的,就说明我们的AMI是正常工作的。这时我们就可以删除(Terminate)之前的那个EC2实例了,在每次计算完毕,下载了计算结果之后,也可以立马删除那台服务器,因为我们只要有AMI,就可以在每次要计算的时候,才新建EC2实例。这样产生的费用更低。

我们可以再次运行之前的MNIST机器学习实例。

运行jupyter notebook服务器。

roden@ip-172-31-23-3:~$ cd tf_notebook/
roden@ip-172-31-23-3:~/tf_notebook$ nohup jupyter notebook &
[1] 1452
roden@ip-172-31-23-3:~/tf_notebook$ nohup: ignoring input and appending output to 'nohup.out'

roden@ip-172-31-23-3:~/tf_notebook$

浏览器进入到jupyter notebook,打开之前创建的笔记本,然后依次点击”Cell -> Run All“。应该能感觉到这次的运行速度比之前快一些,因为我们使用的服务器的配置比之前要好一些。测试完毕后(如果只是学习AMI的使用的话,不需要等到MNIST运行完毕),我们可以关闭或删除这台服务器。

删除AMI

如果我们要删除一个AMI,我们需要在“AMIs”中,右键,然后选择“Deregister”。因为AMI是以快照的方式存储的,我们还要在“ELASTIC BLOCK STORE”栏目下面的“Snapshots”中,找到那个AMI对应的Snapshot,如果有多个Snapshot的话,我们可以通过Description中的ami ID来辨识谁和谁对应。然后再删除这个Snapshot。这个AMI就彻底删除了。

设置云监控闹钟 CloudWatch

当我们使用的服务器配置比较好时,价格也相应的高,所以我们不希望它会空载,也就是服务器出于开机状态,但是需要大量计算的程序已经运行完了。可是大量的计算会需要一段时间才能完成,我们并不是每时每刻都守在服务器上的。这时我们可以使用AWS的CloudWatch服务来设置闹钟,当CPU的使用率持续低于一定值时,我们就关闭这台服务器。下面是设置闹钟的步骤。

在EC2控制台中,右键选择一台服务器,”CloudWatch Monitoring -> Add/Eit Alarms -> Create Alarm“。第一次创建闹钟时,需要”create topic“。需要输入一个闹钟主题,和收件人,闹钟的通知是以邮件的方式发送的。主题不能有空格,比如我们把Topic可以设置成”Turn_off_EC2“,然后输入自己的邮件。

配置闹钟

  1. 在”Take the action“里面,选择”Stop this instance“。
  2. 后面默认是Whenever "Average" of "CPU Utilization",保持默认。
  3. 后面设置成 Is: "<" 10 Percent。当然我们也可以设置成其他百分比。在左下角有示意图显示我们设置的位置,和当前服务器的CPU使用率。
  4. For at least: 12 consecutive period(s) of "5 Minutes"。也就是说,每5分钟计算一次CPU的平均使用率,如果连续12次检查,也就是一个小时,都低于10%,就停掉这台服务器。
  5. Name of alarm可以改为”Stop EC2 if CPU < 10% for 1h“这样形象一点的名字。
  6. 然后点击"Create Alarm"。

这样我们的闹钟就设置好了,如果是第一次设置的话,还需要查收邮件,验证一下邮件地址。

推荐阅读

  1. 亚马逊云教程7

集锦卡

  1. 创建AMI。
    1. 右键点击服务器"Image -> Create Image"
    2. “Image name”自定,如“jupyter TensorFlow”
    3. 右下角的Create Image创建快照。
    4. EC2控制台左侧“IMAGES”栏目下的“AMIs”查看所有快照。
  2. 启动AMI
    1. 右键点击快照,选择“Launch”。
    2. 在“Step 2: Choose and Instance Type”这里,选择需要的类型,如,“c4.large”。
    3. “Step 6: Configure Security Group”,“Add Rule”,添加必要的端口。
  3. 设置云监控闹钟CloudWatch
    1. 右键选择一台服务器,”CloudWatch Monitoring -> Add/Eit Alarms -> Create Alarm“
    2. 第一次创建闹钟时,需要”create topic“。需要输入一个闹钟主题,和收件人。之后收件人要验证邮件。
    3. 配置闹钟
      1. 在”Take the action“里面,选择”Stop this instance“。
      2. 后面默认是Whenever "Average" of "CPU Utilization",保持默认。
      3. 后面设置成 Is: "<" 10 Percent。
      4. For at least: 12 consecutive period(s) of "5 Minutes"。
      5. Name of alarm可以改为”Stop EC2 if CPU < 10% for 1h“
      6. "Create Alarm"

本文于2017-06-12发布于个人博客,现原文搬运于此,如有过时信息,欢迎指正。

你可能感兴趣的:(亚马逊云教程6:创建、启动AMI,设置Cloud Watch)