Ejercicio: alta disponibilidad de uso general

Completado

En la unidad anterior ha obtenido información sobre la arquitectura de alta disponibilidad de Azure SQL. En este ejercicio, aprenderá cómo el nivel De uso general de Azure SQL Database se comporta de forma similar a una instancia de clúster de conmutación por error local. Esta funcionalidad puede llevar mucho tiempo o ser difícil de configurar en el entorno local, pero con Azure SQL, la obtendrá desde el primer momento.

En este ejercicio, usará la herramienta ostress, que es posible que haya utilizado en el módulo anterior para crear una carga de trabajo. Después, iniciará una conmutación por error mediante el módulo Azure PowerShell en Azure Cloud Shell. Por último, verá el efecto que tiene la conmutación por error en la carga de trabajo de ostress.

Alta disponibilidad básica en el nivel de servicio De uso general de Azure SQL

En este ejercicio, realizará los pasos siguientes:

  1. Ejecutará la carga de trabajo de ostress.
  2. Confirmará que el entorno está configurado correctamente.
  3. Usará PowerShell para iniciar una conmutación por error de una instancia de Azure SQL Database.
  4. Verá los resultados en ostress.
  5. Buscará en el portal las señales de que se ha producido una conmutación por error.

Ejecución de la carga de trabajo de ostress

El primer paso consiste en crear una carga de trabajo de larga duración. Esta carga de trabajo le permite ver cómo afecta una conmutación por error a la capacidad de leer y escribir datos, y cuánto tiempo tarda una conmutación por error en el nivel de servicio De uso general para Azure SQL Database. Usará ostress.

  1. Abra una nueva ventana del símbolo del sistema en el equipo local. Use cd para ir al directorio del repositorio que ha clonado o descargado antes, y que contiene el módulo de disponibilidad. Por ejemplo, podría usar este comando:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    El archivo ejecutable ostress se encuentra en esta carpeta. (Es pequeño). La carga de trabajo de ostress se conectará y ejecutará una consulta simple 50 000 veces.

  2. Use el siguiente script de ostress para ejecutar la carga de trabajo. Reemplace serverName por el nombre del servidor lógico de Azure SQL Database. Reemplace password por la contraseña.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
    

    Si la carga de trabajo se ejecuta correctamente, debería ver que el resultado de la consulta 847 aparece repetidamente en la ventana del símbolo del sistema.

    Si quiere detener la ejecución de la carga de trabajo de ostress antes de que termine, puede presionar Ctrl+C en el terminal.

    Si quiere volver a ejecutar la carga de trabajo, puede ejecutar el comando de nuevo.

Use PowerShell en Azure Cloud Shell para iniciar una conmutación por error y observe los resultados

  1. En el terminal de Azure Cloud Shell en el lado derecho de esta página, ejecute este script de PowerShell para configurar el entorno:

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. Configure las ventanas para que pueda ver este explorador y la ventana del símbolo del sistema al mismo tiempo.

  3. Ejecute este código en el terminal de Azure Cloud Shell:

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. Observe ahora los resultados en ostress desde la ventana del símbolo del sistema. Mientras se ejecuta este comando, debe observar cualquier cambio que aparezca en la ventana del símbolo del sistema. Comprobará que no puede acceder a la base de datos mientras tiene lugar la conmutación por error. La conmutación por error finalizará después de unos 30 segundos, y verá que la carga de trabajo se vuelve a ejecutar correctamente. La lógica de reintento de la aplicación es importante, ya que si Azure realiza la conmutación por error (por una serie de motivos), no querrá que la aplicación se bloquee o deje de funcionar durante más tiempo del necesario para que se produzca la conmutación por error.

  5. Esta capacidad de crear una conmutación por error a petición puede ser útil en ciertos escenarios. Tenga en cuenta que el servicio limita las veces que puede hacerlo. Ejecute el comando siguiente para intentar otra conmutación por error:

    # Create a failover again
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    

    Verá un error similar a este:

    Invoke-AzSqlDatabaseFailover: Long running operation failed with status 'Failed'. Additional Info:'There was a recent failover on the database or pool if database belongs in an elastic pool.  At least 15 minutes must pass between database failovers.'
    
  6. Ahora puede detener la carga de trabajo en la ventana del símbolo del sistema; para ello, seleccione la ventana y después presione Ctrl+C. Puede dejar la ventana abierta, ya que usará la misma carga de trabajo en el ejercicio siguiente.

    Es posible que se pregunte si hay alguna manera de comprobar si se ha producido una conmutación por error. Actualmente no hay ningún mensaje claro de "conmutación por error", pero Resource Health puede ser un buen indicador.

  7. En Azure Portal, vaya a la base de datos de Azure SQL. En el panel izquierdo, en Ayuda, seleccione Resource Health. Entre 5 y 15 minutos después de una conmutación por error, es posible que vea un evento de estado similar al que se muestra en la captura de pantalla siguiente. Este evento puede indicar varias cosas, pero una posibilidad es que haya pasado algo y Azure ha realizado la conmutación por error.

    Screenshot that shows a health event in the Azure portal.