Cree un experimento de caos que use un error directo del servicio con la CLI de Azure
Puede usar un experimento de caos para comprobar que la aplicación es resistente a los errores provocando esos errores en un entorno controlado. En este artículo, se provoca una conmutación por error de Azure Cosmos DB de varias lecturas y una sola escritura mediante un experimento de caos y Azure Chaos Studio. La ejecución de este experimento puede ayudarle a defenderse contra la pérdida de datos cuando se produce un evento de conmutación por error.
Puede usar estos mismos pasos para configurar y ejecutar un experimento para cualquier error directo del servicio. Un error directo del servicio se ejecuta directamente en un recurso de Azure sin necesidad de instrumentación, a diferencia de los errores basados en agente, que requieren la instalación del agente de caos.
Requisitos previos
- Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
- Una cuenta de Azure Cosmos DB. Si no tiene una cuenta de Azure Cosmos DB, puede crear una.
- Al menos una configuración de región de lectura y escritura para la cuenta de Azure Cosmos DB.
Apertura de Azure Cloud Shell
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.
Para abrir Cloud Shell, seleccione Probarlo en la esquina superior derecha de un bloque de código. También puede abrir Cloud Shell en una pestaña independiente desde Bash. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, luego, seleccione Entrar para ejecutarlos.
Si quiere instalar y usar la CLI en un entorno local, para este tutorial se requiere la versión 2.0.30 de la CLI de Azure o una versión posterior. Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Nota:
Estas instrucciones usan un terminal de Bash en Azure Cloud Shell. Es posible que algunos comandos no funcionen tal como se describe si la CLI se ejecuta localmente o en un terminal de PowerShell.
Habilitación de Chaos Studio en la cuenta de Azure Cosmos DB
Chaos Studio no puede insertar errores en un recurso a menos que ese recurso se haya agregado primero a Chaos Studio. Agregue un recurso a Chaos Studio mediante la creación de un destino y funcionalidades en el recurso. Las cuentas de Azure Cosmos DB solo tienen un tipo de destino (directo de servicio) y una funcionalidad (conmutación por error). Otros recursos pueden tener hasta dos tipos de destino. Un tipo de destino es para errores directos del servicio. Otro tipo de destino es para errores basados en agente. Otros recursos pueden tener muchas otras funcionalidades.
Cree un destino reemplazando
$RESOURCE_ID
por el identificador de recurso del recurso que va a agregar. Reemplace por$TARGET_TYPE
el tipo de destino que va a agregar:az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/$TARGET_TYPE?api-version=2023-11-01" --body "{\"properties\":{}}"
Por ejemplo, si se incorpora una máquina virtual como destino directo del servicio:
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\":{}}"
Cree las funcionalidades en el destino reemplazando
$RESOURCE_ID
por el identificador de recurso del recurso que va a agregar. Reemplace por$TARGET_TYPE
el tipo de destino que va a agregar. Reemplace$CAPABILITY
por el nombre de la funcionalidad de error que va a habilitar.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\":{}}"
Por ejemplo, si habilita la funcionalidad de apagado de la máquina virtual:
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\":{}}"
Ya ha agregado correctamente la cuenta de Azure Cosmos DB a Chaos Studio.
Creación de un experimento
Ahora puede crear el experimento. Un experimento de caos define las acciones que se desean realizar en los recursos de destino. Las acciones se organizan y ejecutan en pasos secuenciales. El experimento de caos también define las acciones que se desean realizar en las ramas, que se ejecutan en paralelo.
Formule el JSON del experimento a partir del siguiente ejemplo de JSON. Modifique el JSON para que se corresponda con el experimento que desea ejecutar mediante la API Crear experimento y la biblioteca de errores.
{ "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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB" } ] } ] } }
Cree el experimento mediante la CLI de Azure. Reemplace
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
y$EXPERIMENT_NAME
por las propiedades del experimento. Asegúrese de haber guardado y cargado el JSON del experimento. Actualiceexperiment.json
con el nombre del archivo 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
Cada experimento crea una identidad administrada asignada por el sistema correspondiente. Observe el id. principal de esta identidad en la respuesta del paso siguiente.
Conceder permiso de experimento a la cuenta de Azure Cosmos DB
Al crear un experimento de caos, Chaos Studio crea una identidad administrada asignada por el sistema que ejecuta errores en los recursos de destino. Esta identidad debe tener los permisos adecuados en el recurso de destino para que el experimento se ejecute correctamente.
Proporcione al experimento acceso a los recursos mediante el siguiente comando. Reemplace $EXPERIMENT_PRINCIPAL_ID
por el id. principal del paso anterior. Reemplace $RESOURCE_ID
por el id. de recurso del recurso de destino. En este caso, es el identificador de recurso de la instancia de Azure Cosmos DB. Cambie el rol al rol integrado adecuado para ese tipo de recurso. Ejecute este comando para cada recurso de destino en el experimento.
az role assignment create --role "Cosmos DB Operator" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID
Ejecutar el experimento
Ahora ya puede ejecutar el experimento. Para ver el efecto, se recomienda abrir la información general de la cuenta de Azure Cosmos DB e ir a Replicar datos globalmente en una pestaña independiente del explorador. Actualice periódicamente durante el experimento para mostrar el intercambio de región.
Inicie el experimento mediante la CLI de Azure. Reemplace
$SUBSCRIPTION_ID
,$RESOURCE_GROUP
y$EXPERIMENT_NAME
por las propiedades del experimento.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
La respuesta incluye una dirección URL de estado que puede usar para consultar el estado del experimento mientras se ejecuta.
Pasos siguientes
Ahora que ha ejecutado un experimento directo del servicio de Azure Cosmos DB, podrá: