Déployer des groupes de disponibilité sur Kubernetes avec DH2i DxOperator sur Azure Kubernetes Service
S’applique à : SQL Server - Linux
Ce tutoriel explique comment configurer des groupes de disponibilité Always On SQL Server pour des conteneurs basés sur Linux déployés sur un cluster Kubernetes AKS (Azure Kubernetes Service) à l’aide de DH2i DxOperator. Ces procédures s’appliquent également aux clusters Azure Red Hat OpenShift ; la principale distinction est le déploiement d’un cluster Azure Red Hat OpenShift, puis le remplacement des commandes kubectl
par oc
lors des étapes suivantes.
Remarque
Microsoft prend en charge le déplacement des données, le groupe de disponibilité et les composants SQL Server. DH2i est responsable de la prise en charge du produit DxEnterprise, qui comprend la gestion des clusters et du quorum. DxOperator est une extension logicielle à Kubernetes qui utilise des définitions de ressources personnalisées pour automatiser le déploiement de clusters DxEnterprise. DxEnterprise fournit ensuite toutes les instrumentations pour créer, configurer, gérer et fournir un basculement automatique pour les charges de travail du groupe de disponibilité SQL Server dans Kubernetes.
Vous pouvez vous inscrire pour recevoir une licence logicielle DxEnterprise gratuite. Pour plus d’informations, consultez le Guide de démarrage rapide de DxOperator.
À l’aide des étapes mentionnées dans cet article, découvrez comment déployer un StatefulSet et utiliser DH2i DxOperator pour créer et configurer un groupe de disponibilité avec trois réplicas hébergés sur AKS.
Il se compose des étapes suivantes :
- Créer un objet
configmap
sur un cluster AKS avec les paramètres mssql-conf - Installer DxOperator
- Créer des objets secrets
- Déployer un groupe de disponibilité SQL à 3 réplicas via un fichier YAML
- Se connecter à SQL Server
Prérequis
Cluster Azure Kubernetes Service (AKS) ou Kubernetes.
Licence DxEnterprise valide avec les fonctionnalités de groupe de disponibilité et les tunnels activés. Pour plus d’informations, consultez l’édition développeur en cas d’utilisation hors production ou le logiciel DxEnterprise pour les charges de travail de production.
Créer l’objet configmap
Dans AKS, créez l’objet
configmap
, qui a des paramètres mssql-conf basés sur vos besoins. Dans cet exemple, vous créezconfigMap
à l’aide d’un fichier appelémssqlconfig.yaml
avec les paramètres suivants.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = true
Créez l’objet en exécutant la commande suivante.
kubectl apply -f ./mssqlconfig.yaml
Créer des objets secrets
Créez un secret pour stocker le mot de passe sa
pour SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="Password123"
Créez un secret pour stocker la clé de licence pour DH2i. Visitez le site web de DH2i pour obtenir une licence de développeur. Dans l’exemple suivant, remplacez XXXX-XXXX-XXXX-XXXX
par votre clé de licence.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="Password123" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Installer DxOperator
Pour installer DxOperator, vous devez télécharger le fichier YAML DxOperator selon l’exemple suivant, puis appliquer le fichier YAML.
Déployez le YAML décrivant comment configurer un groupe de disponibilité à l’aide de la commande suivante. Enregistrez le fichier sous un nom personnalisé, tel que
DxOperator.yaml
.curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml kubectl apply –f DxOperator.yaml
Après avoir installé l’opérateur, vous pouvez déployer des conteneurs SQL Server, configurer le groupe de disponibilité, définir des réplicas et déployer et configurer le cluster DxEnterprise. Voici un exemple de fichier YAML de déploiement appelé
DxEnterpriseSqlAg.yaml
, que vous pouvez modifier selon vos besoins.apiVersion: dh2i.com/v1 kind: DxEnterpriseSqlAg metadata: name: contoso-sql spec: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Listener port for the availability group (uncomment to apply) availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED availabilityGroupOptions: null # Valid options are EXTERNAL (automatic failover) and NONE (no automatic failover) availabilityGroupClusterType: EXTERNAL createLoadBalancers: true template: metadata: labels: label: example annotations: annotation: example spec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 joinExistingCluster: false # QoS – guaranteed (uncomment to apply) #resources: #limits: #memory: 1Gi #cpu: '1' # Configuration options for the required persistent volume claim for DxEnterprise volumeClaimConfiguration: storageClassName: null resources: requests: storage: 1Gi mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer mssqlConfigMap: mssql-config # QoS – guaranteed (uncomment to apply) #resources: #limits: #memory: 2Gi #cpu: '2' # Configuration options for the required persistent volume claim for SQL Server volumeClaimConfiguration: storageClassName: null resources: requests: storage: 2Gi # Additional side-car containers, such as mssql-tools (uncomment to apply) #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]
Déployez le fichier
DxEnterpriseSqlAg.yaml
.kubectl apply -f DxEnterpriseSqlAg.yaml
Créer un écouteur de groupe de disponibilité
Appliquez le YAML suivant pour ajouter un équilibreur de charge en définissant le sélecteur sur la valeur de metadata.name
à l’étape précédente. Dans cet exemple, il s’agit de contoso-sql
.
apiVersion: v1
kind: Service
metadata:
name: contoso-cluster-lb
spec:
type: LoadBalancer
selector:
dh2i.com/entity: contoso-sql
ports:
- name: sql
protocol: TCP
port: 1433
targetPort: 51444
- name: listener
protocol: TCP
port: 51433
targetPort: 51433
- name: dxe
protocol: TCP
port: 7979
targetPort: 7979
Vérifiez les affectations de déploiement et d’équilibreur de charge.
kubectl get pods
kubectl get services
Vous devez obtenir une sortie similaire à la suivante.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
contoso-cluster-lb LoadBalancer 10.1.0.21 172.212.20.29 1433:30484/TCP,14033:30694/TCP,7979:30385/TCP 3m18s
contoso-sql-0 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m
contoso-sql-0-lb LoadBalancer 10.1.0.210 4.255.19.171 7979:32374/TCP,1433:32444/TCP 79m
contoso-sql-1 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m
contoso-sql-1-lb LoadBalancer 10.1.0.158 4.255.19.201 7979:30152/TCP,1433:30868/TCP 79m
contoso-sql-2 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m
contoso-sql-2-lb LoadBalancer 10.1.0.159 4.255.19.218 7979:30566/TCP,1433:31463/TCP 79m
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 87m
PS /home/aravind> kubectl get pods
NAME READY STATUS RESTARTS AGE
contoso-sql-0 2/2 Running 0 74m
contoso-sql-1 2/2 Running 0 74m
contoso-sql-2 2/2 Running 0 74m
Contenu connexe
- Déployer des groupes de disponibilité avec DH2i DxEnterprise sur Kubernetes
- Déployer des conteneurs SQL Server sur Azure Kubernetes Service
- Déployer des conteneurs Linux SQL Server sur Kubernetes avec StatefulSets
- Tutoriel : Configurer l’authentification Active Directory avec des conteneurs SQL Server sur Linux