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
Denna handledning förklarar hur man konfigurerar SQL Server Always On-tillgänglighetsgrupper (AG) med DH2i DxEnterprise för SQL Server Linux-baserade containrar distribuerade till ett Azure Kubernetes Service (AKS) Kubernetes-kluster. Du kan välja mellan en sidovagnskonfiguration (rekommenderas) eller skapa en egen anpassad containeravbildning.
Note
Microsoft har stöd för dataförflyttning, tillgänglighetsgrupp (AG), och SQL Server-komponenter. DH2i stöder DxEnterprise-produkten, som inkluderar kluster- och kvorumhantering.
Lär dig hur du distribuerar en StatefulSet och använd DH2i DxEnterprise för att skapa och konfigurera en AG. Den här självstudien består av följande steg.
- Skapa en huvudlös tjänstkonfiguration
- Skapa en StatefulSet-konfiguration med SQL Server och DxEnterprise i samma pod som en sidecar-container
- Skapa och konfigurera en SQL Server AG och lägg till de sekundära replikerna
- Skapa en databas i tillgänglighetsgruppen och testa redundans
Förutsättningar
Den här handledningen visar ett exempel på en AG med tre repliker. Du behöver:
- 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 den huvudlösa tjänsten
I ett Kubernetes-kluster tillåter huvudlösa tjänster dina poddar att ansluta till varandra med hjälp av värdnamn.
För att skapa den headless-tjänsten, skapa en YAML-fil som anropas
headless_services.yamlmed följande exempelinnehåll.#Headless services for local connections/resolution apiVersion: v1 kind: Service metadata: name: dxemssql-0 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-0 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-1 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-1 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-2 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-2 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033Kör följande kommando för att tillämpa konfigurationen.
kubectl apply -f headless_services.yaml
Skapa StatefulSet
Skapa en StatefulSet YAML-fil med följande exempelinnehåll och ge den namnet
dxemssql.yaml.Denna StatefulSet-konfiguration skapar tre DxEMSSQL-repliker som använder persistenta volymkrav för att lagra sina data. Varje podd i den här StatefulSet består av två containrar: en SQL Server-container och en DxEnterprise-container. Dessa containrar startar separat i en sidecar-konfiguration, men DxEnterprise hanterar AG-repliken i SQL Server-containern.
#DxEnterprise + MSSQL StatefulSet apiVersion: apps/v1 kind: StatefulSet metadata: name: dxemssql spec: serviceName: "dxemssql" replicas: 3 selector: matchLabels: app: dxemssql template: metadata: labels: app: dxemssql spec: securityContext: fsGroup: 10001 containers: - name: sql image: mcr.microsoft.com/mssql/server:2022-latest env: - name: ACCEPT_EULA value: "Y" - name: MSSQL_ENABLE_HADR value: "1" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: mssql mountPath: "/var/opt/mssql" - name: dxe image: docker.io/dh2i/dxe env: - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: dxe mountPath: "/etc/dh2i" volumeClaimTemplates: - metadata: name: dxe spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi - metadata: name: mssql spec: accessModes: - ReadWriteOnce resources: requests: storage: 1GiSkapa en autentiseringsuppgift för SQL Server-instansen.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"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.
Använd konfigurationen StatefulSet.
kubectl apply -f dxemssql.yamlKontrollera statusen för poddarna och fortsätt till nästa steg när poddens status blir
running.kubectl get pods kubectl describe pods
Skapa tillgänglighetsgrupp och testa redundans
För detaljer om att skapa och konfigurera AG, lägga till repliker och testa failover, se SQL Server Availability Groups i Kubernetes.
Steg för att konfigurera tillgänglighetsgrupplyssnare (valfritt)
Du kan också konfigurera en AG-lyssnare med följande steg.
Se till att du skapade AG-lyssnaren med DxEnterprise genom att följa det valfria steget nära slutet av DH2i-dokumentationen.
I Kubernetes kan du valfritt skapa statiska IP-adresser. En statisk IP-adress säkerställer att om du raderar och återskapar lyssnartjänsten, så ändras inte den externa IP-adressen som tilldelats din lyssnartjänst. Följ stegen för att skapa en statisk IP-adress i Azure Kubernetes Service (AKS).
Efter att du skapat en IP-adress, tilldela den och skapa lastbalanserartjänsten med följande YAML-exempel.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Steg för att konfigurera omdirigering av läs-/skrivanslutning (valfritt)
Efter att du skapat AG:n, aktivera läs-/skrivanslutningsomdirigering från sekundär till primär. Mer information finns i omdirigering av läs-/skrivanslutning för sekundär till primär replik (Always On-tillgänglighetsgrupper).
USE master;
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the primary replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-0 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-1 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the primary replica>'
WITH (PRIMARY_ROLE(
READ_WRITE_ROUTING_URL = 'TCP://<External IP address of primary -0>:1433'
));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-0 replica>'
WITH (PRIMARY_ROLE(
READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -0>:1433'
));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-1 replica>'
WITH (PRIMARY_ROLE(
READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -1>:1433'
));
GO
Relaterat innehåll
- Distribuera tillgänglighetsgrupper på Kubernetes med DH2i DxOperator på Azure Kubernetes Service
- Snabbstart: Distribuera ett SQL Server-containerkluster i Azure eller Red Hat OpenShift
- Distribuera SQL Server Linux-containrar på Kubernetes med StatefulSets
- Tutorial: Konfigurera služba Active Directory-autentisering med SQL Server på Linux-containrar