创建自定义镜像,实现快速部署

本最佳实践要解决的主要问题是如何在多台云服务器上快速部署应用系统,包括系统镜像及应用软件。解决方法是创建自定义镜像,基于自定义镜像安装云服务器。本条实践常常用于根据业务的变化而动态弹性扩展资源 。

可通过管理控制台或API创建自定义镜像,API方式需要先申请加入自定义镜像白名单,所用的API接口为CreateSnapshot和CreateImage。具体操作步骤如下:

从管理控制台创建自定义镜像及云服务器

Step 1:登录云服务器管理控制台,在左侧菜单栏“云磁盘管理”中勾选想要创建快照的云服务器系统盘(注:目前只有系统盘快照可以创建自定义镜像),点击“创建快照”按钮,输入快照名称,即可创建快照。
Step 1:登录云服务器管理控制台,在左侧菜单栏“云磁盘管理”中勾选想要创建快照的云服务器系统盘(注:目前只有系统盘快照可以创建自定义镜像),点击“创建快照”按钮,输入快照名称,即可创建快照。

Step 2:在左侧菜单栏“快照管理”中勾选刚创建成功,进度为100%的快照,点击“创建自定义镜像”按钮,输入自定义镜像名称,即可创建自定义镜像。
Step 2:在左侧菜单栏“快照管理”中勾选刚创建成功,进度为100%的快照,点击“创建自定义镜像”按钮,输入自定义镜像名称,即可创建自定义镜像。

Step 3: 在左侧菜单栏“自定义镜像管理”中确认新的自定义镜像创建成功。
Step 3: 在左侧菜单栏“自定义镜像管理”中确认新的自定义镜像创建成功。

Step 4:进入创建云服务器页面(即购买页面),确认此时可以选择新建的自定义镜像来创建云服务器。
Step 4:进入创建云服务器页面(即购买页面),确认此时可以选择新建的自定义镜像来创建云服务器。

使用API创建自定义镜像及云服务器

部分示意性代码如下:

public class CreateImageAndInstance {
private static final String ACCESS_KEY_ID = “youraccesskeyid”;
private static final String ACCESS_KEY_SECRET = “youraccesskeysecret”;

public void fastDeploy() {
try {
StringyourSnapshotId = createSnapshot(“yourinstanceid”, “yourdiskid”);
StringyourImageId = createImage(“regionId”, yourSnapshotId);
createInstance(“regionId”, yourImageId, “instanceType”, “yoursecuritygroupid”);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private String createSnapshot(StringinstanceId, String diskId) throwsException{
HashMap<String,String> ci = newHashMap<String, String>();
ci.put(“InstanceId”, instanceId);
ci.put(“DiskId”, diskId);

//Parse and get the SnapshotIdfrom the response.
return newECSRequest().execute(“CreateSnapshot”, ci);
}

private String createImage(StringregionId, String snapshotId) throws Exception{
HashMap<String,String> ci = newHashMap<String, String>();
ci.put(“RegionId”, regionId);
ci.put(“SnapshotId”, snapshotId);

//Parse and get the ImageId fromthe response.
return newECSRequest().execute(“CreateImage”, ci);
}

private void createInstance(String regionId, StringimageId, String instanceType, String securityGroupId) throws Exception {
HashMap<String,String> ci = newHashMap<String, String>();
ci.put(“RegionId”, regionId);
ci.put(“ImageId”, imageId);
ci.put(“InstanceType”, instanceType);
ci.put(“SecurityGroupId”, securityGroupId);
System.out.println(newECSRequest().execute(“CreateInstance”, ci));
}

private static ECSAPI newECSRequest() {
return new ECSAPI(ACCESS_KEY_ID, ACCESS_KEY_SECRET);
}
}

创建自定义镜像,实现快速部署:等您发表观点呢!

发表评论


快捷键:Ctrl+Enter