Share via


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 produce una conmutación por error de Azure Cosmos DB de lectura múltiple y de escritura única 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 Pruébelo en la esquina superior derecha de un bloque de código. También puede abrir Cloud Shell en una pestaña independiente del explorador si va a 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 localmente, este tutorial requiere la versión 2.0.30 o posterior de la CLI de Azure. 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 Cloud Shell. Es posible que algunos comandos no funcionen como se describe si ejecuta la CLI 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. Para agregar un recurso a Chaos Studio, cree un destino y funcionalidades en el recurso. Las cuentas de Azure Cosmos DB solo tienen un tipo de destino (servicio directo) 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.

  1. 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 va a agregar una máquina virtual como destino directo de 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\":{}}"
    
  2. 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 está habilitando.

    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\":{}}"
    

Ahora 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 desea 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 desea realizar en las ramas, que se ejecutan en paralelo.

  1. Formule el json del experimento a partir del ejemplo JSON siguiente. Modifique el json para que se corresponda con el experimento que desea ejecutar mediante la API De creación de experimentos 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/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB"
              }
            ]
          }
        ]
      }
    }
    
  2. Cree el experimento mediante la CLI de Azure. Reemplace $SUBSCRIPTION_ID, $RESOURCE_GROUPy por $EXPERIMENT_NAME las propiedades del experimento. Asegúrese de que ha guardado y cargado el json del experimento. Actualice experiment.json con el nombre de 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. Anote el identificador de entidad de seguridad de esta identidad en la respuesta del paso siguiente.

Concesión del permiso del 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 comando siguiente. Reemplace $EXPERIMENT_PRINCIPAL_ID por el identificador de entidad de seguridad del paso anterior. Reemplace por $RESOURCE_ID el identificador 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

Ya está listo para ejecutar el experimento. Para ver el efecto, se recomienda abrir la información general de la cuenta de Azure Cosmos DB y ir a Replicar datos globalmente en una pestaña independiente del explorador. Actualice periódicamente durante el experimento para mostrar el intercambio de regiones.

  1. Inicie el experimento mediante la CLI de Azure. Reemplace $SUBSCRIPTION_ID, $RESOURCE_GROUPy por $EXPERIMENT_NAME 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
    
  2. 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 de servicio de Azure Cosmos DB, está listo para: