Öğretici: Ansible kullanarak Azure'da sanal makine ölçek kümelerini otomatik ölçeklendirme

Önemli

Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.7 (veya üzeri) gereklidir.

Azure sanal makine ölçek kümeleri , aynı, yük dengeli VM'lerden oluşan bir grup yapılandırmanıza olanak tanıyan bir Azure özelliğidir. Kümeleri ölçeklendirmek için ek maliyet yoktur ve bunlar sanal makinelerden oluşturulur. Yalnızca VM örnekleri, yük dengeleyiciler veya Yönetilen Disk depolama alanı gibi temel işlem kaynakları için ödeme yapın. Ölçek kümeleri ile, uygulamalarınızı çalıştırmak ve ölçeklendirmek için yönetim ve otomasyon katmanları sağlanır. Bunun yerine tek tek VM'leri el ile oluşturabilir ve yönetebilirsiniz. Ancak ölçek kümelerini kullanmanın iki temel avantajı vardır. Azure'da yerleşik olarak bulunurlar ve sanal makinelerinizi uygulama gereksinimlerini karşılayacak şekilde otomatik olarak ölçeklendirirler.

VM örneği sayısını otomatik olarak ayarlama özelliğine otomatik ölçeklendirme adı verilir. Otomatik ölçeklendirmenin avantajı, uygulamanızın performansını izlemek ve iyileştirmek için yönetim ek yükünü azaltmasıdır. Otomatik ölçeklendirme isteğe bağlı olarak veya tanımlı bir zamanlamaya göre yapılandırılabilir. Ansible'ı kullanarak, pozitif bir müşteri deneyimi için kabul edilebilir performansı tanımlayan otomatik ölçeklendirme kurallarını belirtebilirsiniz.

Bu makalede şunları öğreneceksiniz:

  • Otomatik ölçeklendirme profilini tanımlama
  • Yinelenen zamanlamaya göre otomatik ölçeklendirme
  • Uygulama performansına göre otomatik ölçeklendirme
  • Otomatik ölçeklendirme ayarları bilgilerini alma
  • Otomatik ölçeklendirme ayarını devre dışı bırakma

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Zamanlamaya göre otomatik ölçeklendirme

Bir ölçek kümesinde otomatik ölçeklendirmeyi etkinleştirmek için ilk olarak bir otomatik ölçeklendirme profili tanımlamanız gerekir. Bu profil varsayılan, en düşük ve en yüksek ölçek kümesi kapasitesini tanımlar. Bu sınırlar sürekli VM örnekleri oluşturmayarak maliyeti denetlemenize ve kabul edilebilir performansı bir ölçekleme olayında kalan en az sayıda örnekle dengelemenize olanak tanır.

Ansible, ölçek kümelerinizi belirli bir tarih veya yinelenen zamanlamaya göre ölçeklendirmenize olanak tanır.

Bu bölümdeki playbook kodu, her Pazartesi saat 10:00'da VM örneği sayısını üçe yükseltir.

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

---
- 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 kullanarak playbook'u çalıştırma

ansible-playbook vmss-auto-scale.yml

Performans verilerine göre otomatik ölçeklendirme

Uygulama talebiniz artarsa ölçek kümelerinizdeki VM örnekleri üzerindeki yük artar. 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. 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. Ansible, CPU kullanımı, disk kullanımı ve uygulama yükleme süresi gibi hangi ölçümlerin izleneceğini denetlemenize olanak tanır. Performans ölçümü eşiklerine göre, yinelenen bir zamanlamaya veya belirli bir tarihe göre ölçek kümelerinde ölçeği daraltabilir ve ölçeği genişletebilirsiniz.

Bu bölümdeki playbook kodu, her Pazartesi saat 18:00'de önceki 10 dakika boyunca CPU iş yükünü denetler.

Playbook, CPU yüzdesi ölçümlerine göre aşağıdaki eylemlerden birini yapar:

  • VM örneği sayısını dörte ölçeklendirir
  • VM örneği sayısını bire ölçeklendirir

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

---
- 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 kullanarak playbook'u çalıştırma

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

Otomatik ölçeklendirme ayarları bilgilerini alma

Bu bölümdeki playbook kodu, otomatik ölçeklendirme ayarının ayrıntılarını almak için modülünü kullanır azure_rm_autoscale_facts .

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

- 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 kullanarak playbook'u çalıştırma

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

Otomatik ölçeklendirme ayarlarını devre dışı bırakma

Otomatik ölçeklendirme ayarlarını devre dışı bırakmanın iki yolu vardır. Bunun bir yolu anahtarı olarak true değiştirmektir.enabledfalse İkinci yol, ayarı silmektir.

Bu bölümdeki playbook kodu otomatik ölçeklendirme ayarını siler.

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

- 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 kullanarak playbook'u çalıştırma

vmss-auto-scale-delete-setting.yml

Sonraki adımlar