当我们的应用上线的时候,首先要做服务器选型,在做系统配置,最后应用环境配置,然后部署机器验证,看我们搭建的环境是否符合需求。当一切都搞定了,应用需要大规模上线,或者由于业务发展需要扩展我们的应用部署,这个时候我们再一步一步再配置一遍,拷贝数据吗。以前可能需要需要这么做,但是现在这些步骤完全可以自动化的完成。通过资源编排可以非常方便的实现一台 ECS 的全量克隆。那么所有的事情都变得非常简单。
通过下面的链接就可以很方便的一键克隆任意多台源 ECS。应用部署和应用扩展就是分分钟的事。
>> ECS 一键克隆
点击这个链接后,会看如下的页面,在对应的框中输入具体的参数,点击创建,然后就开始 ECS 的完全克隆。
具体说一下这些参数的含义:
:选择在哪个 region 克隆机器,可以通过
- 已选地域
,调整 region
- 上一步
:指定 ROS 资源栈的名称,必须全局唯一
- 栈名
:克隆机器的超时时间
- 创建超时
:克隆机器失败后,是不是删除部分创建成功的其他资源
- 失败回滚
:将要克隆的源 ECS
- Source ECS Instance ID
:克隆的新机器的 root 用户登录密码
- ECS Login Password
:将要克隆的源 ECS 的系统盘 ID
- Source ECS system disk ID
:将要克隆的源 ECS 的数据盘 ID
- Source ECS data disk ID
:将要克隆多少台完全一样的 ECS
- Number of Cloned ECS
ROS 是通过模板来实现 ECS 的一键完全克隆。在这个模板中,主要用到了一下三个资源:
ALIYUN::ECS::Snapshot 资源是给磁盘做快照; ALIYUN::ECS::CustomImage 基于系统盘快照做系统镜像;最终通过 ALIYUN::ECS::InstanceGroupClone 基于系统盘镜像和数据盘快照完整克隆 ECS。它们各自详细的参数都可以通过链接看到。
完整的模板如下:
- {
- "ROSTemplateFormatVersion": "2015-09-01",
- "Description": "Clone ECS Instance",
- "Parameters": {
- "SourceEcsDataDiskId": {
- "Type": "String",
- "Description": "Create snapshot based on source ECS data disk",
- "Label": "Source ECS data disk ID"
- },
- "SourceECSSystemDiskId": {
- "Type": "String",
- "Description": "Create custom image based on source ECS system disk",
- "Label": "Source ECS system disk ID"
- },
- "SourceEcsInstanceId": {
- "Type": "String",
- "Description": "Source ECS Instance",
- "Label": "Source ECS Instance ID"
- },
- "LoginPassword": {
- "NoEcho": true,
- "Type": "String",
- "Description": "ECS Login Password",
- "AllowedPattern": "[a-zA-Z0-9-\\(\\)\\`\\~\\!@\\#\\$%\\^&\\*-+=\\|\\{\\}\\[\\]\\:\\;\\'\\,\\.\\?\\/]*",
- "Label": "ECS Login Password",
- "MinLength": 8,
- "MaxLength": 41
- },
- "NumberOfClonedEcs": {
- "Type": "Number",
- "Description": "The number of nodes will be cloned",
- "MinValue": 1,
- "Label": "Number of Cloned ECS",
- "MaxValue": 100,
- "Default": 1
- }
- },
- "Resources": {
- "CustomImage": {
- "Type": "ALIYUN::ECS::CustomImage",
- "Properties": {
- "SnapshotId": {
- "Ref": "SystemDiskSnapshot"
- },
- "Timeout": 600
- }
- },
- "NewEcsInstance": {
- "Type": "ALIYUN::ECS::InstanceGroupClone",
- "Properties": {
- "DiskMappings": [{
- "SnapshotId": {
- "Fn::GetAtt": ["DataDiskSnapshot", "SnapshotId"]
- },
- "Size": 20
- }],
- "MinAmount": {
- "Ref": "NumberOfClonedEcs"
- },
- "ImageId": {
- "Ref": "CustomImage"
- },
- "SourceInstanceId": {
- "Ref": "SourceEcsInstanceId"
- },
- "MaxAmount": {
- "Ref": "NumberOfClonedEcs"
- },
- "Password": {
- "Ref": "LoginPassword"
- }
- }
- },
- "DataDiskSnapshot": {
- "Type": "ALIYUN::ECS::Snapshot",
- "Properties": {
- "DiskId": {
- "Ref": "SourceEcsDataDiskId"
- }
- }
- },
- "SystemDiskSnapshot": {
- "Type": "ALIYUN::ECS::Snapshot",
- "Properties": {
- "Timeout": 300,
- "DiskId": {
- "Ref": "SourceEcsSystemDiskId"
- }
- }
- }
- },
- "Outputs": {
- "NewEcsInstanceIds": {
- "Value": {
- "Fn::GetAtt": ["NewEcsInstance", "InstanceIds"]
- }
- }
- }
- }
在很多情况下,我们需要完全克隆一台 ECS,例如应用扩容,ECS 整体迁移等等,但是当前情况下,很多时候我们克隆 ECS 只能是手动创建,然后手动做数据迁移,这个在需要快速做应用部署,大量的运维的情况下是不可行的。ROS 基于模板实现了自动化的,快捷的,ECS 完全克隆的解决方案。可以大大提高大家运维效率和减少运维的失误。
来源: https://yq.aliyun.com/articles/169059