全部产品
Search
文档中心

Resource Orchestration Service:Gunakan grup penskalaan untuk mengelola beberapa Instance ECS

更新时间:Jul 02, 2025

Topik ini membantu Anda memahami proses pembuatan Template Layanan Orkestrasi Sumber Daya (ROS). Dalam topik ini, sebuah template yang mendeklarasikan sumber daya untuk mengelola beberapa Instance Elastic Compute Service (ECS) menggunakan grup penskalaan dibuat.

Prasyarat

Anda sudah familiar dengan sintaksis dan struktur template ROS. Untuk informasi lebih lanjut, lihat Memulai dengan Template.

Skenario contoh

Dalam skenario ini, sebuah grup penskalaan dibuat dalam virtual private cloud (VPC), dan aturan penskalaan dikonfigurasi untuk grup tersebut. Sebuah Instance ECS dibuat dan ditambahkan ke dalam grup penskalaan. Dengan cara ini, sistem akan menskalakan Instance ECS di dalam grup penskalaan berdasarkan aturan penskalaan.2023-05-08_10-52-53..png

Catatan penggunaan

Anda dapat melihat tipe sumber daya dari sumber daya sebelumnya untuk mendapatkan detail setiap properti sumber daya. Untuk informasi lebih lanjut, lihat Lihat Tipe Sumber Daya.

Tipe sumber daya mendeklarasikan properti suatu sumber daya, seperti tipe, apakah wajib, dan apakah dapat diedit. Jika sebuah properti wajib, Anda harus mendeklarasikan properti tersebut di bagian Properties dari bagian Resources sebuah template. Jika sebuah properti opsional, Anda dapat meninggalkan properti tersebut kosong. Jika sebuah properti dapat diedit, Anda dapat memodifikasi properti tersebut di template baru setelah properti tersebut ditentukan untuk sumber daya cloud dalam template tumpukan. Kemudian, Anda dapat menggunakan template baru untuk memperbarui tumpukan dan sumber daya tersebut. Jika tidak, Anda tidak dapat memodifikasi properti tersebut.

Buat template

Anda dapat merujuk dokumentasi tipe sumber daya untuk menemukan tipe sumber daya yang paling sesuai dengan kebutuhan Anda. Untuk informasi lebih lanjut, lihat Daftar Tipe Sumber Daya Berdasarkan Layanan.

Dalam skenario contoh, Anda harus membuat sumber daya menggunakan tipe sumber daya berikut: ALIYUN::ECS::VPC (membuat VPC), ALIYUN::ECS::Instance (membuat Instance ECS), ALIYUN::ESS::ScalingGroup (membuat grup penskalaan), ALIYUN::ECS::VSwitch (membuat vSwitch untuk Instance ECS), dan ALIYUN::ECS::SecurityGroup (membuat grup keamanan untuk Instance ECS). Setelah Anda membuat sumber daya, Anda harus menentukan ALIYUN::ESS::ScalingConfiguration (menambahkan konfigurasi penskalaan ke grup penskalaan) dan ALIYUN::ESS::ScalingGroupEnable (mengaktifkan grup penskalaan).

Definisikan sumber daya dan asosiasikan sumber daya dalam template

Definisikan sumber daya jaringan dasar

Definisikan sumber daya jaringan dasar berikut dalam template: Vpc, VSwitch, dan EcsSecurityGroup.

  • Gunakan fungsi Ref bersama dengan pseudo parameter ALIYUN::StackName untuk mendapatkan nama stack. Kemudian, atur properti ke Ref: ALIYUN::StackName untuk mengaitkan nilai properti dengan nama stack. Dalam potongan kode berikut, nilai dari VpcName di Vpc dan nilai dari VSwitchName di VSwitch dikaitkan dengan nama stack. Untuk informasi lebih lanjut, lihat Ref dan ALIYUN::StackName.

  • Gunakan fungsi Fn::Select dan Fn::GetAZs bersama dengan parameter pseudo ALIYUN::Region untuk mendapatkan ID zona pertama dari wilayah tempat tumpukan berada. Dalam potongan kode berikut, nilai ZoneId dalam VSwitch diperoleh. Untuk informasi lebih lanjut, lihat Fungsi dan ALIYUN::Region.

