Oktatóanyag: Virtuálisgép-méretezési csoportok automatikus méretezése az Azure-ban az Ansible használatával

Fontos

Az Ansible 2.7 -et (vagy újabb verziót) a jelen cikkben szereplő minta forgatókönyvek futtatásához kell futtatni.

Az Azure-beli virtuálisgép-méretezési csoportok egy Olyan Azure-szolgáltatás, amellyel azonos, elosztott terhelésű virtuális gépek csoportját konfigurálhatja. A skálázási csoportoknak nincs további költsége, és virtuális gépekből vannak felépítve. Csak a mögöttes számítási erőforrásokért kell fizetnie, például a virtuálisgép-példányokért, a terheléselosztókért vagy a felügyelt lemeztárolókért. A méretezési csoportok biztosítják az alkalmazások futtatásához és méretezéséhez szükséges felügyeleti és automatizálási rétegeket. Ehelyett manuálisan is létrehozhat és kezelhet egyéni virtuális gépeket. A méretezési csoportok használatának azonban két fő előnye van. Az Azure-ba vannak beépítve, és automatikusan skálázzák a virtuális gépeket az alkalmazás igényeinek megfelelően.

A virtuálisgép-példányok számának automatikus módosításának funkcióját automatikus skálázásnak nevezzük. Az automatikus skálázás előnye, hogy csökkenti a felügyeleti többletterhelést az alkalmazás teljesítményének monitorozásához és optimalizálásához. Az automatikus skálázás igény szerint vagy meghatározott ütemezés szerint konfigurálható. Az Ansible használatával megadhatja azokat az automatikus skálázási szabályokat, amelyek meghatározzák a pozitív ügyfélélmény elfogadható teljesítményét.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • Automatikus skálázási profil meghatározása
  • Automatikus skálázás ismétlődő ütemezés alapján
  • Automatikus skálázás az alkalmazás teljesítménye alapján
  • Automatikus méretezési beállítások adatainak lekérése
  • Automatikus méretezési beállítás letiltása

Előfeltételek

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.

Automatikus skálázás ütemezés alapján

Az automatikus skálázás méretezési csoportban történő engedélyezéséhez először határozza meg az automatikus skálázási profilt. Ez a profil határozza meg a méretezési csoport alapértelmezett, minimális és maximális kapacitását. Ezek a korlátok lehetővé teszik a költségek szabályozását azáltal, hogy nem hoz létre folyamatosan virtuálisgép-példányokat, és kiegyensúlyozza az elfogadható teljesítményt a méretarányos eseményben maradó példányok minimális számával.

Az Ansible lehetővé teszi a méretezési csoportok skálázását egy adott dátum vagy ismétlődő ütemezés szerint.

Az ebben a szakaszban található forgatókönyvkód minden hétfőn 10:00-kor háromra növeli a virtuálisgép-példányok számát.

Mentse a következő forgatókönyvet vmss-auto-scale.yml néven:

---
- 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'

A forgatókönyv futtatása ansible-playbook használatával

ansible-playbook vmss-auto-scale.yml

Automatikus skálázás teljesítményadatok alapján

Ha az alkalmazásigény nő, a méretezési csoportok virtuálisgép-példányainak terhelése nő. Ha a megnövekedett terhelés állandó, nem csak pillanatnyi igény, akkor megadhatja, hogy az automatikus skálázási szabály növelje meg a virtuálisgép-példányok számát a méretezési csoportban. Ezen virtuálisgép-példányok létrehozását és az alkalmazások telepítését követően a méretezési csoport megkezdi a forgalom elosztását közöttük a terheléselosztón keresztül. Az Ansible segítségével szabályozhatja a monitorozni kívánt metrikákat, például a processzorhasználatot, a lemezhasználatot és az alkalmazásbetöltési időt. Vertikális felskálázást és vertikális felskálázást végezhet méretezési csoportokban a teljesítménymetrika küszöbértékei, az ismétlődő ütemezés vagy egy adott dátum alapján.

Az ebben a szakaszban található forgatókönyv-kód minden hétfőn 18:00-kor ellenőrzi az előző 10 perc processzorterhelését.

A cpu százalékos metrikái alapján a forgatókönyv az alábbi műveletek egyikét hajtja végre:

  • A virtuálisgép-példányok számát négyre skálázza
  • A virtuálisgép-példányok számának skálázása egyre

Mentse a következő forgatókönyvet vmss-auto-scale-metrics.yml néven:

---
- 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'

A forgatókönyv futtatása ansible-playbook használatával

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

Automatikus méretezési beállítások adatainak lekérése

Az ebben a szakaszban található forgatókönyv-kód a azure_rm_autoscale_facts modul használatával kéri le az automatikus méretezési beállítás részleteit.

Mentse a következő forgatókönyvet vmss-auto-scale-get-settings.yml néven:

- 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]

A forgatókönyv futtatása ansible-playbook használatával

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

Automatikus méretezési beállítások letiltása

Az automatikus skálázási beállítások kétféleképpen tilthatóak le. Az egyik módszer, ha a kulcsot a enabled következőre true módosítja false: . A második módszer a beállítás törlése.

Az ebben a szakaszban található forgatókönyvkód törli az automatikus skálázási beállítást.

Mentse a következő forgatókönyvet vmss-auto-scale-delete-setting.yml néven:

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

A forgatókönyv futtatása ansible-playbook használatával

vmss-auto-scale-delete-setting.yml

További lépések