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 użyciem DH2i DxEnterprise dla kontenerów opartych na SQL Server dla systemu Linux, wdrożonych w klastrze Kubernetes usługi Azure Kubernetes Service (AKS). 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 utworzyć usługę bezgłową, utwórz plik YAML o nazwie
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 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: 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ś nasłuchiwacz AG za pomocą DxEnterprise, zgodnie z opcjonalnym krokiem znajdującym się 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, a następnie utwórz usługę modułu równoważenia obciążenia, korzystając z poniższego przykładu 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