Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server i Linux
I den här självstudien beskrivs hur du konfigurerar SQL Server AlwaysOn-tillgänglighetsgrupper (AGs) för SQL Server Linux-baserade containrar som distribuerats till ett AKS-kluster (Azure Kubernetes Service) med hjälp av DH2i DxOperator. Dessa procedurer gäller även för Azure Red Hat OpenShift-kluster. Den främsta skillnaden är driftsättningen av ett Azure Red Hat OpenShift-kluster, följt av att kommandon med kubectl ersätts med oc i följande steg.
Genom att använda stegen i denna artikel lär du dig hur man distribuerar en StatefulSet och använder DH2i DxOperator för att skapa och konfigurera en AG med tre repliker, hostade på AKS.
Den här självstudien består av följande steg:
- Skapa ett
configmapobjekt i AKS-kluster med mssql-conf-inställningar - Installera DxOperator
- Skapa hemliga objekt
- Distribuera en SQL Server-tillgänglighetsgrupp med tre repliker med hjälp av en YAML-fil
- Ansluta till SQL Server
Förutsättningar
Ett Azure Kubernetes Service-kluster (AKS) eller Kubernetes-kluster.
En giltig DxEnterprise-licens med AG-funktioner och tunnlar aktiverade. Mer information finns i developer edition för användning utan produktion eller DxEnterprise-programvara för produktionsarbetsbelastningar.
Skapa objektet configmap
I AKS skapar du
configmapobjektet, som har mssql-conf-inställningar baserat på dina krav. I det här exemplet skapar duconfigmapmed hjälp av en fil med namnetmssqlconfig.yamloch följande parametrar.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueSkapa objektet genom att köra följande kommando.
kubectl apply -f ./mssqlconfig.yaml
Skapa hemliga objekt
Skapa en hemlighet för att lagra sa lösenordet för SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
Skapa en hemlighet för att lagra licensnyckeln för DH2i. Besök DH2is webbplats för att få en utvecklarlicens. Ersätt XXXX-XXXX-XXXX-XXXX i följande exempel med din licensnyckel.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Installera DxOperator
För att installera DxOperator, ladda ner DxOperator YAML-filen med följande exempel och applicera sedan YAML-filen.
Distribuera YAML-filen som beskriver hur man sätter upp en AG genom att använda följande kommando. Spara filen med ett anpassat namn, till exempel
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlEfter att du installerat operatören kan du distribuera SQL Server-containrar, konfigurera tillgänglighetsgruppen, definiera repliker och distribuera samt konfigurera DxEnterprise-klustret. Ändra följande exempelfil för distribution (YAML),
DxSqlAg.yaml, för att passa dina behov.apiVersion: dh2i.com/v1 kind: DxSqlAg metadata: name: contoso-sql spec: sqlAgConfiguration: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Adds auto-generated load balancers to serviceTemplates for easy cluster access # For more customization, use the serviceTemplates section below #createLoadBalancers: true # Listener port for the availability group (uncomment to apply) #availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED #availabilityGroupOptions: CONTAINED # Disables automatic availability mode switching when scaling down #disableModeSwitching: true statefulSetSpec: podspec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 # Configuration options for the required persistent volume claim for DxEnterprise #volumeClaimConfiguration: # Set custom storage class for DxE PVC #storageClassName: example-class mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:2025-latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer # Set a non-default SQL Server port. DxOperator will auto-detect # the port from other sources too, such as mssqlConfigMap mssqlTcpPort: 51444 # The MSSQL configMap (mssql.conf file) mssqlConfigMap: mssql-config # Configuration options for the required persistent volume claim for SQL Server #volumeClaimConfiguration: # resources: # requests: # storage: 2Gi # Additional pod containers, such as mssql-tools #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]Distribuera
DxSqlAg.yamlfilen.kubectl apply -f DxSqlAg.yaml
Skapa en tillgänglighetsgrupplyssnare
Uppdatera
availabilityGroupListenerPortvärdet i dinDxSqlAg.yamlfil:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Använd filen:
kubectl apply -f DxSqlAg.yamlAnvänd följande YAML för att lägga till en lastbalanserare för lyssnaren.
apiVersion: v1 kind: Service metadata: name: contoso-cluster-lb spec: type: LoadBalancer selector: dh2i.com/entity-name: contoso-sql # This label points to whichever pod is the active Vhost member dh2i.com/active-vhost-vhost1: "true" ports: - name: sql protocol: TCP port: 1433 targetPort: 51444 - name: listener protocol: TCP port: 51433 targetPort: 51433 - name: dxe protocol: TCP port: 7979 targetPort: 7979Kontrollera att tjänsterna och lastbalanserarna är igång.
kubectl get servicesUtdata ser ut ungefär som i följande exempel:
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 87mVerifiera att alla tre SQL Server-poddar körs.
kubectl get podsUtdata ser ut ungefär som i följande exempel:
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
Relaterat innehåll
- Distribuera SQL Server-containrar och tillgänglighetsgrupp med DH2i DxOperator på Azure Kubernetes Service via Rancher
- Distribuera tillgänglighetsgrupper med DH2i DxEnterprise på Kubernetes
- Snabbstart: Distribuera ett SQL Server-containerkluster i Azure eller Red Hat OpenShift
- Distribuera SQL Server Linux-containrar på Kubernetes med StatefulSets