批量开服、快速部署解决方案

批量开服、快速部署解决方案

更新时间:2017-06-07 13:26:11

 

 

 

如何在用户爆发性增长的游戏推广期,轻松部署服务器,一直是运维同学的普遍要面对的问题

这里给大家介绍一篇通过调用云服务器API,批量增减云服务器的文章,希望对大家有所帮助:

 

原文内容如下:

漫游ECS API,玩转ECS API

 (本文转自阿里云产品博客http://blog.aliyun.com/210?spm=0.0.0.0.7jdfno) 

 整个部署过程需要三个步骤

一、配置环境

二、创建一个实例

三、创建快照和自定义镜像

 

开始部署

 

一、配置环境 

我们使用一个简单的python脚本来体验ECS的功能,你不需要懂得如何编写python代码,只要完成四个简单的准备任务:

安装好python环境,需要python 2.7版本

下载ecs.py这个小脚本, 通过简单的命令行操作,来调用ECS的API

获取你的阿里云账号的accesskeyid/accesskeysecret密钥对

下载ECS API文档

 

 

第一步,请安装python 2.7版本。Windows/Linux/MacOS等操作系统中如何安装本文不再描述。 

 

第二步,从这里的链接https://aliyunecs.oss.aliyuncs.com/tools/ecs.py 下载地址下载ecs.py脚本,在windows下打开终端命令行工具来执行命令,在linux和mac下使用终端来执行。接下来,我们以linux为例,在终端里执行 

$ chmod +x ./ecs.py

加上执行权限后使用更加方便。 

 

第三步,访问http://i.aliyun.com/access_key,点击“创建AccessKey”创建一个accesskeyid/accesskeysecret密钥对。请保存这个密钥对,这是非常重要敏感的信息,绝不能泄漏。  

接下来,在终端中直接执行ecs.py这个脚本,可以看到它的帮助信息,我们首先需要将刚刚获取到的密钥对配置好。使用以下命令来进行配置: 

$./ecs.py config --id=--secret=

配置完成后,可以执行列出可用地域(Region)命令来验证是否配置成功: 

$./ecs.py DescribeRegions

如果配置的密钥对没有问题,那么这个命令会输出一个json格式的结果,包含了杭州(cn-hangzhou)和青岛(cn-qingdao)两个地域的信息。 

 

第四步,从http://help.aliyun.com/list/11114696.html下载ECS API文档,作为后续使用的参考。 

 

二、创建实例 

前置条件:要创建按量付费的云服务器,您的账户余额必须至少有100元的现金。接下来我们完成以下任务:

创建一个安全组

创建一个云服务器实例

分配公网IP地址

增加一块磁盘

启动新创建的实例

 

 

1. 创建安全组 

ECS的每个实例至少要归属到一个安全组中,所谓的安全组,是由同一个地域内具有相同安全保护需求并相互信任的实例组成。加入到同一个安全组的实例彼此之间是互相信任的,安全组的防火墙规则对他们都生效。 

$ ./ecs.py CreateSecurityGroup description="Test-API" regionid=cn-qingdao

 

如果没有报错,输出结果类似以下,就是执行成功了。 

"RequestId": "7472C411-08E9-41C7-A20B-BA33E2AA5E7B", 

"SecurityGroupId": "G69d5027e-85e4-45cb-a6a5-c1a4de77fab8" 

 

2. 创建实例 

创建实例前,有几个选择要做:1)创建到哪个地域?2)选择什么配置 3)使用哪个镜像?4)加入到哪个安全组? 5)是否需要公网带宽?使用固定带宽还是按流量付费?6)设置Root密码 

本次的API只能用于创建按量付费的云服务器实例,对一些限制可以在http://help.aliyun.com/view/11108189_13730408.html看到具体的信息。 

 

我们将在青岛地域创建一个ecs.s2.small(2CPU 2GB内存) 的云服务器实例,选择ubuntu12.04操作系统,加入到刚刚创建的安全组,选择按流量付费的方式,最大容许10Mbps的公网带宽。命令如下: 

$./ecs.py CreateInstance RegionId=cn-qingdao

InstanceType=ecs.s2.small 

ImageId=ubuntu1204_64_20G_security_v01.vhd 

InternetChargeType=PayByTraffic 

InternetMaxBandwidthOut=10 

