Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server op Linux
Deze tutorial legt uit hoe je SQL Server Always On beschikbaarheidsgroepen (AG's) configureert met DH2i DxEnterprise voor SQL Server Linux-gebaseerde containers die worden ingezet op een Azure Kubernetes Service (AKS) Kubernetes-cluster. U kunt kiezen tussen een sidecar configuration (voorkeur), of uw eigen aangepaste containerafbeelding maken.
Note
Microsoft biedt ondersteuning voor gegevensverplaatsing, AG en SQL Server-onderdelen. DH2i ondersteunt het DxEnterprise-product, dat cluster- en quorumbeheer omvat.
Leer hoe je een StatefulSet deployt en gebruik DH2i DxEnterprise om een AG-systeem te maken en te configureren. Deze zelfstudie bestaat uit de volgende stappen.
- Een configuratie voor een headless service maken
- Een StatefulSet-configuratie maken met SQL Server en DxEnterprise in dezelfde pod als een sidecar-container
- Een beschikbaarheidsgroep van SQL Server maken en configureren en secundaire replica's toevoegen
- Een database maken in de beschikbaarheidsgroep en de failover testen
Prerequisites
In deze zelfstudie ziet u een voorbeeld van een AG met drie replica's. U hebt het volgende nodig:
- Een Azure Kubernetes Service (AKS) of Kubernetes-cluster.
- Een geldige DxEnterprise-licentie waarvoor AG-functies en tunnels zijn ingeschakeld. Zie de ontwikkelaarseditie voor niet-productiegebruik of DxEnterprise-software voor productieworkloads voor meer informatie.
Maak de headless service aan
In een Kubernetes-cluster kunnen headless services uw pods met elkaar verbinden met behulp van hostnamen.
Om de headless service te maken, maak je een YAML-bestand aan met
headless_services.yamlde volgende voorbeeldinhoud.#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: 14033Voer de volgende opdracht uit om de configuratie toe te passen.
kubectl apply -f headless_services.yaml
Maak de StatefulSet aan
Maak een StatefulSet YAML-bestand met de volgende voorbeeldinhoud en geef het
dxemssql.yamleen naam.Deze StatefulSet-configuratie creëert drie DxEMSSQL-replica's die persistente volumeclaims gebruiken om hun data op te slaan. Elke pod in deze StatefulSet bestaat uit twee containers: een SQL Server-container en een DxEnterprise-container. Deze containers beginnen apart in een sidecar-configuratie, maar DxEnterprise beheert de AG-replica in de SQL Server-container.
#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: 1GiMaak een referentie-object voor de SQL Server-instance.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"Uw wachtwoord moet het SQL Server standaardbeleid voor password volgen. Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.
Pas de configuratie van de StatefulSet toe.
kubectl apply -f dxemssql.yamlControleer de status van de pods en ga verder met de volgende stap wanneer de status van de pod
runningwordt.kubectl get pods kubectl describe pods
Beschikbaarheidsgroep maken en failover testen
Voor details over het aanmaken en configureren van AG, het toevoegen van replica's en het testen van failover, zie SQL Server Availability Groups in Kubernetes.
Stappen voor het configureren van listener voor beschikbaarheidsgroepen (optioneel)
U kunt ook een AG-listener configureren met de volgende stappen.
Zorg ervoor dat je de AG-luisteraar hebt aangemaakt met DxEnterprise volgens de optionele stap aan het einde van de DH2i-documentatie.
In Kubernetes kunt u desgewenst statische IP-adressen maken. Een statisch IP-adres zorgt ervoor dat als je de luisteraardienst verwijdert en opnieuw aanmaakt, het externe IP-adres dat aan je luisterdienst is toegewezen niet verandert. Volg de stappen om een statisch IP-adres te maken in Azure Kubernetes Service (AKS).
Nadat je een IP-adres hebt aangemaakt, wijs je het toe en maak je de load balancer-service met het volgende YAML-voorbeeld.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Stappen voor het configureren van omleiding van lees-/schrijfverbindingen (optioneel)
Nadat je de AG hebt aangemaakt, schakel je lees-/schrijfverbindings-omleiding van de secundaire naar de primaire in. Zie secundaire naar primaire replica omleiding van lees-/schrijfverbindingen (AlwaysOn-beschikbaarheidsgroepen)voor meer informatie.
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
Verwante inhoud
- Beschikbaarheidsgroepen implementeren in Kubernetes met DH2i DxOperator in Azure Kubernetes Service
- Quickstart: Een SQL Server-containercluster implementeren op Azure of Red Hat OpenShift
- SQL Server Linux-containers implementeren in Kubernetes met StatefulSets
- Zelfstudie: Active Directory-verificatie configureren met SQL Server op Linux-containers