Konakları seçmek için dinamik hedefleme kullanan bir kaos denemesi oluşturma

Bir denemeyi çalıştırmak üzere bir dizi hedef seçmek için bir kaos denemesinde dinamik hedeflemeyi kullanabilirsiniz. Bu makalede, sanal makine ölçek kümelerini kullanılabilirlik alanına göre kapatmak için dinamik olarak nasıl hedefleneceğini göstereceğiz. Bu denemeyi çalıştırmak, kesinti olması durumunda farklı bir bölgedeki Azure Sanal Makine Ölçek Kümeleri örneğine yük devretme testi gerçekleştirmenize yardımcı olabilir.

Dinamik hedeflemeyi destekleyen herhangi bir hata için bir deneme ayarlamak ve çalıştırmak için bu adımları kullanabilirsiniz. Şu anda yalnızca sanal makine ölçek kümesi kapatma işlemi dinamik hedeflemeyi destekler.

Önkoşullar

Azure Cloud Shell’i açın

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabukdur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesindeki Deneyin'i seçin. Bash'e giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de açabilirsiniz. Kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.

CLI'yi yerel olarak yüklemek ve kullanmak istiyorsanız, bu öğretici için Azure CLI sürüm 2.0.30 veya üzeri gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Not

Bu yönergelerde Cloud Shell'de bash terminali kullanılır. CLI'yi yerel olarak veya PowerShell terminalinde çalıştırıyorsanız bazı komutlar açıklandığı gibi çalışmayabilir.

Sanal Makine Ölçek Kümeleri örneğinizde Chaos Studio'yu etkinleştirme

Azure Chaos Studio, bu kaynak önce Chaos Studio'ya eklenmediği sürece bir kaynağa hata ekleyemez. Chaos Studio'ya kaynak eklemek için kaynak üzerinde bir hedef ve özellikler oluşturun.

Sanal Makine Ölçek Kümeleri yalnızca bir hedef türü (Microsoft-VirtualMachineScaleSet) ve bir özelliği (shutdown) vardır. Diğer kaynakların en fazla iki hedef türü olabilir. Bir hedef türü, hizmet doğrudan hataları içindir. Başka bir hedef türü aracı tabanlı hatalar içindir. Diğer kaynakların başka birçok özelliği de olabilir.

  1. Sanal makine ölçek kümesi kaynağınız için bir hedef oluşturun. değerini, eklediğiniz sanal makine ölçek kümesinin kaynak kimliğiyle değiştirin $RESOURCE_ID :

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. Sanal makine ölçek kümesi hedefinde özellikleri oluşturun. değerini, eklediğiniz kaynağın kaynak kimliğiyle değiştirin $RESOURCE_ID . VirtualMachineScaleSet Hedefi ve Shutdown-2.0 özelliği belirtin.

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet/capabilities/Shutdown-2.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Şimdi sanal makine ölçek kümenizi Chaos Studio'ya başarıyla eklediniz.

Deneme oluşturma

Artık denemenizi oluşturabilirsiniz. Kaos denemesi, hedef kaynaklara karşı uygulamak istediğiniz eylemleri tanımlar. Eylemler sıralı adımlarla düzenlenir ve çalıştırılır. Kaos denemesi, paralel olarak çalışan dallara karşı yapmak istediğiniz eylemleri de tanımlar.

  1. Aşağıdaki Sanal Makine Ölçek Kümeleri Shutdown 2.0 JSON örneğiyle başlayarak deneme JSON'ınızı formüle edin. Deneme API'sini ve hata kitaplığını kullanarak çalıştırmak istediğiniz denemeye karşılık gelen JSON'u değiştirin. Şu anda dinamik hedefleme yalnızca Sanal Makine Ölçek Kümeleri Shutdown 2.0 hatasıyla kullanılabilir ve yalnızca kullanılabilirlik alanlarına göre filtrelenebilir.

    • filter Hedeflere göre filtre uygulamak üzere Azure kullanılabilirlik alanlarının listesini yapılandırmak için öğesini kullanın. sağlamazsanız filterhata, sanal makine ölçek kümesindeki tüm örnekleri kapatır.
    • Deneme, belirtilen bölgelerdeki tüm Sanal Makine Ölçek Kümeleri örneklerini hedefler.
     {
        "location": "westus2",
        "identity": {
            "type": "SystemAssigned"
        },
        "properties": {
            "selectors": [
                {
                    "type": "List",
                    "id": "Selector1",
                    "targets": [
                        {
                            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-demo/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet",
                            "type": "ChaosTarget"
                        }
                    ],
                    "filter": {
                        "type": "Simple",
                        "parameters": {
                            "zones": [
                                "1"
                            ]
                        }
                    }
                }
            ],
            "steps": [
                {
                    "name": "Step1",
                    "branches": [
                        {
                            "name": "Branch1",
                            "actions": [
                                {
                                    "name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0",
                                    "type": "continuous",
                                    "selectorId": "Selector1",
                                    "duration": "PT2M",
                                    "parameters": [
                                        {
                                            "key": "abruptShutdown",
                                            "value": "false"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. Azure CLI'yi kullanarak denemeyi oluşturun. , $RESOURCE_GROUPve $EXPERIMENT_NAME öğesini denemenizin özellikleriyle değiştirin$SUBSCRIPTION_ID. Deneme JSON'unuzu kaydettiğinizden ve karşıya yüklediğinizden emin olun. JSON dosya adınızla güncelleştirin experiment.json .

    az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
    

    Her deneme, sistem tarafından atanan ilgili yönetilen kimliği oluşturur. Sonraki adıma ilişkin yanıtta bu kimliğin asıl kimliğini not edin.

Sanal makine ölçek kümelerinize deneme izni verme

Bir kaos denemesi oluşturduğunuzda Chaos Studio, hedef kaynaklarınızda hataları yürüten sistem tarafından atanan bir yönetilen kimlik oluşturur. Denemenin başarıyla çalışması için bu kimliğe hedef kaynak için uygun izinler verilmelidir.

Aşağıdaki komutu kullanarak denemeye kaynaklarınıza erişim verin. değerini önceki adımdaki asıl kimlikle değiştirin $EXPERIMENT_PRINCIPAL_ID . değerini hedef kaynağın kaynak kimliğiyle değiştirin $RESOURCE_ID . Rolü, ilgili kaynak türü için uygun yerleşik rol olarak değiştirin. Denemenizde hedeflenen her kaynak için bu komutu çalıştırın.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

Denemenizi çalıştırma

Artık denemenizi çalıştırmaya hazırsınız. Etkiyi görmek için portalda sanal makine ölçek kümeleri hedeflerinizin kapatılıp kapatılmadığını denetleyin. Bu hizmetler kapatılırsa sanal makine ölçek kümelerinizde çalışan hizmetlerin hala beklendiği gibi çalışıp çalışmadığını denetleyin.

  1. Azure CLI'yi kullanarak denemeyi başlatın. , $RESOURCE_GROUPve $EXPERIMENT_NAME öğesini denemenizin özellikleriyle değiştirin$SUBSCRIPTION_ID.

    az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
    
  2. Yanıt, deneme çalışırken deneme durumunu sorgulamak için kullanabileceğiniz bir durum URL'si içerir.

Sonraki adımlar

Dinamik olarak hedeflenen bir sanal makine ölçek kümesi kapatma denemesi çalıştırdığınıza göre artık şunları yapmaya hazırsınız: