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 aboneliği. Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
- Bir Azure Cosmos DB hesabı. Azure Cosmos DB hesabınız yoksa bir hesap oluşturabilirsiniz.
- Azure Cosmos DB hesabınız için en az bir okuma ve bir yazma bölgesi kurulumu.
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.
öğ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\":{}}"
öğ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.
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" } ] } ] } }
Azure CLI'yi kullanarak denemeyi oluşturun. ,
$RESOURCE_GROUP
ve$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ştirinexperiment.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.
Azure CLI'yi kullanarak denemeyi başlatın. ,
$RESOURCE_GROUP
ve$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
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:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin