Gunakan Alibaba Cloud Resource Orchestration Service (ROS) untuk menyediakan jaringan VPC, sekelompok Instance ECS, dan grup Auto Scaling (ESS) dari satu templat YAML. Tambahkan Instance ECS ke dalam grup penskalaan agar kapasitasnya dapat diperluas atau dikurangi secara otomatis berdasarkan beban bisnis. Tutorial ini cocok untuk skenario yang memerlukan manajemen elastis kluster server, seperti aplikasi web dan layanan mikro.
Ikhtisar solusi
Skenario bisnis
Buat Instance ECS secara batch di Alibaba Cloud Virtual Private Cloud (VPC) dan tambahkan ke grup penskalaan. Setelah Anda mengonfigurasi aturan penskalaan, grup penskalaan akan menambah atau mengurangi jumlah Instance ECS berdasarkan beban bisnis, sehingga memberikan manajemen elastis terhadap kluster server.
Sumber daya yang dibuat
No. | Nama sumber daya | Tipe sumber daya ROS | Tujuan |
1 | VPC |
| Menyediakan lingkungan jaringan terisolasi. |
2 |
|
| Mengalokasikan Blok CIDR subnet dan menentukan zona dalam VPC. |
3 |
|
| Mengontrol aturan akses jaringan inbound dan outbound untuk Instance ECS. |
4 | ECS |
| Membuat Instance ECS awal secara batch. |
5 |
|
| Mengelola kebijakan skalabilitas elastis (jumlah instans minimum dan maksimum). |
6 |
|
| Menentukan templat spesifikasi ECS yang digunakan saat skala keluar. |
7 |
|
| Mengaktifkan grup penskalaan dan menambahkan Instance ECS yang sudah ada ke dalamnya. |
Hasil yang diharapkan setelah penerapan
Setelah templat berhasil diterapkan, Anda akan memiliki:
Lingkungan jaringan VPC lengkap yang mencakup VPC, VSwitch, dan security group.
Sekelompok Instance ECS. (Jumlahnya diparameterisasi oleh
ECSInstanceGroupCount, default 3.)Grup penskalaan yang diaktifkan dengan konfigurasi penskalaan untuk skala keluar otomatis.
Semua Instance ECS ditambahkan ke grup penskalaan.
Diagram Arsitektur