Resources:
  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:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      CidrBlock: 192.168.0.0/24
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet

Definisikan sumber daya ECS

Definisikan sumber daya EcsInstanceGroup dalam template.

Gunakan fungsi Ref untuk mereferensikan nama logis sumber daya dalam template. Dalam potongan kode berikut, Vpc dalam VpcId, EcsSecurityGroup dalam SecurityGroupId, dan VSwitch dalam VSwitchId direferensikan. Untuk informasi lebih lanjut, lihat Ref.

Resources:
	EcsInstance:
    Type: ALIYUN::ECS::Instance
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: EcsSecurityGroup
      VSwitchId:
        Ref: VSwitch
      ImageId: centos_7
      AllocatePublicIP: false
      InstanceType: ecs.c5.large
      SystemDiskSize: 40
      SystemDiskCategory: cloud_essd
      Password:
        Ref: EcsInstancePassword

Definisikan sumber daya grup penskalaan

Definisikan sumber daya grup penskalaan berikut dalam template: EssInstanceScalingGroup, EssInstanceScalingGroupEnable, dan EssInstanceScalingConfiguration.

  • Gunakan fungsi Fn::GetAtt untuk mengembalikan nilai properti suatu sumber daya. Dalam potongan kode berikut, nilai InstanceIds dalam EssInstanceScalingGroupEnable dikembalikan. Untuk informasi lebih lanjut, lihat Fn::GetAtt.

  • Gunakan fungsi Fn::Sub untuk mengganti variabel dalam string input dengan nilai yang Anda tentukan. Dalam potongan kode berikut, nilai ScalingConfigurationName dalam EssInstanceScalingConfiguration diganti. Untuk informasi lebih lanjut, lihat Fn::Sub.

Resources:
	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
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstanceGroup
          - InstanceIds
      ScalingGroupId:
        Ref: EssInstanceScalingGroup

Template contoh lengkap

ROSTemplateFormatVersion: '2015-09-01'
Description: { }
Parameters:
  EcsInstancePassword:
    NoEcho: true
    Type: String
    Description:
      en: Kata sandi login server, Panjang 8~30, harus mencakup tiga (Huruf kapital, huruf kecil, angka, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Simbol khusus di dalam).
       
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    Label:
      en: Kata Sandi Instance
       
    ConstraintDescription:
      en: Panjang 8~30, harus mencakup tiga (Huruf kapital, huruf kecil, angka, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Simbol khusus di dalam).
       
    MinLength: 8
    MaxLength: 30
Resources:
  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:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      CidrBlock: 192.168.0.0/24
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  EcsInstance:
    Type: ALIYUN::ECS::Instance
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: EcsSecurityGroup
      VSwitchId:
        Ref: VSwitch
      ImageId: centos_7
      AllocatePublicIP: false
      InstanceType: ecs.c5.large
      SystemDiskSize: 40
      SystemDiskCategory: cloud_essd
      Password:
        Ref: EcsInstancePassword
  EssInstanceScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    Properties:
      ScalingGroupName:
        Ref: ALIYUN::StackName
      RemovalPolicys:
        - NewestInstance
      MinSize: 3
      MaxSize: 50
      VSwitchId:
        Ref: VSwitchId
      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
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstanceGroup
          - InstanceIds

Tambahkan kelompok parameter ke template dan tampilkan nilai opsional parameter berdasarkan kondisi filter

Template contoh di atas mendeklarasikan beberapa sumber daya dan asosiasi mereka. Nilai InstanceType dan SystemDiskCategory dalam EcsInstance adalah nilai literal. Setiap kali Anda membuat tumpukan di wilayah yang berbeda, Anda harus memodifikasi struktur template dan mengubah nilai properti.

Dalam kasus ini, Anda dapat menambahkan bagian Parameters untuk meningkatkan fleksibilitas dan kemampuan guna ulang template.

Tambahkan kelompok parameter ke template

