Bereitstellen von Verfügbarkeitsgruppen auf Kubernetes mit DH2i DxOperator auf Azure Kubernetes Service
Gilt für: SQL Server – Linux
In diesem Tutorial wird erläutert, wie Sie mit DH2i DxOperator SQL Server-Always On-Verfügbarkeitsgruppen für SQL Server-Linux-basierte Container konfigurieren, die in einem Azure Kubernetes Service-Kubernetes-Cluster (AKS) bereitgestellt werden. Diese Verfahren gelten auch für Azure Red Hat OpenShift-Cluster. Der Hauptunterschied ist die Bereitstellung eines Azure Red Hat OpenShift-Clusters, gefolgt durch das Ersetzen von kubectl
-Befehlen mit oc
in den folgenden Schritten.
Hinweis
Microsoft unterstützt Datenverschiebung, AG und SQL Server-Komponenten. DH2i ist für die Unterstützung des DxEnterprise-Produkts verantwortlich, was die Cluster- und Quorumverwaltung umfasst. DxOperator ist eine Software-Erweiterung für Kubernetes, die benutzerdefinierte Ressourcendefinitionen verwendet, um die Bereitstellung von DxEnterprise-Clustern zu automatisieren. DxEnterprise stellt dann die gesamte Instrumentierung für die Erstellung, Konfiguration, Verwaltung und das automatische Failover von SQL Server AG-Workloads in Kubernetes bereit.
Sie können sich für eine kostenlose DxEnterprise-Softwarelizenz registrieren. Weitere Informationen finden Sie im DxOperator-Schnellstarthandbuch.
Anhand der in diesem Artikel beschriebenen Schritte lernen Sie, wie Sie ein StatefulSet bereitstellen und den DH2i DxOperator verwenden, um eine AG mit drei Replikaten zu erstellen und zu konfigurieren, die auf AKS gehostet wird.
Dieses Tutorial besteht aus den folgenden Schritten:
- Erstellen eines
configmap
-Objekts auf einem AKS-Cluster mit mssql-conf-Einstellungen - Installieren von DxOperator
- Erstellen eines geheimen Objekts
- Bereitstellen von drei Replikat SQL AG mithilfe der YAML-Datei
- Verbindung mit SQL Server herstellen
Voraussetzungen
Einen AKS- (Azure Kubernetes Service) oder Kubernetes-Cluster.
Eine gültige DxEnterprise-Lizenz mit aktivierten Verfügbarkeitsgruppenfeatures und Tunneln. Weitere Informationen finden Sie in der Entwickleredition für die Nutzung außerhalb der Produktion oder unter DxEnterprise-Software für Produktionsworkloads.
Erstellen Sie das Objekt configmap
Erstellen Sie in AKS das Objekt
configmap
mit mssql-conf-Einstellungen entsprechend Ihren Anforderungen. In diesem Beispiel erstellen Sie dieconfigMap
mithilfe einer Datei namensmssqlconfig.yaml
mit den folgenden Parametern.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = true
Erstellen Sie das Objekt, indem Sie den folgenden Befehl ausführen.
kubectl apply -f ./mssqlconfig.yaml
Erstellen geheimer Objekte
Erstellen Sie einen geheimen Schlüssel zum Speichern des sa
-Passworts für SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="Password123"
Erstellen Sie einen geheimen Schlüssel zum Speichern des Lizenzschlüssels für DH2i. Besuchen Sie die Website von DH2i, um eine Entwicklerlizenz zu erhalten. Ersetzen Sie XXXX-XXXX-XXXX-XXXX
im folgenden Beispiel durch Ihren Lizenzschlüssel.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="Password123" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Installieren von DxOperator
Um DxOperator zu installieren, müssen Sie die DxOperator-YAML-Datei anhand des folgenden Beispiels herunterladen und dann die YAML-Datei anwenden.
Stellen Sie die YAML, die die Einrichtung einer AG beschreibt, mit dem folgenden Befehl bereit. Speichern der Datei unter einem angepassten Namen wie z. B.
DxOperator.yaml
.curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml kubectl apply –f DxOperator.yaml
Nach der Installation des Operators können Sie SQL Server-Container bereitstellen, die Verfügbarkeitsgruppe konfigurieren, Replikate definieren sowie den DxEnterprise-Cluster bereitstellen und konfigurieren. Nachfolgend ist eine beispielhafte Bereitstellungs-YAML-Datei namens
DxEnterpriseSqlAg.yaml
aufgeführt, die Sie entsprechend Ihren Anforderungen ändern können.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" ]
Stellen Sie die Datei
DxEnterpriseSqlAg.yaml
bereit.kubectl apply -f DxEnterpriseSqlAg.yaml
Erstellen eines Listeners für eine Verfügbarkeitsgruppe
Wenden Sie die folgende YAML an, um einen Load Balancer hinzuzufügen, indem Sie den Selektor im vorherigen Schritt auf den Wert metadata.name
einstellen. In diesem Beispiel lautet er 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
Überprüfen Sie die Bereitstellungs- und Lastenausgleichszuweisungen.
kubectl get pods
kubectl get services
Die Ausgabe sollte etwa folgendem Beispiel entsprechen.
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
Zugehöriger Inhalt
- Bereitstellen von Verfügbarkeitsgruppen mit DH2i DxEnterprise in Kubernetes
- Bereitstellen eines SQL Server-Containers in Kubernetes mit Azure Kubernetes Service
- Bereitstellen von SQL Server-Linux-Containern in Kubernetes mit StatefulSets
- Tutorial: Konfigurieren der Active Directory-Authentifizierung mit SQL Server für Linux-Container