+86 13541016684Mon. - Fri. 10:00-22:00

EC2(AWS)配置升级教程

EC2(AWS)配置升级教程

EC2(AWS)配置升级教程

随着公司网站的请求量不断增长,作为公司图片服务器的EC2的负载日益增高。load average经常能够达到>3的水平。CPU负载也经常会达到>80%,所以需要对服务器进行一些配置上的升级了。

20160405111140
4月1日进行的配置升级,升级前CPU的占用率甚至到达过97%

于是,我们就开始跟着官方文档的说明开始升级AWS配置。在这个文档里,主要说了三件事:

  1. 升级配置需要关机
  2. EBS volume(EBS卷)才可以直接升级,如果是instance store volume(实例存储卷),则升级的同时会抹掉其中的数据,所以要事先备份
  3. 如果是Public IP(公共IP),则实例升级后将会更换IP;如果是Elastic IP(弹性IP),则升级后可以重新将实例与弹性IP绑定,这样IP就不会更换。

先解释以下以上信息中的几个名词:

卷类型:EBS卷,实例存储卷。这个是在创建实例的时候确定的,一般来说像AWS提供的T2, M3, M4, C2 等等这些实例要么是默认EBS卷,要么是强制EBS卷,所以都可以直接升级。具体确定可以在EC2控制面板页面左侧选项中选择INSTANCES -> Instances -> 选中你的实例 > Description,这里的信息中有一条是Root device type,如果显示ebs,则为EBS卷。

IP类型:公共IP,弹性IP。实例创建后,都会自动分配一个公共IP,所以不做配置的情况下是只有公共IP的。如果购买了弹性IP,则需要在升级实例后在NETWORK & SECURITY -> Elastic IPs页面重新绑定IP和实例。

对于这次升级,公司的服务器是使用的M3.large型号,没有配置弹性IP,额外挂载了一个500G的外部存储磁盘。考虑到实际情况,最后的升级方案是:

  1. 将实例从M3.large升级到M3.xlarge
  2. 升级后IP被替换,需要重新在CloudFlare中绑定IP
  3. 重新挂载500G的外部存储磁盘

20160405120400

下面开始执行升级:

首先,为了防止在备份过程中出现意外导致数据丢失,先对数据进行备份(磁盘快照)。选择ELASTIC BLOCK STORE -> Volume,选择系统磁盘创建快照。由于500G的磁盘只是卸载和挂载操作,所以就不备份了。

备份完成后,在Instances中选中我们需要升级的实例,Actions -> Instance State ->  Stop。关机后,再选择Actions -> Instance Settings -> Change Instance Type,选择需要升级到的实例配置,重新启动。这个选项在机器没有关机时候是灰色不可选状态,所以升级需要关机。

20160405122229

重新启动后,实例升级就已经完成了。现在还需要做两件事:1. 挂载外部存储磁盘;2. 修改DNS解析中使用的服务器IP。

我们先进行磁盘挂载,在ELASTIC BLOCK STORE -> Volumes 中选择我们的外部存储磁盘(500G),执行Actions -> Detach Volume。执行完后,外部存储磁盘便取消了与升级前实例之间的挂载。

20160405122712

然后,我们执行Actions -> Attach Volume,在弹出的操作框中,选择我们升级后的实例ID进行挂载。完成后,我们就可以在服务器上看到这个磁盘了。

20160405123048
图中的/dev/xvdf即外部磁盘

上图是后截的,所以这里显示已经被mount到了/data目录,刚挂载上的时候应该是空的。

然后我们删除掉之前的挂载链接,重新挂载:

这样外部磁盘挂载就完成了。服务器已经Ready。最后在DNS解析处更改一下IP地址绑定就完成了整个升级操作。