SecurityGroupId=刚刚创建的安全组ID 

InstanceName=api-test 

Password=your-password 

 

命令执行后,如果没有报错,会有类似如下的json结果输出,代表执行成功: 

"InstanceId": "AY140404124925248f45", 

"RequestId": "024E0224-8B12-4099-897E-F717CF43332C", 

此时,实例已经创建成功,想查看它的属性,执行 

$./ecs.py DescribeInstanceAttribute InstanceId=刚创建成功的实例ID

 

可以看到它的Status是Stopped状态,我们还需要再进行一些配置才会启动实例。 

 

3.分配公网IP地址 

我们刚创建好的实例是不包含IP地址的,想要增加公网IP地址,请执行命令: 

$./ecs.py AllocatePublicIpAddress InstanceId=刚创建成功的实例ID

 

输出如下则为成功 

"IpAddress": "42.96.194.117", 

"RequestId": "46C20C19-93E8-4CCE-853C-5F26241A7EDA" 

 

4. 增加一块数据盘 

刚刚创建的云服务器是没有数据盘的,我们调用AddDisk这个命令增加一块100GB的数据盘: 

$./ecs.py AddDisk InstanceId=刚创建成功的实例ID Size=100

"DiskId": "6002-20107932", 

"RequestId": "5E859722-D05A-4FE2-B7B1-F1F20FA10C12" 

 

5. 启动实例 

这个时候,我们可以启动实例,执行: 

$./ecs.py StartInstance InstanceId=刚刚创建成功的实例ID

"RequestId": "09F57060-739C-409F-9907-78FECEC33E46" 

没有消息就是好消息,这个时候,再调用DescribeInstanceAttribute就可以看到实例的Status是Starting,几分钟后,实例会启动好,可以SSH远程连接或者通过控制台的“连接管理终端”连接上去。 

 

 

三、创建快照和自定义镜像 

快照是一个磁盘上的数据在某一个时间点的拷贝。自定义镜像是实例可选择的运行环境模板,一般包括操作系统和预装的软件。只有系统盘的快照可以制作成自定义镜像。 

 

首先使用DescribeInstnaceDisks这个API查看系统盘的ID: 

$./ecs.py DescribeInstanceDisks InstanceId=刚创建成功的实例ID

 

如果你按照第二步中的步骤执行,那么输出结果中应当有两块磁盘,其中Type标识为System的就是系统盘。 

用以下命令创建系统盘的快照: 

$./ecs.py CreateSnapshot InstanceId=刚创建成功的实例ID DiskId=系统盘的ID SnapshotName=my-sys-snapshot

 

创建成功后会输出SnapshotID。快照的生成过程需要一些时间,你可以通过下面的命令查看快照的进度: 

$./ecs.py DescribeSnapshotAttribute RegionId=cn-qingdao SnapshotId=刚刚创建的SnapshotId

"CreationTime": "2014-04-04T05:39Z", 

"Progress": "73", 

"RequestId": "783D64E0-5193-433A-9615-26390783DE68", 

"SnapshotId": "6002-20107931-4969987", 

"SnapshotName": "my-sys-snapshot" 

其中的Progress即为进度的百分比。 

当Progress达到100时,就可以使用这个快照来创建自定义镜像了。使用以下的命令来创建自定义镜像: 

$./ecs.py CreateImage RegionId=cn-qingdao SnapshotId=创建成功的SnapshotId Description=my-image

"ImageId": "md5079e28-3b58-48eb-af0a-3da8dcbe56be.vhd", 

"RequestId": "F7E07872-2859-4D50-A223-FEE748DBCFB4" 

此时,这个新的ImageId,就可以用于创建新的实例了。 

 

我们的漫游到此就结束了。你还可以更进一步,对照API文档,完成以下的任务:

查看所有可用的镜像:DescribeImages

列出安全组(DescribeSecurityGroups),并且为安全组加一个授权规则(AuthorizeSecurityGroups),只容许公网的22和80端口来访问实例

试试快照和磁盘的其他功能

 

 

阿里云产品团队 

 

 

(ECS API技术文档资料下载请访问阿里云帮助中心:http://help.aliyun.com/view/11108189_13730435.html;ECS API 4月3日发布公告详情见帖子http://bbs.aliyun.com/read/155478.html)