Wdrażanie grup dostępności za pomocą narzędzia DH2i DxEnterprise na platformie Kubernetes
Dotyczy:programu SQL Server — Linux
W tym samouczku wyjaśniono, jak skonfigurować grupy dostępności Always On programu SQL Server (AG) dla kontenerów opartych na systemie Linux programu SQL Server wdrożonych w klastrze usługi Azure Kubernetes Service (AKS), przy użyciu DH2i DxEnterprise. Możesz wybrać między konfiguracją przyczepki (preferowaną) lub utworzyć własny niestandardowy obraz kontenera.
Uwaga
Firma Microsoft obsługuje składniki przenoszenia danych, grupy dostępności i programu SQL Server. DH2i jest odpowiedzialny za obsługę produktu DxEnterprise, który obejmuje zarządzanie klastrami i kworum.
Korzystając z kroków wymienionych w tym artykule, dowiedz się, jak wdrożyć StatefulSet i użyć rozwiązania DH2i DxEnterprise do utworzenia i skonfigurowania grupy dostępności (AG). Ten samouczek składa się z poniższych kroków.
- Utwórz konfigurację usługi bezgłowej
- Tworzenie konfiguracji StatefulSet za pomocą programu SQL Server i DxEnterprise w tym samym zasobniku co kontener przyczepki
- Tworzenie i konfigurowanie grupy dostępności programu SQL Server, dodawanie replik pomocniczych
- Utwórz bazę danych w grupie dostępności i przetestuj przełączanie awaryjne.
Wymagania wstępne
W tym samouczku przedstawiono przykład AG (grupy dostępności) z trzema replikami. Potrzebujesz:
- Klaster usługi Azure Kubernetes Service (AKS) lub klaster Kubernetes.
- Prawidłowa licencja DxEnterprise z włączonymi funkcjami AG i tunelami. Aby uzyskać więcej informacji, zobacz edycję dewelopera na potrzeby nieprodukcyjne lub oprogramowanie DxEnterprise do obciążeń produkcyjnych.
Utwórz usługę bezgłową
W klastrze Kubernetes serwisy bezgłowe umożliwiają podom łączenie się ze sobą przy użyciu hostnamów.
Aby stworzyć usługę typu headless, utwórz plik YAML o nazwie
headless_services.yaml
z następującą przykładową zawartością.#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: 14033
Uruchom następujące polecenie, aby zastosować konfigurację.
kubectl apply -f headless_services.yaml
Utwórz zestaw stanowy
Utwórz plik YAML StatefulSet z następującą przykładową zawartością i nadaj mu nazwę
dxemssql.yaml
.Ta konfiguracja StatefulSet tworzy trzy repliki DxEMSSQL, które używają żądań trwałych woluminów do przechowywania swoich danych. Każdy zasobnik w tym zestawie StatefulSet składa się z dwóch kontenerów: kontenera SQL Server i kontenera DxEnterprise. Te kontenery są uruchamiane oddzielnie w konfiguracji "sidecar", ale DxEnterprise zarządza repliką AG w kontenerze SQL Server.
#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: 1Gi
Utwórz poświadczenie dla wystąpienia programu SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
Zastosuj konfigurację StatefulSet.
kubectl apply -f dxemssql.yaml
Sprawdź stan zasobników i przejdź do następnego kroku, gdy stan zasobnika stanie się
running
.kubectl get pods kubectl describe pods
Utwórz grupę dostępności i przetestuj przełączanie awaryjne
Aby uzyskać szczegółowe informacje na temat tworzenia i konfigurowania grupy dostępności, dodawania replik i testowania trybu failover, zobacz grupy dostępności programu SQL Server na platformie Kubernetes.
Kroki konfigurowania odbiornika grupy dostępności (opcjonalnie)
Możesz również skonfigurować słuchacza AG, wykonując następujące kroki.
Upewnij się, że odbiornik grupy dostępności (AG) został utworzony przy użyciu DxEnterprise zgodnie z opisem w opcjonalnym kroku pod koniec dokumentacji DH2i.
Na platformie Kubernetes możesz opcjonalnie utworzyć statycznych adresów IP. Podczas tworzenia statycznego adresu IP upewnij się, że jeśli usługa odbiornika zostanie usunięta i utworzona ponownie, zewnętrzny adres IP przypisany do usługi odbiornika nie ulegnie zmianie. Wykonaj kroki, aby utworzyć statyczny adres IP w usłudze Azure Kubernetes Service (AKS).
Po utworzeniu adresu IP należy przypisać ten adres IP i utworzyć usługę modułu równoważenia obciążenia, jak pokazano w poniższym przykładzie YAML.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: 52.140.117.62 selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Kroki konfigurowania przekierowania połączenia odczytu/zapisu (opcjonalnie)
Po utworzeniu grupy dostępności można włączyć przekierowanie połączenia odczytu/zapisu z pomocniczej do podstawowej, wykonując następujące kroki. Aby uzyskać więcej informacji, zobacz przekierowanie połączenia do odczytu/zapisu z repliki wtórnej do repliki podstawowej (Grupy dostępności Always On).
USE [master];
GO
ALTER AVAILABILITY
GROUP [ag_name] MODIFY REPLICA
ON N'<name of the primary replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-0 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-1 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
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
USE [master];
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
USE [master];
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
Powiązana zawartość
- Wdrażanie grup dostępności na platformie Kubernetes przy użyciu narzędzia DH2i DxOperator w usłudze Azure Kubernetes Service
- wdrażanie kontenerów programu SQL Server w usłudze Azure Kubernetes Service
- wdrażanie kontenerów systemu Linux programu SQL Server na platformie Kubernetes przy użyciu StatefulSets
- samouczek : konfigurowanie uwierzytelniania usługi Active Directory za pomocą programu SQL Server w kontenerach systemu Linux