Öğretici: Azure 'da sanal makine ölçek kümelerini anormal kullanarak otomatik ölçeklendirmeTutorial: Autoscale virtual machine scale sets in Azure using Ansible

Önemli

Ansible 2.7 (veya üzeri), bu makaledeki örnek playbook'ları çalıştırmak için gereklidir.Ansible 2.7 (or later) is required to run the sample playbooks in this article.

Azure sanal makine ölçek kümeleri olduğu dengeli VM'ler, bir grup özdeş, yük yapılandırmanıza olanak sağlayan bir Azure özelliğidir.Azure virtual machine scale sets is an Azure feature that lets you configure a group of identical, load balanced VMs. Ayarlar ölçeklendirmek için hiçbir ek ücret yoktur ve sanal makinelerden oluşturulmuş.There's no additional cost to scale sets and they're built from virtual machines. Yalnızca sanal makine örnekleri, yük Dengeleyiciler veya yönetilen Disk depolama alanı gibi temel işlem kaynakları için ödeme yaparsınız.You pay only for the underlying compute resources such as the VM instances, load balancers, or Managed Disk storage. Ölçek kümeleri ile, uygulamalarınızı çalıştırmak ve ölçeklendirmek için yönetim ve otomasyon katmanları sağlanır.With scale sets, the management and automation layers are provided to run and scale your applications. Bunun yerine el ile oluşturun ve tek tek sanal makineleri yönetme.You could instead manually create and manage individual VMs. Ancak, Ölçek kümelerini kullanmak için iki temel fayda vardır.However, there are two key benefits to using scale sets. Azure'da yerleşik ve uygulama ihtiyaçlarınızı karşılamak için sanal makinelerinizi otomatik olarak ölçeklendirme.They're built into Azure and they automatically scale your virtual machines to meet application needs.

Sanal makine örneklerinin sayısını otomatik olarak ayarlamaya yönelik özelliği otomatik ölçeklendirmeolarak adlandırılır.The feature of automatically adjusting the number of VM instances is called autoscale. Otomatik ölçeklendirme avantajı, uygulamanızın performansını izlemek ve iyileştirmek için yönetim yükünü azaltmasıdır.The benefit of autoscale is that it reduces the management overhead to monitor and optimize the performance of your application. Otomatik ölçeklendirme, isteğe veya tanımlı bir zamanlamaya göre yanıt olarak yapılandırılabilir.Autoscale can be configured in response to demand or on a defined schedule. Anormal bir şekilde kullanıldığında, olumlu bir müşteri deneyimi için kabul edilebilir performansı tanımlayan otomatik ölçeklendirme kurallarını belirtebilirsiniz.Using Ansible, you can specify the autoscale rules that define the acceptable performance for a positive customer experience.

Bu öğreticide, Ansible için kullanılır:In this tutorial, Ansible is used to:

  • Otomatik ölçeklendirme profilini tanımlamaDefine an autoscale profile
  • Yinelenen bir zamanlamaya göre otomatik ölçeklendirmeAutoscale based on a recurring schedule
  • Uygulama performansına göre otomatik ölçeklendirmeAutoscale based on app performance
  • Otomatik ölçeklendirme ayarları bilgilerini alRetrieve autoscale settings information
  • Otomatik ölçeklendirme ayarını devre dışı bırakmaDisable an autoscale setting

ÖnkoşullarPrerequisites

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Zamanlamaya göre otomatik ölçeklendirmeAutoscale based on a schedule

Bir ölçek kümesinde otomatik ölçeklendirmeyi etkinleştirmek için ilk olarak bir otomatik ölçeklendirme profili tanımlamanız gerekir.To enable autoscale on a scale set, you first define an autoscale profile. Bu profil varsayılan, en düşük ve en yüksek ölçek kümesi kapasitesini tanımlar.This profile defines the default, minimum, and maximum scale set capacity. Bu sınırlar, sanal makine örneklerini sürekli olarak oluşturmadığından maliyeti denetlemenizi sağlar ve ölçek genişletme olayında kalan minimum örnek sayısı ile kabul edilebilir performansı dengelemenize olanak tanır.These limits let you control cost by not continually creating VM instances, and balance acceptable performance with a minimum number of instances that remain in a scale-in event.

Anormal, ölçek kümelerinizi belirli bir tarih veya yinelenen zamanlamaya göre ölçeklendirmenize imkan tanır.Ansible allows you to scale your scale sets on a specific date or recurring schedule.

Bu bölümdeki PlayBook kodu, sanal makine örneklerinin sayısını her Pazartesi 10:00 ' de üç olarak artırır.The playbook code in this section increases the number of VM instances to three at 10:00 every Monday.

Aşağıdaki playbook'u vmss-auto-scale.yml olarak kaydedin:Save the following playbook as vmss-auto-scale.yml:

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks: 
    - name: Create autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         target:
           namespace: "Microsoft.Compute"
           types: "virtualMachineScaleSets"
           name: "{{ vmss_name }}"
         enabled: true
         profiles:
         - count: '3'
           min_count: '3'
           max_count: '3'
           name: Auto created scale condition
           recurrence_timezone: Pacific Standard Time
           recurrence_frequency: Week
           recurrence_days:
              - Monday
           recurrence_mins:
              - '0'
           recurrence_hours:
              - '10'

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook vmss-auto-scale.yml

