

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure el enrutamiento de solo lectura en un grupo de disponibilidad Always On en SQL Server en AWS
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws"></a>

*Subhani Shaik, Amazon Web Services*

## Resumen
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-summary"></a>

Este patrón explica cómo usar la réplica secundaria en espera en SQL Server Always On descargando las cargas de trabajo de solo lectura de la réplica principal a la réplica secundaria.

La duplicación de bases de datos tiene mapeo. one-to-one No puede leer la base de datos secundaria directamente, por lo que debe crear instantáneas. La característica de grupo de disponibilidad Always On se introdujo en Microsoft SQL Server 2012. En versiones posteriores se han introducido importantes funcionalidades, incluido el enrutamiento de solo lectura. En los grupos de disponibilidad de Always On, puede leer los datos directamente desde la réplica secundaria cambiando el modo de réplica a uno de solo lectura.

La solución de grupos de disponibilidad Always On ofrece alta disponibilidad (HA), recuperación de desastres (DR) y una alternativa a la duplicación de bases de datos. Los grupos de disponibilidad Always On funcionan a nivel de base de datos, y maximizan la disponibilidad de un conjunto de bases de datos de usuarios.

SQL Server emplea el mecanismo de enrutamiento de solo lectura para redirigir las conexiones entrantes de solo lectura a la réplica de lectura secundaria. Para ello, debe agregar los siguientes parámetros y valores en la cadena de conexión:
+ `ApplicationIntent=ReadOnly`
+ `Initial Catalog=<database name>`

