Déployer un cluster Big Data SQL Server avec une haute disponibilitéDeploy SQL Server Big Data Cluster with high availability

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server noAzure SQL DatabasenoAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Étant donné que les clusters Big Data SQL Server se trouvent sur Kubernetes en tant qu’applications conteneurisées et qu’ils utilisent des fonctionnalités telles que des ensembles avec état et un stockage persistant, cette infrastructure intègre le contrôle d’intégrité, la détection des défaillances et les mécanismes de basculement que les composants de cluster exploitent pour maintenir l’intégrité du service.Because SQL Server Big Data Clusters is on Kubernetes as containerized applications, and uses features like stateful sets and persistent storage, this infrastructure has built-in health monitoring, failure detection, and failover mechanisms that cluster components leverage to maintain service health. Pour une fiabilité accrue, vous pouvez également configurer l’instance principale SQL Server ou le nœud de nom HDFS et les services partagés Spark à déployer avec des réplicas supplémentaires dans une configuration à haute disponibilité.For increased reliability, you can also configure SQL Server master instance or HDFS name node and Spark shared services to deploy with additional replicas in a high availability configuration. La supervision, la détection des défaillances et le basculement automatique sont gérés par un service de gestion de cluster Big Data, à savoir le service de contrôle.Monitoring, failure detection, and automatic failover are managed by a big data cluster management service, namely the control service. Ce service assure toutes les opérations, sans intervention de l’utilisateur, de la configuration du groupe de disponibilité jusqu’à l’ajout de bases de données au groupe de disponibilité et à la coordination du basculement et des mises à niveau, en passant par la configuration des points de terminaison de mise en miroir de bases de données.This service provide without user intervention – all from availability group setup, configuring database mirroring endpoints, to adding databases to the availability group or failover and upgrade coordination.

L’image suivante illustre le déploiement d’un groupe de disponibilité dans un cluster Big Data SQL Server :The following image represents how an availability group is deployed in a SQL Server Big Data Cluster:

:::image type="content" source="media/deployment-high-availability/contained-ag.png" alt-text="high-availability-ag-bdc"::::::image type="content" source="media/deployment-high-availability/contained-ag.png" alt-text="high-availability-ag-bdc":::