Prasyarat
Sebelum memulai, pastikan hal berikut:
Akun dan izin: Akun Alibaba Cloud yang memiliki izin untuk membuat sumber daya di ECS, ESS (Elastic Scaling), dan VPC.
Persiapan pengetahuan: Pengetahuan dasar tentang sintaksis dan struktur templat ROS. Untuk detailnya, lihat Panduan cepat untuk templat.
Tutorial penulisan templat
Tutorial ini menunjukkan proses penulisan templat dalam dua tahap:
Tahap 1 (versi dasar): menggunakan nilai parameter tetap dan fokus pada pemahaman definisi dan dependensi sumber daya.
Tahap 2 (versi lanjutan): memparametrisasi semua konfigurasi variabel dan menambahkan penyaringan parameter dinamis serta pengelompokan parameter.
Tahap 1: Templat dasar — mendefinisikan sumber daya dan dependensinya
Langkah 1: Definisikan sumber daya jaringan dasar (VPC + VSwitch + Security group)
Sumber daya jaringan merupakan fondasi bagi semua sumber daya lain dan harus dibuat terlebih dahulu.
Resources:
# ============================================================
# Lapisan jaringan dasar: VPC → VSwitch → SecurityGroup
# ============================================================
Vpc:
Type: ALIYUN::ECS::VPC # Membuat VPC
Properties:
CidrBlock: 192.168.0.0/16 # Blok CIDR VPC, menyediakan 65.534 alamat IP pribadi
VpcName:
Ref: ALIYUN::StackName # Parameter semu: menggunakan nama stack sebagai nama VPC
VSwitch:
Type: ALIYUN::ECS::VSwitch # Membuat VSwitch (subnet) di dalam VPC
Properties:
VSwitchName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc # Ref mengembalikan VpcId dari Vpc (dependensi implisit, sehingga ROS membuat Vpc terlebih dahulu)
ZoneId: cn-beijing-h # Contoh ini menggunakan zona H di wilayah China (Beijing)
CidrBlock: 192.168.0.0/24 # Blok CIDR subnet, harus merupakan subset dari blok CIDR VPC
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup # Membuat security group
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc # Mengikat security group ke VPC yang sama
# Aturan inbound: contoh ini mengizinkan seluruh lalu lintas inbound demi kesederhanaan. Batasi port sesuai kebutuhan di lingkungan produksi.
SecurityGroupIngress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
SourceCidrIp: 0.0.0.0/0
NicType: intranetPoin penting:
Pengaturan kustom seperti
VpcName,VSwitchName, danSecurityGroupNamedapat dikonfigurasi dengan parameter semu, sehingga Anda dapat dengan cepat mengidentifikasi sumber daya yang diterapkan oleh stack tertentu setelah penerapan.Aturan akses
SecurityGroupdapat disesuaikan berdasarkan kebutuhan bisnis Anda. Misalnya:Untuk mengakses layanan web dari Internet, buka port inbound HTTP 80 atau 8080 di security group.
Untuk login ke server melalui SSH, buka port inbound 22 di security group.
Langkah 2: Definisikan sumber daya grup Instance ECS
ALIYUN::ECS::InstanceGroup membuat beberapa Instance ECS dengan konfigurasi yang sama sekaligus, yang lebih efisien daripada mendeklarasikan ALIYUN::ECS::Instance berulang kali.
Resources:
# ============================================================
# Lapisan komputasi: membuat Instance ECS secara batch
# ============================================================
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup # Membuat Instance ECS secara batch
Properties:
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: EcsSecurityGroup
VSwitchId:
Ref: VSwitch
ImageId: centos_7_9_x64_20G_alibase_20220727.vhd # Citra CentOS 7.9
AllocatePublicIP: false # Tidak mengalokasikan alamat IP publik
InstanceType: ecs.c5.large # Tipe instans: 2 vCPU, 4 GiB
SystemDiskSize: 200 # Disk sistem 200 GiB
SystemDiskCategory: cloud_essd # Disk cloud ESSD
MaxAmount: 3 # Membuat 3 Instance ECS
Password: <YourPassword> # Ganti dengan password aktual saat penerapan (harus mengandung huruf kapital, huruf kecil, angka, dan karakter khusus)
InstanceName: # Nama instans: nama stack ditambah nomor urut, misalnya mystack-0001
Fn::Sub:
- ${StackName}-[1,4]
- StackName:
Ref: ALIYUN::StackNamePoin penting:
ALIYUN::ECS::InstanceGroupmenggunakan propertiMaxAmountuntuk menentukan jumlah Instance ECS yang akan dibuat.Fungsi
Fn::Submenggabungkan string.[1,4]adalah placeholder nomor urut khusus ROS yang menunjukkan angka empat digit yang bertambah dari 1, seperti 0001 dan 0002.Atribut output
InstanceIdsdari sumber daya ini adalah daftar ID Instance ECS, yang dapat direferensikan oleh grup penskalaan.
Langkah 3: Definisikan sumber daya grup penskalaan (Grup penskalaan+Konfigurasi penskalaan+Aktifkan konfigurasi penskalaan)
Grup penskalaan bekerja melalui tiga sumber daya: ScalingGroup mendefinisikan kebijakan penskalaan, ScalingConfiguration mendefinisikan templat ECS yang digunakan saat skala keluar, dan ScalingGroupEnable mengaktifkan grup penskalaan serta menambahkan instans yang sudah ada ke dalamnya.
Resources:
# ============================================================
# Lapisan Auto Scaling: grup penskalaan + konfigurasi penskalaan + aktifkan grup penskalaan
# ============================================================
EssInstanceScalingGroup:
Type: ALIYUN::ESS::ScalingGroup # Membuat grup penskalaan
Properties:
ScalingGroupName:
Ref: ALIYUN::StackName
RemovalPolicys:
- NewestInstance # Kebijakan penskalaan masuk: menghapus instans yang paling baru dibuat terlebih dahulu
MinSize: 3 # Grup penskalaan mempertahankan minimal 3 instans
MaxSize: 50 # Grup penskalaan dapat memperluas hingga maksimal 50 instans
VSwitchId:
Ref: VSwitch # Mengikat grup penskalaan ke VSwitch (menentukan lokasi jaringan instans yang ditambahkan saat skala keluar)
DefaultCooldown: 300 # Periode cooldown 300 detik mencegah penskalaan terlalu sering
EssInstanceScalingConfiguration:
Type: ALIYUN::ESS::ScalingConfiguration # Konfigurasi penskalaan (templat ECS yang digunakan saat skala keluar)
Properties:
SecurityGroupId:
Ref: EcsSecurityGroup
ScalingGroupId:
Ref: EssInstanceScalingGroup # Mengasosiasikan dengan grup penskalaan yang didefinisikan di atas
ScalingConfigurationName:
Fn::Sub: sc-${ALIYUN::StackName} # Fn::Sub menggantikan variabel parameter semu secara langsung
InstanceType: ecs.c5.large # Tipe instans ECS yang dibuat saat skala keluar (harus sesuai dengan Instance ECS awal)
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
ImageId: centos_7_9_x64_20G_alibase_20220727.vhd # Citra yang digunakan saat skala keluar (harus sesuai dengan Instance ECS awal)
EssInstanceScalingGroupEnable:
Type: ALIYUN::ESS::ScalingGroupEnable # Mengaktifkan grup penskalaan
Properties:
ScalingRuleArisExecuteVersion: '1'
ScalingConfigurationId:
Ref: EssInstanceScalingConfiguration # Menentukan konfigurasi penskalaan yang berlaku
InstanceIds:
# Menambahkan Instance ECS yang dibuat di Langkah 2 ke grup penskalaan
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds # Mendapatkan daftar semua ID instans dari InstanceGroup
ScalingGroupId:
Ref: EssInstanceScalingGroupPoin penting:
Atur
MinSizegrup penskalaan dengan nilai yang sama sepertiECSInstanceGroupCount(jumlah instans yang dibuat awal) untuk mencegah penskalaan masuk dipicu segera setelah grup diaktifkan.Anda dapat menambahkan aturan penskalaan (ALIYUN::ESS::ScalingRule) dan tugas alarm (ALIYUN::ESS::AlarmTask) ke grup penskalaan untuk menerapkan penskalaan otomatis berdasarkan metrik seperti penggunaan CPU dan penggunaan memori.
Perbedaan antara
RefdanFn::GetAtt:Refmengembalikan identifier utama sumber daya, sepertiVpcIddari VPC.Fn::GetAttmengembalikan atribut terkait sumber daya, sepertiInstanceIdsdariEcsInstanceGroup.
Versi dasar — templat lengkap
Berikut adalah templat lengkap yang siap pakai yang menggabungkan ketiga langkah sebelumnya:
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 创建VPC网络环境,批量部署ECS实例并加入伸缩组,实现弹性扩缩容管理
en: Create VPC network, deploy ECS instance group and manage them with ESS scaling group
Resources:
# === lapisan jaringan dasar ===
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
VpcName:
Ref: ALIYUN::StackName
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VSwitchName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc
ZoneId: cn-beijing-h
CidrBlock: 192.168.0.0/24
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc
SecurityGroupIngress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
SourceCidrIp: 0.0.0.0/0
NicType: intranet
# === Lapisan komputasi ===
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: EcsSecurityGroup
VSwitchId:
Ref: VSwitch
ImageId: centos_7_9_x64_20G_alibase_20220727.vhd
AllocatePublicIP: false
InstanceType: ecs.c5.large
SystemDiskSize: 200
SystemDiskCategory: cloud_essd
MaxAmount: 3
Password: <YourPassword>
InstanceName:
Fn::Sub:
- ${StackName}-[1,4]
- StackName:
Ref: ALIYUN::StackName
# === Lapisan ESS ===
EssInstanceScalingGroup:
Type: ALIYUN::ESS::ScalingGroup
Properties:
ScalingGroupName:
Ref: ALIYUN::StackName
RemovalPolicys:
- NewestInstance
MinSize: 3
MaxSize: 50
VSwitchId:
Ref: VSwitch
DefaultCooldown: 300
EssInstanceScalingConfiguration:
Type: ALIYUN::ESS::ScalingConfiguration
Properties:
SecurityGroupId:
Ref: EcsSecurityGroup
ScalingGroupId:
Ref: EssInstanceScalingGroup
ScalingConfigurationName:
Fn::Sub: sc-${ALIYUN::StackName}
InstanceType: ecs.c5.large
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
ImageId: centos_7_9_x64_20G_alibase_20220727.vhd
EssInstanceScalingGroupEnable:
Type: ALIYUN::ESS::ScalingGroupEnable
Properties:
ScalingRuleArisExecuteVersion: '1'
ScalingConfigurationId:
Ref: EssInstanceScalingConfiguration
InstanceIds:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
ScalingGroupId:
Ref: EssInstanceScalingGroup
Outputs:
ECSInstanceIds:
Label: Daftar ID Instance ECS
Value:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIdsPoin penting:
Setelah templat membuat sumber daya, Anda dapat langsung mengkueri atribut internal sumber daya tersebut dari bagian Outputs templat, seperti daftar ID Instance ECS.
Tahap 2: Templat lanjutan — parameterisasi dan konfigurasi dinamis
Dalam templat dasar, properti seperti InstanceType, SystemDiskCategory, dan ImageId dari Instance ECS serta MaxSize grup penskalaan menggunakan nilai tetap. Untuk menggunakan kembali templat di wilayah berbeda atau dengan spesifikasi berbeda, Anda harus mengubah templat berulang kali. Selain itu, parameter dalam templat sering saling bergantung. Misalnya, tipe instans ECS dibatasi oleh zona (inventaris tipe instans berbeda di tiap zona), dan kategori disk sistem dibatasi oleh zona dan tipe instans. Jika Anda menentukan parameter ini secara manual, Anda dapat dengan mudah memilih kombinasi yang tidak tersedia, sehingga menyebabkan penerapan gagal.
Optimasi berikut sangat meningkatkan fleksibilitas dan kemampuan guna ulang templat:
Parameterisasi (Parameters): ekstrak konfigurasi variabel sebagai parameter dan tentukan secara dinamis saat penerapan.
Penyaringan parameter dinamis (AssociationProperty): biarkan konsol ROS secara otomatis menyaring opsi yang tersedia berdasarkan parameter yang telah dipilih.
Pengelompokan parameter (Metadata): tampilkan parameter dalam kelompok logis di konsol untuk meningkatkan pengalaman input.
Diagram dependensi parameter
Contoh berikut menggunakan tipe instans ECS dan kategori disk sistem untuk menunjukkan rantai dependensi antarparameter:
VSwitchZoneId (zona) ← parameter dasar, tanpa prasyarat
├──→ ECSInstanceType (tipe instans ECS)
│ Bergantung pada: ZoneId
│
└──→ ECSDiskCategory (kategori disk sistem)
Bergantung pada: ZoneId + InstanceTypeLogika inti: pilih zona terlebih dahulu, lalu saring tipe instans ECS yang tersedia di zona tersebut, dan akhirnya saring kategori disk yang didukung oleh zona dan tipe instans yang dipilih. Setiap langkah hanya menampilkan opsi yang valid dalam kondisi saat ini, sehingga mencegah kombinasi yang tidak valid.
Penjelasan AssociationProperty
1. VSwitchZoneId — zona (parameter dasar)
Atur AssociationProperty ke ALIYUN::ECS::ZoneId untuk menampilkan semua zona di wilayah saat ini. Contoh:
VSwitchZoneId:
Type: String
Label:
zh-cn: 交换机可用区
en: VSwitch Availability Zone
Description:
zh-cn: 选择交换机所在的可用区,ECS和伸缩组将部署在此可用区
en: Select the availability zone for VSwitch, ECS and scaling group will be deployed here
AssociationProperty: ALIYUN::ECS::ZoneIdParameter ini menjadi dasar penyaringan untuk semua parameter berikutnya. Setelah Anda memilih zona, daftar opsi parameter lain diperbarui sesuai.
2. ECSInstanceType — tipe instans ECS
Atur AssociationProperty ke ALIYUN::ECS::Instance::InstanceType untuk menampilkan tipe instans ECS yang tersedia, dan asosiasikan ${VSwitchZoneId} untuk menyaring tipe instans yang tersedia di zona yang dipilih. Contoh:
ECSInstanceType:
Type: String
Label:
zh-cn: ECS实例规格
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}Inventaris tipe instans berbeda-beda per zona. Tanpa penyaringan, Anda mungkin memilih tipe yang stoknya habis di zona tersebut, sehingga menyebabkan kegagalan pembuatan.
3. ECSDiskCategory — kategori disk sistem
Atur AssociationProperty ke ALIYUN::ECS::Disk::SystemDiskCategory untuk menampilkan kategori disk sistem yang tersedia, dan asosiasikan ${VSwitchZoneId} dan ${ECSInstanceType} untuk menyaring kategori disk sistem yang didukung oleh zona dan tipe instans ECS yang dipilih. Contoh:
ECSDiskCategory:
Type: String
Label:
zh-cn: 系统盘类型
en: System Disk Category
Description:
zh-cn: 选择系统盘类型。可选值:cloud_essd(ESSD云盘)、cloud_ssd(SSD云盘)、cloud_efficiency(高效云盘)
en: "System disk type. Options: cloud_essd, cloud_ssd, cloud_efficiency"
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
InstanceType: ${ECSInstanceType}Ketersediaan kategori disk sistem bergantung pada zona (beberapa zona tidak mendukung ESSD) dan tipe instans (beberapa tipe hanya mendukung kategori disk tertentu).
Contoh penyaringan parameter dinamis
Contoh berikut menunjukkan efek konfigurasi AssociationProperty untuk mendapatkan tipe instans ECS dan kategori disk secara dinamis:
Parameters:
VSwitchZoneId:
Type: String
Label:
zh-cn: 交换机可用区
en: VSwitch Availability Zone
Description:
zh-cn: 选择交换机所在的可用区,ECS和伸缩组将部署在此可用区
en: Select the availability zone for VSwitch, ECS and scaling group will be deployed here
AssociationProperty: ALIYUN::ECS::ZoneId
ECSInstanceType:
Type: String
Label:
zh-cn: ECS实例规格
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
ECSDiskCategory:
Type: String
Label:
zh-cn: 系统盘类型
en: System Disk Category
Description:
zh-cn: 选择系统盘类型。可选值:cloud_essd(ESSD云盘)、cloud_ssd(SSD云盘)、cloud_efficiency(高效云盘)
en: "System disk type. Options: cloud_essd, cloud_ssd, cloud_efficiency"
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
InstanceType: ${ECSInstanceType}Cara kerja AssociationProperty
Saat membuat stack di konsol ROS, pemilihan parameter dipicu secara berantai:
Pilih zona (
VSwitchZoneId).Daftar drop-down tipe instans ECS diperbarui secara otomatis dan hanya menampilkan tipe instans yang tersedia di zona tersebut.
Setelah Anda memilih tipe instans ECS, daftar drop-down kategori disk sistem diperbarui secara otomatis dan hanya menampilkan kategori disk yang didukung oleh zona dan tipe instans tersebut.
Dengan cara ini, setiap langkah hanya menampilkan opsi yang tersedia dalam kondisi saat ini, sehingga mencegah kegagalan penerapan akibat kombinasi parameter yang tidak valid.
Kelompok parameter Metadata
Dengan mengonfigurasi ALIYUN::ROS::Interface di dalam Metadata, Anda dapat membagi parameter ke dalam kelompok logis, masing-masing dengan judul. Konsol menampilkan parameter berdasarkan kelompok, yang sangat meningkatkan pengalaman input.
Struktur sintaksis Metadata
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups: # Daftar kelompok parameter (wajib)
- Parameters: # Daftar nama parameter dalam kelompok (wajib)
- Parameter1
- Parameter2
Label: # Judul kelompok (wajib)
default:
zh-cn: 中文标题
en: English TitleAturan sintaksis Metadata:
ParameterGroups,Parameters, danLabelsemuanya wajib.Nama parameter yang tercantum dalam
Parametersharus persis sama dengan nama parameter yang didefinisikan di bagianParameterstemplat.Parameter yang tidak muncul di kelompok mana pun akan ditampilkan di area tanpa kelompok di konsol.
Desain kelompok parameter
Templat ini membagi sembilan parameter ke dalam tiga kelompok berdasarkan tipe sumber daya:
┌────────────────────────────────────────────────────┐
│ Konfigurasi jaringan │
│ ├── Zona VSwitch (VSwitchZoneId) │
│ ├── Blok CIDR VPC (VpcCidrBlock) │
│ └── Blok CIDR VSwitch (VSwitchCidrBlock) │
├────────────────────────────────────────────────────┤
│ Konfigurasi Instance ECS │
│ ├── Tipe instans ECS (ECSInstanceType) │
│ ├── ID citra ECS (ECSImageId) │
│ ├── Kategori disk sistem (ECSDiskCategory) │
│ ├── Kata sandi Instance ECS (EcsInstancePassword) │
│ └── Jumlah Instance ECS (ECSInstanceGroupCount) │
├────────────────────────────────────────────────────┤
│ Konfigurasi grup penskalaan ESS │
│ └── Jumlah instans maksimum (ESSGroupMaxSize) │
└────────────────────────────────────────────────────┘Contoh pengelompokan Metadata
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- VSwitchZoneId
- VpcCidrBlock
- VSwitchCidrBlock
Label:
default:
zh-cn: 基础网络配置
en: Network Configuration
- Parameters:
- ECSInstanceType
- ECSDiskCategory
- ECSImageId
- EcsInstancePassword
- ECSInstanceGroupCount
Label:
default:
zh-cn: ECS实例配置
en: ECS Instance Configuration
- Parameters:
- ESSGroupMaxSize
Label:
default:
zh-cn: ESS伸缩组配置
en: Scaling Group ConfigurationVersi lanjutan — templat lengkap
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: >-
参数化模板:批量创建ECS实例并通过弹性伸缩组管理,支持自动扩缩容。
支持动态选择可用区、实例规格、磁盘类型和镜像,适用于多地域复用。
en: >-
Parameterized template: Create ECS instance group managed by ESS scaling group.
Supports dynamic selection of zone, instance type, disk category and image.
Parameters:
# ─── parameter jaringan dasar ───
VSwitchZoneId:
Type: String
Label:
zh-cn: 交换机可用区
en: VSwitch Availability Zone
Description:
zh-cn: 选择交换机所在的可用区,ECS和伸缩组将部署在此可用区
en: Select the availability zone for VSwitch, ECS and scaling group will be deployed here
AssociationProperty: ALIYUN::ECS::ZoneId
VpcCidrBlock:
Type: String
Label:
zh-cn: VPC网段
en: VPC CIDR Block
Description:
zh-cn: VPC的IP地址段范围。推荐使用 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16
en: VPC IP address range. Recommended 10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16
Default: 192.168.0.0/16
VSwitchCidrBlock:
Type: String
Label:
zh-cn: 交换机网段
en: VSwitch CIDR Block
Description:
zh-cn: 必须是VPC网段的子网段,且不能与同VPC下其他交换机网段重叠
en: Must be a subnet of VPC CIDR and not overlap with other VSwitches
Default: 192.168.0.0/24
# ─── parameter Instance ECS ───
ECSInstanceType:
Type: String
Label:
zh-cn: ECS实例规格
en: ECS Instance Type
Description:
zh-cn: 选择ECS实例规格。列表已根据可用区自动过滤可用规格。
en: Select ECS instance type. List is filtered by selected availability zone.
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
ECSDiskCategory:
Type: String
Label:
zh-cn: 系统盘类型
en: System Disk Category
Description:
zh-cn: 选择系统盘类型。可选值:cloud_essd(ESSD云盘)、cloud_ssd(SSD云盘)、cloud_efficiency(高效云盘)
en: "System disk type. Options: cloud_essd, cloud_ssd, cloud_efficiency"
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
InstanceType: ${ECSInstanceType}
ECSImageId:
Type: String
Label:
zh-cn: ECS镜像ID
en: Image ID
Description:
zh-cn: 选择ECS实例使用的操作系统镜像
en: Select the OS image for ECS instances
AssociationProperty: ALIYUN::ECS::Image::ImageId
ECSInstanceGroupCount:
Type: Number
Label:
zh-cn: ECS初始实例数量
en: Initial Instance Count
Description:
zh-cn: 初始创建的ECS实例数量,这些实例将加入伸缩组管理
en: Number of ECS instances to create initially, they will be added to scaling group
Default: 3
EcsInstancePassword:
Type: String
NoEcho: true
Label:
zh-cn: ECS实例密码
en: ECS Instance Password
Description:
zh-cn: 长度8-30位,需包含大写字母、小写字母、数字、特殊字符中的至少三种
en: Length 8-30, must contain at least three of uppercase, lowercase, digits, special characters
MinLength: 8
MaxLength: 30
AssociationProperty: ALIYUN::ECS::Instance::Password
# ─── parameter grup penskalaan ───
ESSGroupMaxSize:
Type: Number
Label:
zh-cn: 伸缩组最大实例数
en: Scaling Group Max Size
Description:
zh-cn: 伸缩组内ECS实例的最大数量,达到此上限后不再自动扩容
en: Maximum number of ECS instances in scaling group
Default: 50
Resources:
# === lapisan jaringan dasar ===
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock:
Ref: VpcCidrBlock
VpcName:
Ref: ALIYUN::StackName
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VSwitchName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc
ZoneId:
Ref: VSwitchZoneId
CidrBlock:
Ref: VSwitchCidrBlock
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc
SecurityGroupIngress:
- PortRange: 8080/8080
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: internet
SecurityGroupEgress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: internet
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: intranet
# === Lapisan komputasi ===
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
InstanceName:
Fn::Sub:
- ${StackName}-[1,4]
- StackName:
Ref: ALIYUN::StackName
VpcId:
Ref: Vpc
VSwitchId:
Ref: VSwitch
SecurityGroupId:
Ref: EcsSecurityGroup
SystemDiskCategory:
Ref: ECSDiskCategory
SystemDiskSize: 200
MaxAmount:
Ref: ECSInstanceGroupCount
ImageId:
Ref: ECSImageId
InstanceType:
Ref: ECSInstanceType
Password:
Ref: EcsInstancePassword
AllocatePublicIP: false
# === Lapisan ESS ===
EssInstanceScalingGroup:
Type: ALIYUN::ESS::ScalingGroup
Properties:
ScalingGroupName:
Ref: ALIYUN::StackName
RemovalPolicys:
- NewestInstance
MinSize:
Ref: ECSInstanceGroupCount
MaxSize:
Ref: ESSGroupMaxSize
VSwitchId:
Ref: VSwitch
DefaultCooldown: 300
EssInstanceScalingConfiguration:
Type: ALIYUN::ESS::ScalingConfiguration
Properties:
SecurityGroupId:
Ref: EcsSecurityGroup
ScalingGroupId:
Ref: EssInstanceScalingGroup
ScalingConfigurationName:
Fn::Sub: sc-${ALIYUN::StackName}
InstanceType:
Ref: ECSInstanceType
SystemDiskCategory:
Ref: ECSDiskCategory
SystemDiskSize: 200
ImageId:
Ref: ECSImageId
InstanceName:
Fn::Sub:
- ${StackName}-[index,1,4]
- StackName:
Ref: ALIYUN::StackName
EssInstanceScalingGroupEnable:
Type: ALIYUN::ESS::ScalingGroupEnable
Properties:
ScalingRuleArisExecuteVersion: '1'
ScalingConfigurationId:
Ref: EssInstanceScalingConfiguration
InstanceIds:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
ScalingGroupId:
Ref: EssInstanceScalingGroup
Outputs:
ECSInstanceIds:
Label: Daftar ID Instans ECS
Value:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
# === Metadata ===
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- VSwitchZoneId
- VpcCidrBlock
- VSwitchCidrBlock
Label:
default:
zh-cn: 基础网络配置
en: Network Configuration
- Parameters:
- ECSInstanceType
- ECSDiskCategory
- ECSImageId
- EcsInstancePassword
- ECSInstanceGroupCount
Label:
default:
zh-cn: ECS实例配置
en: ECS Instance Configuration
- Parameters:
- ESSGroupMaxSize
Label:
default:
zh-cn: 伸缩组配置
en: Scaling Group ConfigurationReferensi cepat fungsi bawaan ROS yang digunakan dalam templat ini
Fungsi | Contoh sintaksis | Penggunaan dalam templat ini | Deskripsi |
|
| Merujuk nilai parameter atau identifier utama sumber daya. | Merujuk parameter mengembalikan nilainya; merujuk sumber daya mengembalikan identifier utamanya. |
|
| Mendapatkan daftar ID instans dari grup Instance ECS. | Mendapatkan atribut output sumber daya setelah pembuatan (bukan identifier utama). |
|
| Menggabungkan nama konfigurasi penskalaan. | Gunakan |
Penerapan
Parameter penerapan
Parameter wajib (harus ditentukan saat penerapan)
Parameter | Deskripsi | Batasan |
| ID zona. | Dipilih secara dinamis di konsol. |
| Tipe instans ECS. | Tipe instans yang tersedia disaring secara otomatis berdasarkan zona. |
| Kategori disk sistem ECS. | Disaring secara otomatis berdasarkan zona dan tipe instans. |
| ID citra ECS. | Dipilih secara dinamis di konsol. |
Parameter opsional (memiliki nilai default dan dapat dikosongkan)
Parameter | Nilai default | Deskripsi |
| 192.168.0.0/16 | Blok CIDR VPC. |
| 192.168.0.0/24 | Blok CIDR subnet VSwitch. |
| 3 | Jumlah Instance ECS yang dibuat awal. |
| 50 | Jumlah instans maksimum dalam grup penskalaan ESS. |
| Tidak ada | Kata sandi login Instance ECS. Panjangnya harus 8–30 karakter dan mengandung minimal tiga jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus. |
Metode penerapan
Metode 1: Terapkan melalui konsol ROS
Login ke Konsol ROS.
Di panel navigasi kiri, pilih Stacks > Create Stack.
Pilih Select an Existing Template > Enter Template Content dan tempel templat lengkap ke editor.
Klik Next, lalu konfigurasikan parameter berdasarkan kelompok.
Setelah mengonfirmasi konfigurasi, klik Create dan tunggu status stack berubah menjadi
CREATE_COMPLETE.
Metode 2: Terapkan melalui kode IaC ROS
IaC Code adalah asisten AI infrastructure-as-code untuk infrastruktur cloud. Alat ini membantu pengguna sumber daya cloud dan insinyur O&M menghasilkan, menerapkan, dan mengelola templat infrastruktur melalui alur kerja terminal.
# Prompt
Deploy a group of ECS instances and manage them with an Auto Scaling group. Requirements:
1. Use a newly created VPC and VSwitch.
2. Create 3 ECS instances initially and add them to the scaling group.
3. Set the maximum number of instances in the scaling group to 50 and the minimum number to 3.
4. Set the scale-in policy to remove the newest instances first.
5. Open inbound port 8080 in the security group.
6. Configure VSwitchZoneId, ECSInstanceType, ECSDiskCategory, and ECSImageId with AssociationProperty so that they are dynamically filtered in the console.FAQ
Q1: Penerapan gagal dengan pesan "The specified InstanceType is not available in the zone"
Penyebab: tipe instans ECS yang dipilih stoknya habis di zona yang ditentukan.
Solusi:
Dalam templat lanjutan,
AssociationPropertysecara otomatis menyaring tipe instans yang tersedia, sehingga menghindari masalah ini.Jika Anda menggunakan templat dasar, kunjungi harga Elastic Compute Service (ECS) untuk memeriksa inventaris tipe instans di zona target, atau pilih zona lain.
Q2: Grup penskalaan langsung memicu penskalaan masuk setelah diaktifkan
Penyebab: nilai MinSize lebih besar daripada jumlah instans yang benar-benar bergabung ke grup, atau instans gagal bergabung.
Solusi:
Pastikan nilai
ECSInstanceGroupCountlebih besar dari atau sama denganMinSizegrup penskalaan.Periksa apakah Instance ECS berada dalam status Running.
Konfirmasi bahwa instans dan grup penskalaan berada di VPC atau VSwitch yang sama.
Q3: Instance ECS baru yang dibuat saat skala keluar memiliki konfigurasi yang tidak diharapkan
Penyebab: konfigurasi dalam ScalingConfiguration, seperti InstanceType dan ImageId, tidak konsisten dengan konfigurasi Instance ECS awal.
Solusi:
Dalam templat lanjutan, parameter
ScalingConfiguration, sepertiInstanceTypedanImageId, sudah mereferensikan parameter yang sama denganEcsInstanceGroup, sehingga menjaga konsistensi konfigurasi skala keluar.Jika Anda perlu melakukan skala keluar dengan konfigurasi berbeda, buat beberapa sumber daya
ScalingConfigurationdan kendalikan proporsinya berdasarkan bobot.
Q4: Bagaimana cara menerapkan penskalaan otomatis berdasarkan penggunaan CPU?
Solusi: tambahkan aturan penskalaan dan tugas alarm ke templat:
# Aturan skala keluar: menambahkan 2 instans setiap kali
ScaleOutRule:
Type: ALIYUN::ESS::ScalingRule
Properties:
ScalingGroupId:
Ref: EssInstanceScalingGroup
ScalingRuleName: scale-out-2
ScalingRuleType: SimpleScalingRule
AdjustmentType: QuantityChangeInCapacity # Sesuaikan berdasarkan jumlah
AdjustmentValue: 2 # Tambahkan 2 instans setiap kali
# Pemicu alarm: memicu skala keluar saat penggunaan CPU melebihi 80%
CpuAlarm:
Type: ALIYUN::ESS::AlarmTask
Properties:
AlarmTaskName: cpu-high-alarm
ScalingGroupId:
Ref: EssInstanceScalingGroup
MetricName: CpuUtilization
Threshold: 80
ComparisonOperator: '>='
EvaluationCount: 3 # Hanya memicu setelah 3 sampel berturut-turut melebihi ambang batas
AlarmActions:
- Fn::GetAtt:
- ScaleOutRule
- ScalingRuleAriQ5: Bagaimana cara menggunakan VPC yang sudah ada alih-alih membuat yang baru?
Solusi: hapus VPC dan VSwitch dari Resources dan masukkan melalui Parameters:
Parameters:
ExistingVpcId:
Type: String
Label:
en: Existing VPC ID
AssociationProperty: ALIYUN::ECS::VPC::VPCId
ExistingVSwitchId:
Type: String
Label:
en: Existing VSwitch ID
AssociationProperty: ALIYUN::VPC::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${ExistingVpcId}Q6: Bagaimana cara menyambungkan SLB ke grup penskalaan untuk distribusi trafik?
Solusi: tambahkan LoadBalancerIds ke Properties dari ScalingGroup:
EssInstanceScalingGroup:
Type: ALIYUN::ESS::ScalingGroup
Properties:
ScalingGroupName:
Ref: ALIYUN::StackName
RemovalPolicys:
- NewestInstance
MinSize:
Ref: ECSInstanceGroupCount
MaxSize:
Ref: ESSGroupMaxSize
VSwitchId:
Ref: VSwitch
DefaultCooldown: 300
LoadBalancerIds:
- Ref: MyLoadBalancer # Merujuk Instance SLB yang sudah adaSaat grup penskalaan menambah atau menghapus instans, instans tersebut secara otomatis ditambahkan ke atau dihapus dari grup server backend SLB.
Untuk pertanyaan lain tentang penerapan sumber daya, lihat kumpulan FAQ.