Öğ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.
Ansible'ı Yükleme: Aşağıdaki seçeneklerden birini yapın:
- Ansible'ı Linux sanal makinesine yükleme ve yapılandırma
- Azure Cloud Shell'i yapılandırın ve Linux sanal makinesine erişiminiz yoksa Ansible ile bir sanal makine oluşturun.
- Sanal makine ölçek kümesi: Henüz bir ölçek kümeniz yoksa Ansible ile bir ölçek kümesi yapılandırabilirsiniz.
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.enabled
false
İ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