Voici quelques-unes des fonctionnalités favorisées par les groupes de disponibilité :Here are some of the capabilities that availability groups enable:

  • Si les paramètres de haute disponibilité sont spécifiés dans le fichier de configuration de déploiement, un seul groupe de disponibilité nommé containedag est créé.If the high availability settings are specified in the deployment configuration file, a single availability group named containedag is created. Par défaut, containedag a trois réplicas, y compris un réplica principal.By default, containedag has three replicas, including primary. Toutes les opérations CRUD pour le groupe de disponibilité sont gérées en interne, y compris la création du groupe de disponibilité ou la jonction des réplicas au groupe de disponibilité créé.All CRUD operations for the availability group are managed internally, including creating the availability group or joining replicas to the availability group created. Des groupes de disponibilité supplémentaires ne peuvent pas être créés dans l’instance principale SQL Server d’un cluster Big Data.Additional availability groups cannot be created in the SQL Server master instance in a big data cluster.

  • Toutes les bases de données sont automatiquement ajoutées au groupe de disponibilité, y compris toutes les bases de données utilisateur et système telles que master et msdb.All databases are automatically added to the availability group, including all user and system databases like master and msdb. Cette fonctionnalité fournit une vue monosystème sur les réplicas des groupes de disponibilité.This capability provides a single-system view across the availability group replicas. Les bases de données de modèle supplémentaires (model_replicatedmaster et model_msdb) sont utilisées pour alimenter la partie répliquée des bases de données système.Additional model databases - model_replicatedmaster and model_msdb - are used to seed the replicated portion of the system databases. En plus de ces bases de données, vous verrez les bases de données containedag_master et containedag_msdb si vous vous connectez directement à l’instance.In addition to these databases, you will see containedag_master and containedag_msdb databases if you connect directly to the instance. Les bases de données containedag représentent master et msdb au sein du groupe de disponibilité.The containedag databases represent the master and msdb inside the availability group.

    Important

    Au moment de la publication de SQL Server 2019 CU1, seules les bases de données créées par une instruction CREATE DATABASE sont automatiquement ajoutées au groupe de disponibilité.At the time of the SQL Server 2019 CU1 release, only databases created as result of a CREATE DATABASE statement are automatically added to the availability group. Les bases de données créées sur l’instance par d’autres workflows comme la restauration ne sont pas encore ajoutées au groupe de disponibilité et l’administrateur de cluster Big Data doit le faire manuellement.Databases created on the instance as result of other workflows like restore are not yet added to the availability group and big data cluster admin would have to do this manually. Pour obtenir des instructions, consultez la section Se connecter à l’instance SQL Server.See the Connect to SQL Server instance section for instructions.

  • Les bases de données de configuration Polybase ne sont pas incluses dans le groupe de disponibilité, car elles incluent des métadonnées de niveau d’instance spécifiques à chaque réplica.Polybase configuration databases are not included in the availability group because they include instance level metadata specific to each replica.

  • Un point de terminaison externe est automatiquement provisionné pour la connexion aux bases de données au sein du groupe de disponibilité.An external endpoint is automatically provisioned for connecting to databases within the availability group. Ce point de terminaison master-svc-external joue le rôle de l’écouteur du groupe de disponibilité.This endpoint master-svc-external plays the role of the availability group listener.

  • Un deuxième point de terminaison externe est provisionné pour les connexions en lecture seule aux réplicas secondaires afin d’effectuer un scale-out des charges de travail de lecture.A second external endpoint is provisioned for read-only connections to the secondary replicas to scale out the read workloads.

DéployerDeploy

Pour déployer une instance principale SQL Server dans un groupe de disponibilité :To deploy SQL Server master in an availability group:

  1. Activez la fonctionnalité hadrEnable the hadr feature
  2. Spécifiez le nombre de réplicas pour le groupe de disponibilité (3 au minimum)Specify the number of replicas for the AG (minimum is 3)
  3. Configurez les détails du deuxième point de terminaison externe créé pour les connexions aux réplicas secondaires en lecture seuleConfigure the details of the second external endpoint created for connections to the read-only secondary replicas

Vous pouvez utiliser les profils de configuration intégrés aks-dev-test-ha ou kubeadm-prod pour commencer à personnaliser votre cluster Big Data.You can use either the aks-dev-test-ha or the kubeadm-prod built-in configuration profiles to start customizing your big data cluster. Ces profils incluent les paramètres requis pour les ressources ; vous pouvez configurer une haute disponibilité supplémentaire.These profiles include the settings required for resources you can configure additional high availability. Par exemple, la section ci-dessous du fichier de configuration bdc.json se rapporte à l’activation des groupes de disponibilité pour l’instance principale SQL Server.For example, below is a section in the bdc.json configuration file that is relevant for enabling availability groups for SQL Server master instance.

{
  ...
    "spec": {
      "type": "Master",
      "replicas": 3,
      "endpoints": [
        {
          "name": "Master",
          "serviceType": "LoadBalancer",
          "port": 31433
        },
        {
          "name": "MasterSecondary",
          "serviceType": "LoadBalancer",
          "port": 31436
        }
      ],
      "settings": {
        "sql": {
          "hadr.enabled": "true"
        }
      }
    }
  ...
}