## Requisitos previos y limitaciones
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa con una nube privada virtual (VPC), dos zonas de disponibilidad, subredes privadas y un grupo de seguridad
+ Dos máquinas Amazon Elastic Compute Cloud (Amazon EC2) con [SQL Server 2019 Enterprise Edition Amazon Machine Image](https://aws.amazon.com/marketplace/pp/prodview-btjcozd246p6w) con [clústeres de conmutación por error de Windows Server (WSFC)](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/ec2-fci.html) configurados a nivel de instancia y un grupo de disponibilidad Always On configurado a nivel de SQL Server entre el nodo principal (`WSFCNODE1`) y el nodo secundario (`WSFCNODE2`), que forman parte del directorio AWS Directory Service para Microsoft Active Directory denominado `tagechtalk.com`
+ Uno o más nodos configurados para aceptar `read-only` en la réplica secundaria
+ Un oyente con el nombre `SQLAG1` para el grupo de disponibilidad Always On
+ SQL Server Database Engine en ejecución con la misma cuenta de servicio en dos nodos
+ SQL Server Management Studio (SSMS)
+ Una base de datos de prueba llamada `test`

**Versiones de producto**
+ SQL Server 2014 y versiones posteriores

## Arquitectura
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-architecture"></a>

**Pila de tecnología de destino**
+ Amazon EC2
+ AWS Managed Microsoft AD
+ Amazon FSx

**Arquitectura de destino**

El siguiente diagrama muestra cómo el oyente del grupo de disponibilidad (AG) Always On redirige las consultas que contienen el parámetro `ApplicationIntent` en la conexión al nodo secundario correspondiente.

![\[Proceso de tres pasos entre dos zonas de disponibilidad para el nodo WSFC 1 y nodo WSFC 2 con Amazon EFS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/19b5937b-da10-4c74-8619-fdcb758f2211/images/f9ba0f89-7dc2-4f4c-8eee-bef56968ad2d.png)


1. Se envía una solicitud al oyente del grupo de disponibilidad Always On.

1. Si la cadena de conexión no tiene el parámetro `ApplicationIntent`, la solicitud se envía a la instancia principal.

1. Si la cadena de conexión contiene `ApplicationIntent=ReadOnly`, la solicitud se envía a la instancia secundaria con una configuración de enrutamiento de solo lectura. Con un grupo de disponibilidad Always On, es WSFC.

## Tools (Herramientas)
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-tools"></a>

**Servicios de AWS**
+ [AWS Directory Service para Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) permite que las cargas de trabajo compatibles con un directorio y los recursos de AWS utilicen Active Directory administrado en la nube de AWS.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) proporciona sistemas de archivos que admiten los protocolos de conectividad estándares del sector y ofrecen alta disponibilidad y replicación en todas las regiones de AWS.

**Otros servicios**
+ SQL Server Management Studio (SSMS) es una herramienta para conectar, gestionar y administrar instancias de SQL Server.
+ sqlcmd es una utilidad de línea de comandos.

## Prácticas recomendadas
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-best-practices"></a>

Para obtener más información sobre los grupos de disponibilidad Always On, consulte la [documentación de SQL Server](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-ver16).

## Epics
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-epics"></a>

### Configure el enrutamiento de solo lectura
<a name="set-up-read-only-routing"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice las réplicas a solo lectura. | Para actualizar la réplica principal y la secundaria a solo lectura, conéctese a la réplica principal desde SSMS y ejecute el código del *Paso 1* que encontrará en la sección de *Información adicional*. | Administrador de base de datos | 
| Cree la URL de enrutamiento. | Para crear la URL de enrutamiento para ambas réplicas, ejecute el código del *Paso 2* que encontrará en la sección de *Información adicional*. En este código, `tagechtalk.com` es el nombre del directorio de AWS Managed Microsoft AD. | Administrador de base de datos | 
| Cree la lista de enrutamiento. | Para crear la lista de enrutamiento para ambas réplicas, ejecute el código del Paso 3 que encontrará en la sección de *Información adicional*. | Administrador de base de datos | 
| Valide la lista de enrutamiento. | Conéctese a la instancia principal desde SQL Server Management Studio y ejecute el código del *Paso 4* que encontrará en la sección de *Información adicional* para validar la lista de enrutamiento. | Administrador de base de datos | 

### Pruebe el enrutamiento de solo lectura
<a name="test-the-read-only-routing"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conéctese mediante el ApplicationIntent parámetro. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | Administrador de base de datos | 
| Realice una conmutación por error. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | Administrador de base de datos | 

### Conéctese mediante la utilidad de línea de comandos sqlcmd
<a name="connect-by-using-the-sqlcmd-command-line-utility"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conéctese mediante sqlcmd. | Para conectarse desde sqlcmd, ejecute el código del *Paso 5* que encontrará en la sección de *Información adicional* en la línea de comandos. Después de conectarse, ejecute el siguiente comando para mostrar el nombre del servidor conectado.<pre>SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .</pre>El resultado devolverá el nombre de la réplica secundaria actual (`WSFCNODE1`). | Administrador de base de datos | 

## Resolución de problemas
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| No se puede crear el oyente y aparece el mensaje “El clúster WSFC no ha podido poner en línea el recurso Nombre de red”. | Para mayor información, consulte el blog de Microsoft [La creación del oyente dio el mensaje de error: “el clúster WSFC no ha podido poner en línea el recurso Nombre de red”](https://techcommunity.microsoft.com/t5/sql-server-support-blog/create-listener-fails-with-message-the-wsfc-cluster-could-not/ba-p/318235). | 
| Posibles problemas, incluidos otros problemas con los oyentes o problemas de acceso a la red. | Consulte [Solución de problemas de configuración de grupos de disponibilidad Always On (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16) en la documentación de Microsoft. | 

## Recursos relacionados
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-resources"></a>
+ [Configure el enrutamiento de solo lectura en un grupo de disponibilidad Always On](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-ver16)
+ [Consulte Solución de problemas de configuración de grupos de disponibilidad Always On (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16)

## Información adicional
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional"></a>

**Paso 1. Actualice las réplicas a solo lectura**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
```

**Paso 2. Cree la URL de enrutamiento**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433'))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433'))
GO
```

**Paso 3. Cree la URL de enrutamiento**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1')));
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2')));
GO
```

**Paso 4. Cree la lista de enrutamiento**

```
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
```

**Paso 5. Utilidad de comandos SQL**

```
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly
```