Performans verilerine göre otomatik ölçeklendirmeAutoscale based on performance data

Uygulamanızın talebi arttıkça, ölçek kümelerinizin sanal makine örnekleri üzerindeki yük artar.If your application demand increases, the load on the VM instances in your scale sets increases. Bu kısa süreli bir talep olmayıp tutarlı şekilde yük artıyorsa, ölçek kümesindeki sanal makine örneği sayısını artırmak için otomatik ölçeklendirme kuralları yapılandırabilirsiniz.If this increased load is consistent, rather than just a brief demand, you can configure autoscale rules to increase the number of VM instances in the scale set. Bu sanal makine örnekleri oluşturulduğunda ve uygulamalarınız dağıtıldığında ölçek kümesi, yük dengeleyici aracılığıyla bunlara trafiği dağıtmaya başlar.When these VM instances are created and your applications are deployed, the scale set starts to distribute traffic to them through the load balancer. Anormal, CPU kullanımı, disk kullanımı ve uygulama yükleme süresi gibi hangi ölçümlerin izleneceğini denetlemenizi sağlar.Ansible allows you to control what metrics to monitor, such as CPU usage, disk usage, and app-load time. Performans ölçümü eşiklerine, yinelenen bir zamanlamaya göre veya belirli bir tarihe göre ölçek kümelerinde ölçeklendirebilir ve ölçek getirebilirsiniz.You can scale in and scale out in scale sets based on performance metric thresholds, by a recurring schedule, or by a particular date.

Bu bölümdeki PlayBook kodu, Pazartesi günü 18:00 ' de önceki 10 dakikalık CPU iş yükünü denetler.The playbook code in this section checks the CPU workload for the previous 10 minutes at 18:00 every Monday.

PlayBook, CPU yüzdesi ölçümlerine bağlı olarak aşağıdaki eylemlerden birini yapar:Based on the CPU percentage metrics, the playbook does one of the following actions:

  • Sanal makine örneği sayısını dört olarak ölçeklendirirScales out the number of VM instances to four
  • VM örneği sayısında bir tane olarak ölçeklendirirScales in the number of VM instances to one

Aşağıdaki playbook'u vmss-auto-scale-metrics.yml olarak kaydedin:Save the following playbook as vmss-auto-scale-metrics.yml:

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks:
  - name: Get facts of the resource group
    azure_rm_resourcegroup_facts:
      name: "{{ resource_group }}"
    register: rg

  - name: Get scale set resource uri
    set_fact:
      vmss_id: "{{ rg.ansible_facts.azure_resourcegroups[0].id }}/providers/Microsoft.Compute/virtualMachineScaleSets/{{ vmss_name }}"
    
  - name: Create autoscaling
    azure_rm_autoscale:
      resource_group: "{{ resource_group }}"
      name: "{{ name }}"
      target: "{{ vmss_id }}"
      enabled: true
      profiles:
      - count: '1'
        max_count: '1'
        min_count: '1'
        name: 'This scale condition is executed when none of the other scale condition(s) match'
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
      - count: '1'
        min_count: '1'
        max_count: '4'
        name: Auto created scale condition
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
        rules:
          - cooldown: 5
            direction: Increase
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: GreaterThan
            statistic: Average
            threshold: 70
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'
          - cooldown: 5
            direction: Decrease
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: LessThan
            statistic: Average
            threshold: 30
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook vmss-auto-scale-metrics.yml

Otomatik ölçeklendirme ayarları bilgilerini alGet autoscale settings information

Bu bölümdeki PlayBook kodu, otomatik ölçeklendirme ayarının ayrıntılarını almak için azure_rm_autoscale_facts modülünü kullanır.The playbook code in this section uses the azure_rm_autoscale_facts module to retrieve the details of autoscale setting.

Aşağıdaki playbook'u vmss-auto-scale-get-settings.yml olarak kaydedin:Save the following playbook as vmss-auto-scale-get-settings.yml:

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Retrieve autoscale settings information
      azure_rm_autoscale_facts:
        resource_group: "{{ resource_group }}"
        name: "{{ name }}"
      register: autoscale_query
    
    - debug:
        var: autoscale_query.autoscales[0]

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook vmss-auto-scale-get-settings.yml

Otomatik ölçeklendirme ayarlarını devre dışı bırakDisable autoscale settings

Otomatik ölçeklendirme ayarlarını devre dışı bırakmak için iki yol vardır.There are two ways to disable autoscale settings. Bunlardan biri, true enabled anahtarını falseolarak değiştirmenin bir yoludur.One way is to change the enabled key from true to false. İkinci yöntem ayarı silmektir.The second way is to delete the setting.

Bu bölümdeki PlayBook kodu, otomatik ölçeklendirme ayarını siler.The playbook code in this section deletes the autoscale setting.

Aşağıdaki playbook'u vmss-auto-scale-delete-setting.yml olarak kaydedin:Save the following playbook as vmss-auto-scale-delete-setting.yml:

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Delete autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         state: absent

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

vmss-auto-scale-delete-setting.yml

Sonraki adımlarNext steps