Les étapes suivantes vous guident dans un exemple de démarrage du profil aks-dev-test-ha et de personnalisation de la configuration de votre déploiement de cluster Big Data.The following steps walk through an example on how to start from aks-dev-test-ha profile and customize your big data cluster deployment configuration. Pour un déploiement sur un cluster kubeadm, des étapes similaires s’appliquent, mais veillez à utiliser NodePort comme serviceType dans la section endpoints.For a deployment on a kubeadm cluster, similar steps would apply, but make sure you are using NodePort for the serviceType in the endpoints section.

  1. Clonez le profil que vous ciblezClone your targeted profile

    azdata bdc config init --source aks-dev-test-ha --target custom-aks-ha
    
  2. Éventuellement, apportez des modifications au profil personnalisé si nécessaire.Optionally make any edits to the custom profile as necessary.

  3. Commencez le déploiement du cluster en utilisant le profil de configuration de cluster créé ci-dessusStart cluster deployment using the cluster configuration profile created above

    azdata bdc create --config-profile custom-aks-ha --accept-eula yes
    

Se connecter aux bases de données SQL Server dans le groupe de disponibilitéConnect to SQL Server databases in the availability group

Selon le type de charge de travail que vous souhaitez exécuter sur l’instance principale SQL Server, vous pouvez vous connecter au réplica principal pour les charges de travail en lecture-écriture ou aux bases de données des réplicas secondaires pour le type de charges de travail en lecture seule.Depending on the type of workload you want to run against SQL Server master, you can connect either to the primary for read-write workloads or to the databases in the secondary replicas for read-only type of workloads. Une description de chaque type de connexion est fournie ci-dessous :Here is an outline for each type of connection:

Se connecter aux bases de données sur le réplica principalConnect to databases on the primary replica

Pour les connexions au réplica principal, utilisez le point de terminaison sql-server-master.For connections to the primary replica, use sql-server-master endpoint. Ce point de terminaison est également l’écouteur pour le groupe de disponibilité.This endpoint is also the listener for the AG. Lors de l’utilisation de ce point de terminaison, toutes les connexions figurent dans le contexte des bases de données au sein du groupe de disponibilité.When using this endpoint, all connections are in the context of databases within the availability group. Par exemple, une connexion par défaut utilisant ce point de terminaison entraînera la connexion à la base de données master au sein du groupe de disponibilité, et non pas à la base de données master de l’instance SQL Server.For example, a default connection using this endpoint will result in connecting to the master database within the availability group, not the SQL Server instance master database. Exécutez cette commande pour rechercher le point de terminaison :Run this command to find the endpoint:

azdata bdc endpoint list -e sql-server-master -o table
Description                           Endpoint             Name               Protocol
------------------------------------  -------------------  -----------------  ----------
SQL Server Master Instance Front-End  11.11.111.111,11111  sql-server-master  tds

Notes

Des événements de basculement peuvent se produire lors de l’exécution d’une requête distribuée qui accède aux données à partir de sources de données distantes telles que le pool de données ou HDFS.Failover events can occur during a distributed query execution that is accessing data from remote data sources like HDFS or data pool. En guise de bonne pratique, les applications doivent être conçues de manière à disposer d’une logique de déclenchement de nouvelles tentatives de connexion en cas de déconnexions causées par le basculement.As a best practice, applications should be designed to have connection retry logic in case of disconnects caused by failover.

Se connecter aux bases de données sur les réplicas secondairesConnect to databases on the secondary replicas

Pour une connexion en lecture seule aux bases de données figurant sur les réplicas secondaires, utilisez le point de terminaison sql-server-master-readonly.For read-only connections to databases in secondary replicas, use the sql-server-master-readonly endpoint. Ce point de terminaison agit comme un équilibreur de charge sur l’ensemble des réplicas secondaires.This endpoint acts like a load balancer across all the secondary replicas. Lors de l’utilisation de ce point de terminaison, toutes les connexions figurent dans le contexte des bases de données au sein du groupe de disponibilité.When using this endpoint, all connections are in the context of databases within the availability group. Par exemple, une connexion par défaut utilisant ce point de terminaison entraînera la connexion à la base de données master au sein du groupe de disponibilité, et non pas à la base de données master de l’instance SQL Server.For example, a default connection using this endpoint will result in connecting to the master database within the availability group, not the SQL Server instance master database.