Anda dapat menambahkan bagian Metadata ke template untuk mengelompokkan parameter yang didefinisikan dalam bagian Parameters dan mendefinisikan label untuk setiap kelompok.

Setelah Anda mendefinisikan sumber daya dan parameter dalam template, Anda dapat mengelompokkan parameter berdasarkan sumber daya atau berdasarkan parameter sumber daya. Tabel berikut mencantumkan kelompok parameter yang ditambahkan berdasarkan template contoh lengkap. Dalam contoh ini, parameter dikelompokkan berdasarkan nama sumber daya atau nama parameter sumber daya.

Kelompok Parameter

Nama Sumber Daya

Nama Parameter Sumber Daya

Konfigurasi jaringan dasar

Vpc, VSwitch, dan EcsSecurityGroup

VSwitchZoneId, VpcCidrBlock, dan VSwitchCidrBlock

Konfigurasi ECS

EcsInstance

ECSInstanceType, ECSInstanceGroupCount, ECSImageId, ECSDiskCategory, dan EcsInstancePassword

Konfigurasi grup penskalaan

EssInstanceScalingGroup, EssInstanceScalingGroupEnable, dan EssInstanceScalingConfiguration

ESSGroupMaxSize

Tampilkan nilai opsional parameter berdasarkan kondisi filter

Jika Anda ingin menentukan kondisi filter untuk parameter dan mengasosiasikan nilai parameter dengan kondisi filter yang dipilih di konsol ROS, Anda dapat menentukan AssociationProperty dan AssociationPropertyMetadata dalam template Anda. Dalam contoh ini, nilai opsional parameter ECSInstanceType ditampilkan berdasarkan nilai ZoneId. Untuk menentukan AssociationProperty dan AssociationPropertyMetadata dalam ECSInstanceType, gunakan ALIYUN::ECS::Instance untuk menanyakan nilai AssociationProperty yang didukung oleh ECSInstanceType dalam dokumentasi resmi ROS. Nilai berikut ditemukan: ALIYUN::ECS::Instance::InstanceType. Kemudian, tanyakan nilai AssociationPropertyMetadata ketika AssociationProperty disetel ke ALIYUN::ECS::Instance::InstanceType dan ZoneId digunakan sebagai kondisi filter. Untuk informasi lebih lanjut tentang dokumentasi resmi, lihat AssociationProperty dan AssociationPropertyMetadata.

Template contoh lengkap

ROSTemplateFormatVersion: '2015-09-01'
Deskripsi:
  en: scaling-ecs.
   
