

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configurer le routage en lecture seule dans un groupe de disponibilité Always On dans SQL Server sur AWS
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws"></a>

*Subhani Shaik, Amazon Web Services*

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

Ce modèle explique comment utiliser le réplica secondaire de secours dans SQL Server Always On en déchargeant les charges de travail en lecture seule du réplica principal vers le réplica secondaire.

La mise en miroir de bases de données comporte un one-to-one mappage. Vous ne pouvez pas lire directement la base de données secondaire. Vous devez donc créer des instantanés. La fonctionnalité de groupe de disponibilité Always On a été introduite dans Microsoft SQL Server 2012. Dans les versions ultérieures, des fonctionnalités majeures ont été introduites, notamment le routage en lecture seule. Dans les groupes de disponibilité Always On, vous pouvez lire les données directement à partir du réplica secondaire en passant le mode de réplication en lecture seule.

La solution de groupes de disponibilité Always On prend en charge la haute disponibilité (HA), la reprise après sinistre (DR) et constitue une alternative à la mise en miroir de bases de données. Les groupes de disponibilité Always On fonctionnent au niveau de la base de données et optimisent la disponibilité d'un ensemble de bases de données utilisateur.

SQL Server utilise le mécanisme de routage en lecture seule pour rediriger les connexions en lecture seule entrantes vers le réplica en lecture secondaire. Pour ce faire, vous devez ajouter les paramètres et valeurs suivants dans la chaîne de connexion :
+ `ApplicationIntent=ReadOnly`
+ `Initial Catalog=<database name>`

## Conditions préalables et limitations
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif avec un cloud privé virtuel (VPC), deux zones de disponibilité, des sous-réseaux privés et un groupe de sécurité
+ Deux machines Amazon Elastic Compute Cloud (Amazon EC2) avec [SQL Server 2019 Enterprise Edition Amazon Machine Image](https://aws.amazon.com/marketplace/pp/prodview-btjcozd246p6w) avec [Windows Server Failover Clustering (WSFC)](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/ec2-fci.html) configuré au niveau de l'instance et un groupe de disponibilité Always On configuré au niveau SQL Server entre le nœud principal (`WSFCNODE1`) et le nœud secondaire (`WSFCNODE2`), qui font partie du répertoire AWS Directory Service pour Microsoft Active Directory nommé `tagechtalk.com`
+ Un ou plusieurs nœuds configurés pour être acceptés `read-only` dans la réplique secondaire
+ Un écouteur nommé d'après `SQLAG1` le groupe de disponibilité Always On
+ Moteur de base de données SQL Server exécuté avec le même compte de service sur deux nœuds
+ Studio de gestion SQL Server (SSMS)
+ Une base de données de test nommée `test`

**Versions du produit**
+ SQL Server 2014 et versions ultérieures

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

**Pile technologique cible**
+ Amazon EC2
+ AWS Managed Microsoft AD
+ Amazon FSx

**Architecture cible**

Le schéma suivant montre comment l'écouteur du groupe de disponibilité Always On (AG) redirige les requêtes contenant le `ApplicationIntent` paramètre dans la connexion vers le nœud secondaire approprié.

![\[Processus en trois étapes entre deux zones de disponibilité pour le nœud 1 WSFC et le nœud 2 WSFC avec Amazon EFS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/19b5937b-da10-4c74-8619-fdcb758f2211/images/f9ba0f89-7dc2-4f4c-8eee-bef56968ad2d.png)


1. Une demande est envoyée à l'écouteur du groupe de disponibilité Always On.

1. Si la chaîne de connexion ne contient pas le `ApplicationIntent` paramètre, la demande est envoyée à l'instance principale.

1. Si la chaîne de connexion contient`ApplicationIntent=ReadOnly`, la demande est envoyée à l'instance secondaire avec une configuration de routage en lecture seule, qui est WSFC avec un groupe de disponibilité Always On.

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

**Services AWS**
+ [AWS Directory Service pour Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) permet à vos charges de travail sensibles aux annuaires et à vos ressources AWS d'utiliser Microsoft Active Directory dans le cloud AWS.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) fournit des systèmes de fichiers qui prennent en charge les protocoles de connectivité standard du secteur et offrent une disponibilité et une réplication élevées dans les régions AWS.

**Autres services**
+ SQL Server Management Studio (SSMS) est un outil permettant de connecter, de gérer et d'administrer les instances de SQL Server.
+ sqlcmd est un utilitaire de ligne de commande.

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

Pour plus d'informations sur les groupes de disponibilité Always On, consultez la [documentation 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).

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

### Configurer le routage en lecture seule
<a name="set-up-read-only-routing"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour les répliques en lecture seule. | Pour mettre à jour le réplica principal et le réplica secondaire en lecture seule, connectez-vous au réplica principal depuis SSMS et exécutez le code de l'*étape 1* dans la section *Informations supplémentaires*. | DBA | 
| Créez l'URL de routage. | Pour créer une URL de routage pour les deux répliques, exécutez le code de l'*étape 2* dans la section *Informations supplémentaires*. Dans ce code, `tagechtalk.com` se trouve le nom du répertoire Microsoft AD géré par AWS. | DBA | 
| Créez la liste de routage. | Pour créer la liste de routage pour les deux répliques, exécutez le code de l'étape 3 dans la section *Informations supplémentaires*. | DBA | 
| Validez la liste de routage. | Connectez-vous à l'instance principale depuis SQL Server Management Studio et exécutez le code de l'*étape 4* de la section *Informations supplémentaires* pour valider la liste de routage. | DBA | 

### Tester le routage en lecture seule
<a name="test-the-read-only-routing"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Connect à l'aide du ApplicationIntent paramètre. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 
| Effectuez un basculement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 

### Connectez-vous à l'aide de l'utilitaire de ligne de commande sqlcmd
<a name="connect-by-using-the-sqlcmd-command-line-utility"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Connectez-vous à l'aide de sqlcmd. | Pour vous connecter à partir de sqlcmd, exécutez le code de l'*étape 5* dans la section *Informations supplémentaires* à l'invite de commande. Une fois connecté, exécutez la commande suivante pour afficher le nom du serveur connecté.<pre>SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .</pre>La sortie affichera le nom de la réplique secondaire actuelle (`WSFCNODE1`). | DBA | 

## Résolution des problèmes
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La création de l'écouteur échoue avec le message « Le cluster WSFC n'a pas pu mettre la ressource de nom de réseau en ligne ». | Pour plus d'informations, consultez le billet de blog Microsoft [Create Listener Fails with Message « The WSFC cluster could not bring the Network Name resource online](https://techcommunity.microsoft.com/t5/sql-server-support-blog/create-listener-fails-with-message-the-wsfc-cluster-could-not/ba-p/318235) ». | 
| Problèmes potentiels, notamment d'autres problèmes liés à l'écouteur ou à l'accès au réseau. | Consultez la section [Résolution des problèmes de configuration des groupes de disponibilité 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) dans la documentation Microsoft. | 

## Ressources connexes
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-resources"></a>
+ [Configurer le routage en lecture seule pour un groupe de disponibilité 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)
+ [Résolution des problèmes de configuration des groupes de disponibilité 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)

## Informations supplémentaires
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional"></a>

**Étape 1. Mettre à jour les répliques en lecture seule**

```
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
```

**Étape 2. Création de l'URL de routage**

```
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
```

**Étape 3. Création de la liste de routage**

```
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
```

**Étape 4. Valider la liste de routage**

```
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
```

**Étape 5. Utilitaire de commande SQL**

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