ECS 一鍵完全克隆
當我們的應用上線的時候,首先要做服務器選型,在做係統配置,最後應用環境配置,然後部署機器驗證,看我們搭建的環境是否符合需求。當一切都搞定了,應用需要大規模上線,或者由於業務發展需要擴展我們的應用部署,這個時候我們再一步一步再配置一遍,拷貝數據嗎。以前可能需要需要這麼做,但是現在這些步驟完全可以自動化的完成。通過資源編排可以非常方便的實現一台ECS的全量克隆。那麼所有的事情都變得非常簡單。
ECS 一鍵完全克隆
通過下麵的鏈接就可以很方便的一鍵克隆任意多台源ECS。應用部署和應用擴展就是分分鍾的事。
點擊這個鏈接後,會看如下的頁麵,在對應的框中輸入具體的參數,點擊創建,然後就開始ECS的完全克隆。
具體說一下這些參數的含義:
-
已選地域
:選擇在哪個region克隆機器,可以通過上一步
,調整region -
棧名
:指定ROS資源棧的名稱,必須全局唯一 -
創建超時
:克隆機器的超時時間 -
失敗回滾
:克隆機器失敗後,是不是刪除部分創建成功的其他資源 -
Source ECS Instance ID
:將要克隆的源 ECS -
ECS Login Password
:克隆的新機器的 root 用戶登錄密碼 -
Source ECS system disk ID
:將要克隆的源 ECS 的係統盤 ID -
Source ECS data disk ID
:將要克隆的源 ECS 的數據盤 ID -
Number of Cloned ECS
:將要克隆多少台完全一樣的 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完全克隆的解決方案。可以大大提高大家運維效率和減少運維的失誤。
最後更新:2017-08-13 22:21:43