azdata bdc endpoint list -e sql-server-master-readonly -o table
Description                                    Endpoint            Name                        Protocol
---------------------------------------------  ------------------  --------------------------  ----------
SQL Server Master Readable Secondary Replicas  11.11.111.11,11111  sql-server-master-readonly  tds

Se connecter à une instance SQL ServerConnect to SQL Server instance

Pour certaines opérations telles que la définition de configurations au niveau serveur ou l’ajout manuel d’une base de données dans le groupe de disponibilité, vous devez vous connecter à l’instance SQL Server.For certain operations like setting server level configurations or manually adding a database to the availability group, you must connect to the SQL Server instance. Les opérations telles que sp_configure, RESTORE DATABASE ou n’importe quelle DDL des groupes de disponibilité nécessitent ce type de connexion.Operations like sp_configure, RESTORE DATABASE or any availability groups DDL will require this type of conneciton. Par défaut, le cluster Big Data n’inclut pas de point de terminaison permettant la connexion de l’instance et vous devez exposer manuellement ce point de terminaison.By default, big data cluster does not include an endpoint that enables instance connection and you must expose this endpoint manually.

Important

Le point de terminaison exposé pour les connexions d’instance SQL Server prend uniquement en charge l’authentification SQL, même dans les clusters où Active Directory est activé.The endpoint exposed for SQL Server instance connections only supports SQL authentication, even in clusters where Active Directory is enabled. Par défaut, au cours d’un déploiement de cluster Big Data, la connexion sa est désactivée et une nouvelle connexion sysadmin est provisionnée en fonction des valeurs fournies au moment du déploiement pour les variables d’environnement AZDATA_USERNAME et AZDATA_PASSWORD.By default, during a big data cluster deployment, sa login is disabled and a new sysadmin login is provisioned based in the values provided at deployment time for AZDATA_USERNAME and AZDATA_PASSWORD environment variables.

Voici un exemple illustrant comment exposer ce point de terminaison, puis ajouter la base de données créée avec un workflow de restauration dans le groupe de disponibilité.Here is an example that shows how to expose this endpoint and then add the database that was created with a restore workflow to the availability group. Des instructions similaires pour la configuration d’une connexion à l’instance principale SQL Server s’appliquent lorsque vous souhaitez modifier les configurations de serveur avec sp_configure.Similar instructions for setting up a connection to the SQL Server master instance apply when you want to change server configurations with sp_configure.

  • Déterminez le pod qui héberge le réplica principal en vous connectant au point de terminaison sql-server-master et exécutez :Determine the pod that hosts the primary replica by connecting to the sql-server-master endpoint and run:

    SELECT @@SERVERNAME
    
  • Exposez le point de terminaison externe en créant un nouveau service KubernetesExpose the external endpoint by creating a new Kubernetes service

    Pour un cluster kubeadm, exécutez la commande ci-dessous.For a kubeadm cluster run below command. Remplacez podName par le nom du serveur retourné à l’étape précédente, serviceName par le nom favori du service Kubernetes créé et namespaceName* par le nom de votre cluster BDC.Replace podName with the name of the server returned at previous step, serviceName with the preferred name for the Kubernetes service created and namespaceName* with the name of your BDC cluster.

    kubectl -n <namespaceName> expose pod <podName> --port=1533  --name=<serviceName> --type=NodePort
    

    Pour l’exécution d’un cluster AKS, exécutez la même commande, si ce n’est que le type du service créé sera LoadBalancer.For an aks cluster run, run the same command, except that the type of the service created will be LoadBalancer. Par exemple :For example:

    kubectl -n <namespaceName> expose pod <podName> --port=1533  --name=<serviceName> --type=LoadBalancer
    

    Voici un exemple de cette commande exécutée sur AKS, où le pod hébergeant le réplica principal est master-0 :Here is an example of this command run against aks, where the pod hosting the primary is master-0:

    kubectl -n mssql-cluster expose pod master-0 --port=1533  --name=master-sql-0 --type=LoadBalancer
    

    Obtenez l’adresse IP du service Kubernetes créé :Get the IP of the Kubernetes service created:

    kubectl get services -n <namespaceName>
    

Important

En guide de bonne pratique, vous devez effectuer un nettoyage en supprimant le service Kubernetes créé ci-dessus en exécutant la commande suivante :As a best practice, you should cleanup by deleting the Kubernetes service created above by running this command:

kubectl delete svc master-sql-0 -n mssql-cluster
  • Ajoutez la base de données au groupe de disponibilité.Add the database to the availability group.

    Pour que la base de données soit ajoutée au groupe de disponibilité, elle doit s’exécuter en mode de récupération complète et une sauvegarde de fichier journal doit être effectuée.For the database to be added to the AG, it has to run in full recovery mode and a log backup has to be taken. Utilisez l’adresse IP du service Kubernetes créé ci-dessus et connectez-vous à l’instance SQL Server, puis exécutez les instructions TSQL comme indiqué ci-dessous.Use the IP from the Kubernetes service created above and connect to the SQL Server instance then run the TSQL statements as shown below.

    ALTER DATABASE <databaseName> SET RECOVERY FULL;
    BACKUP DATABASE <databaseName> TO DISK='<filePath>'
    ALTER AVAILABILITY GROUP containedag ADD DATABASE <databaseName>
    

    L’exemple suivant ajoute une base de données nommée sales qui a été restaurée sur l’instance :The following example adds a database named sales that was restored on the instance:

    ALTER DATABASE sales SET RECOVERY FULL;
    BACKUP DATABASE sales TO DISK='/var/opt/mssql/data/sales.bak'
    ALTER AVAILABILITY GROUP containedag ADD DATABASE sales
    

Limitations connuesKnown limitations

Limitations et problèmes connus avec les groupes de disponibilité pour l’instance principale SQL Server dans un cluster Big Data :The known issues and limitations with availability groups for SQL Server master in big data cluster:

  • Les bases de données créées à la suite de workflows autres que CREATE DATABASE, comme RESTORE DATABSE et CREATE DATABASE FROM SNAPSHOT, ne sont pas automatiquement ajoutées dans le groupe de disponibilité.Databases created as result of workflows other than CREATE DATABASE like RESTORE DATABSE, CREATE DATABASE FROM SNAPSHOT are not automatically added to the availability group. Connectez-vous à l’instance et ajoutez manuellement la base de données au groupe de disponibilité.Connect to the instance and add the database to the availability group manually.
  • Certaines opérations comme l’exécution de paramètres de configuration de serveur avec sp_configure nécessitent une connexion à la base de données master de l’instance SQL Server, et non pas au groupe de disponibilité master.Certain operations like running server configuration settings with sp_configure require a connection to the SQL Server instance master database, not the availability group master. Vous ne pouvez pas utiliser le point de terminaison principal correspondant.You cannot use the corresponding primary endpoint. Suivez ces instructions pour exposer un point de terminaison et vous connecter à l’instance SQL Server, et exécutez sp_configure.Follow the instructions to expose an endpoint and connect to the SQL Server instance and run sp_configure. Vous pouvez uniquement utiliser l’authentification SQL lors de l’exposition manuelle du point de terminaison pour vous connecter à la base de données master de l’instance SQL Server.You can only use SQL authentication when manually exposing the endpoint to connect to the SQL Server instance master database.
  • La configuration de la haute disponibilité doit être créée lors du déploiement du cluster Big Data.The high availability configuration must be created when big data cluster is deployed. Vous ne pouvez pas activer la configuration de la haute disponibilité avec les groupes de disponibilité après le déploiement.You cannot enable the high availability configuration with availability groups post deployment.

Étapes suivantesNext steps