Aracılığıyla paylaş


Azure CLI ile hizmet doğrudan hatası kullanan bir kaos denemesi oluşturma

Denetimli bir ortamda bu hatalara neden olarak uygulamanızın hatalara dayanıklı olduğunu doğrulamak için bir kaos denemesi kullanabilirsiniz. Bu makalede, bir kaos denemesi ve Azure Chaos Studio kullanarak çok okumalı, tek yazmalı Azure Cosmos DB yük devretmesine neden olursunuz. Bu denemeyi çalıştırmak, yük devretme olayı gerçekleştiğinde veri kaybına karşı savunmanıza yardımcı olabilir.

Herhangi bir hizmet doğrudan hatası için bir deneme ayarlamak ve çalıştırmak için aynı adımları kullanabilirsiniz. Doğrudan hizmet hatası, kaos aracısının yüklenmesini gerektiren aracı tabanlı hatalardan farklı olarak izleme gerektirmeden doğrudan bir Azure kaynağına karşı çalışır.

Ö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.

Dekont

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.

Azure Cosmos DB hesabınızda Chaos Studio'yu etkinleştirme

Bu kaynak önce Chaos Studio'ya eklenmedikçe Chaos Studio bir kaynağa hata ekleyemez. Kaynak üzerinde bir hedef ve özellikler oluşturarak Chaos Studio'ya bir kaynak eklersiniz. Azure Cosmos DB hesaplarının yalnızca bir hedef türü (doğrudan hizmet) ve bir özelliği (yük devretme) 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 olabilir.

  1. öğesini eklemekte olduğunuz kaynağın kaynak kimliğiyle değiştirerek $RESOURCE_ID bir hedef oluşturun. değerini, eklediğiniz hedef türle değiştirin$TARGET_TYPE:

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

    Örneğin, bir sanal makineyi hizmet doğrudan hedefi olarak ekliyorsanız:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. öğesini eklemekte olduğunuz kaynağın kaynak kimliğiyle değiştirerek $RESOURCE_ID hedefte özellikleri oluşturun. değerini, eklediğiniz hedef türle değiştirin$TARGET_TYPE. değerini, etkinleştirdiğiniz hata özelliğinin adıyla değiştirin$CAPABILITY.

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

    Örneğin, sanal makine kapatma özelliğini etkinleştiriyorsanız:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Artık Azure Cosmos DB hesabınızı 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. Deneme JSON örneğinizi aşağıdaki JSON örneğinden başlayarak 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.

    {
      "location": "eastus",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "steps": [
          {
            "name": "Step1",
            "branches": [
              {
                "name": "Branch1",
                "actions": [
                  {
                    "type": "continuous",
                    "selectorId": "Selector1",
                    "duration": "PT10M",
                    "parameters": [
                      {
                        "key": "readRegion",
                        "value": "East US 2"
                      }
                    ],
                    "name": "urn:csci:microsoft:cosmosDB:failover/1.0"
                  }
                ]
              }
            ]
          }
        ],
        "selectors": [
          {
            "id": "Selector1",
            "type": "List",
            "targets": [
              {
                "type": "ChaosTarget",
                "id": "/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  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.

Azure Cosmos DB hesabınıza 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 . Bu durumda, Azure Cosmos DB örneği kaynak kimliğidir. 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 "Cosmos DB Operator" --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 Azure Cosmos DB hesabına genel bakışınızı açmanızı ve Verileri ayrı bir tarayıcı sekmesinde genel olarak çoğaltma sekmesine gitmenizi öneririz. Bölge değişimini göstermek için deneme sırasında düzenli aralıklarla yenileyin.

  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

Azure Cosmos DB hizmeti doğrudan denemesi çalıştırdığınıza göre artık şunları yapmaya hazırsınız: