Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie Linux
Ten samouczek wyjaśnia, jak skonfigurować grupy dostępności SQL Server Always On (AG) z DH2i DxEnterprise for SQL Server Linux, wdrożone na klastrze Azure Kubernetes Service (AKS) Kubernetes. Możesz wybrać między konfiguracją przyczepki (preferowaną) lub utworzyć własny niestandardowy obraz kontenera.
Note
Firma Microsoft obsługuje składniki przenoszenia danych, grupy dostępności i programu SQL Server. DH2i obsługuje produkt DxEnterprise, który obejmuje zarządzanie klastrami i kworum.
Dowiedz się, jak wdrożyć StatefulSet i użyć DH2i DxEnterprise do tworzenia i konfiguracji 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ę bezgłową, stwórz plik YAML wywołany
headless_services.yamlz 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: 14033Uruchom 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 wykorzystują trwałe roszczenia woluminów do przechowywania danych. Każdy zasobnik w tym zestawie StatefulSet składa się z dwóch kontenerów: kontenera SQL Server i kontenera DxEnterprise. Te kontenery zaczynają się osobno 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: 1GiUtwó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.yamlSprawdź 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
Szczegóły dotyczące tworzenia i konfiguracji AG, dodawania replik oraz testowania failoverów można znaleźć w sekcji SQL Server Availability Groups w 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 utworzyłeś słuchacz AG w DxEnterprise, wykonując opcjonalny krok pod koniec dokumentacji DH2i.
Na platformie Kubernetes możesz opcjonalnie utworzyć statycznych adresów IP. Statyczny adres IP zapewnia, że jeśli usuniesz i odtworzysz usługę listenera, zewnętrzny adres IP przypisany do usługi listener nie ulegnie zmianie. Wykonaj kroki, aby utworzyć statyczny adres IP w usłudze Azure Kubernetes Service (AKS).
Po utworzeniu adresu IP przypisz go i stwórz usługę load balancer z następującym przykładem YAML.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Kroki konfigurowania przekierowania połączenia odczytu/zapisu (opcjonalnie)
Po utworzeniu AG włącz przekierowanie połączenia do odczytu/zapisu z wtórnego na głównego. 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 [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
Treści powiązane
- Wdrażanie grup dostępności na platformie Kubernetes przy użyciu narzędzia DH2i DxOperator w usłudze Azure Kubernetes Service
- Szybki start: wdrażanie klastra kontenerów programu SQL Server na platformie Azure lub Red Hat OpenShift
- 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