Parameter:
  VSwitchZoneId:
    Tipe: String
    PropertiAsosiasi: ALIYUN::ECS::Instance::ZoneId
    Deskripsi:
      en: ID Ketersediaan untuk switch yang ada.
       
    Label:
      en: VSwitch Zone ID
       
  VpcCidrBlock:
    Default: 192.168.0.0/16
    Label:
       
      en: VPC CIDR Block
    Tipe: String
    Deskripsi:
       
      en: Rentang segmen IP jaringan pribadi baru, disarankan menggunakan segmen IP berikut<font color='green'>[10.0.XX.XX/8]</font><br><font color='green'>[172.16.XX.XX/12]</font><br><font color='green'>[192.168.XX.XX/16]</font>.
  VSwitchCidrBlock:
    Default: 192.168.0.0/24
    Tipe: String
    Deskripsi:
       
      en: Harus menjadi sub-segmen dari jaringan pribadi dan tidak digunakan oleh VSwitch lainnya.
    Label:
       
      en: VSwitch CIDR Block
  ECSInstanceType:
    Tipe: String
    Label:
      en: Instance Type
       
    PropertiAsosiasi: ALIYUN::ECS::Instance::InstanceType
    MetadataPropertiAsosiasi:
      ZoneId: ${VSwitchZoneId}
      InstanceChargeType: ${InstanceChargeType}
  ECSDiskCategory:
    Tipe: String
    Deskripsi:
      en: '<font color=''blue''><b>Nilai opsional:</font>[cloud_efficiency: <font color=''green''>Efficient Cloud Disk</font>]<br>[cloud_ssd: <font color=''green''>SSD Cloud Disk</font>]<br>[cloud_essd: <font color=''green''>ESSD Cloud Disk</font>]<br>[cloud: <font color=''green''>Cloud Disk</font>]<br>[ephemeral_ssd: <font color=''green''>Local SSD Cloud Disk</font>]'.
       
    PropertiAsosiasi: ALIYUN::ECS::Disk::SystemDiskCategory
    MetadataPropertiAsosiasi:
      ZoneId: ${VSwitchZoneId}
      InstanceType: ${ECSInstanceType}
    Label:
      en: System Disk Type
       
  ECSImageId:
    PropertiAsosiasi: ALIYUN::ECS::Image::ImageId
    Label:
       
      en: Image ID
    Deskripsi:
       
      en: Image ID, mewakili sumber daya image untuk memulai satu instance ECS, <font><a href='https://www.alibabacloud.com/help/doc-detail/112977.html' target='_blank'><b>Lihat sumber daya image</font color='blue'></a>.
    Tipe: String
  EcsInstancePassword:
    NoEcho: true
    Tipe: String
    Deskripsi:
      en: Password login server, Panjang 8~30, harus mencakup tiga (Huruf kapital, huruf kecil, angka, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Simbol khusus di dalam).
       
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    Label:
      en: Instance Password
       
    ConstraintDescription:
      en: Panjang 8~30, harus mencakup tiga (Huruf kapital, huruf kecil, angka, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Simbol khusus di dalam).
       
    MinLength: 8
    MaxLength: 30
    PropertiAsosiasi: ALIYUN::ECS::Instance::Password
  ECSInstanceGroupCount:
    Tipe: Number
    Deskripsi:
      en: Jumlah Instance ECS
       
    Label:
      en: Instance Count
       
    Default: 3
  ESSGroupMaxSize:
    Tipe: Number
    Label:
      en: Jumlah maksimum instance ECS dalam ESS.
       
    Default: 50
SumberDaya:
  Vpc:
    Tipe: ALIYUN::ECS::VPC
    Properti:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName:
        Ref: ALIYUN::StackName
  VSwitch:
    Tipe: ALIYUN::ECS::VSwitch
    Properti:
      VSwitchName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      ZoneId:
        Ref: VSwitchZoneId
      CidrBlock:
        Ref: VSwitchCidrBlock
  EcsSecurityGroup:
    Tipe: ALIYUN::ECS::SecurityGroup
    Properti:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupIngress:
        - PortRange: 8080/8080
          Prioritas: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
          NicType: internet
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Prioritas: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: internet
        - PortRange: '-1/-1'
          Prioritas: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  EcsInstanceGroup:
    Tipe: ALIYUN::ECS::InstanceGroup
    Properti:
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
      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
  EssInstanceScalingGroupEnable:
    Tipe: ALIYUN::ESS::ScalingGroupEnable
    Properti:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstanceGroup
          - InstanceIds
      ScalingGroupId:
        Ref: EssInstanceScalingGroup
  EssInstanceScalingConfiguration:
    Tipe: ALIYUN::ESS::ScalingConfiguration
    Properti:
      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::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroup:
    Tipe: ALIYUN::ESS::ScalingGroup
    Properti:
      ScalingGroupName:
        Ref: ALIYUN::StackName
      RemovalPolicys:
        - NewestInstance
      MinSize:
        Ref: ECSInstanceGroupCount
      MaxSize: 50
      VSwitchId:
        Ref: VSwitch
      DefaultCooldown: 300
Metadata:
  ALIYUN::ROS::Interface:
    GrupParameter:
      - Parameter:
          - VSwitchZoneId
          - VpcCidrBlock
          - VSwitchCidrBlock
        Label:
          default:
             
            en: Konfigurasi Jaringan Dasar
      - Parameter:
          - ECSInstanceType
          - ECSDiskCategory
          - ECSImageId
          - EcsInstancePassword
          - ECSInstanceGroupCount
        Label:
          default:
            en: Instance
             
      - Parameter:
          - ESSGroupMaxSize
        Label:
          default:
             
            en: Konfigurasi ESS