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
W tym samouczku wyjaśniono, jak skonfigurować grupy dostępności Always On dla kontenerów SQL Server opartych na systemie Linux wdrożonych w klastrze usługi Azure Kubernetes Service (AKS) przy użyciu narzędzia DH2i DxOperator. Procedury te dotyczą także klastrów Azure Red Hat OpenShift. Główną różnicą jest wdrożenie klastra Azure Red Hat OpenShift, a następnie zastąpienie poleceń kubectl poleceniami oc w kolejnych krokach.
Korzystając z kroków z tego artykułu, nauczysz się, jak wdrożyć StatefulSet i użyć DH2i DxOperator do stworzenia i skonfigurowania AG z trzema replikami, hostowanymi na AKS.
Ten samouczek składa się z następujących kroków:
- Utwórz
configmapobiekt w klastrze AKS z ustawieniami mssql-conf - Instalowanie narzędzia DxOperator
- Tworzenie sekretnych obiektów
- Wdroż grupę dostępności SQL Server z trzema replikami za pomocą pliku YAML
- Nawiązywanie połączenia z programem SQL Server
Wymagania wstępne
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 configmap obiekt
W AKS, utwórz obiekt
configmap, który posiada ustawienia mssql-conf na podstawie wymagań. W tym przykładzie tworzyszconfigmap, używając pliku o nazwiemssqlconfig.yamlz następującymi parametrami.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueUtwórz obiekt, uruchamiając następujące polecenie.
kubectl apply -f ./mssqlconfig.yaml
Tworzenie sekretnych obiektów
Utwórz tajny klucz do przechowywania hasła sa do SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
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.
Utwórz sekret przechowujący klucz licencji dla DH2i. Odwiedź witrynę internetową DH2i, aby uzyskać licencję dewelopera. Zastąp ciąg XXXX-XXXX-XXXX-XXXX w poniższym przykładzie kluczem licencji.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Instalowanie narzędzia DxOperator
Aby zainstalować DxOperator, pobierz plik DxOperator YAML, używając poniższego przykładu, a następnie zastosuj plik YAML.
Wdroż plik YAML opisujący sposób skonfigurowania AG, używając następującego polecenia. Zapisz plik z niestandardową nazwą, taką jak
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlPo zainstalowaniu operatora możesz wdrożyć kontenery SQL Server, skonfigurować grupę dostępności, zdefiniować repliki oraz wdrożyć i skonfigurować klaster DxEnterprise. Zmień następujący przykładowy plik YAML wdrożenia,
DxSqlAg.yaml, aby odpowiadał Twoim wymaganiom.apiVersion: dh2i.com/v1 kind: DxSqlAg metadata: name: contoso-sql spec: sqlAgConfiguration: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Adds auto-generated load balancers to serviceTemplates for easy cluster access # For more customization, use the serviceTemplates section below #createLoadBalancers: true # Listener port for the availability group (uncomment to apply) #availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED #availabilityGroupOptions: CONTAINED # Disables automatic availability mode switching when scaling down #disableModeSwitching: true statefulSetSpec: podspec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 # Configuration options for the required persistent volume claim for DxEnterprise #volumeClaimConfiguration: # Set custom storage class for DxE PVC #storageClassName: example-class mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:2025-latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer # Set a non-default SQL Server port. DxOperator will auto-detect # the port from other sources too, such as mssqlConfigMap mssqlTcpPort: 51444 # The MSSQL configMap (mssql.conf file) mssqlConfigMap: mssql-config # Configuration options for the required persistent volume claim for SQL Server #volumeClaimConfiguration: # resources: # requests: # storage: 2Gi # Additional pod containers, such as mssql-tools #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]DxSqlAg.yamlWdróż plik.kubectl apply -f DxSqlAg.yaml
Utwórz nasłuchiwacz grupy dostępności
Zaktualizuj wartość
availabilityGroupListenerPortw plikuDxSqlAg.yaml:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Zastosowaj plik:
kubectl apply -f DxSqlAg.yamlZastosuj poniższy kod YAML, aby dodać moduł równoważenia obciążenia dla listenera.
apiVersion: v1 kind: Service metadata: name: contoso-cluster-lb spec: type: LoadBalancer selector: dh2i.com/entity-name: contoso-sql # This label points to whichever pod is the active Vhost member dh2i.com/active-vhost-vhost1: "true" ports: - name: sql protocol: TCP port: 1433 targetPort: 51444 - name: listener protocol: TCP port: 51433 targetPort: 51433 - name: dxe protocol: TCP port: 7979 targetPort: 7979Sprawdź, czy usługi i load balancery działają.
kubectl get servicesDane wyjściowe wyglądają podobnie do następującego przykładu:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE contoso-cluster-lb LoadBalancer 10.1.0.21 172.212.20.29 1433:30484/TCP,14033:30694/TCP,7979:30385/TCP 3m18s contoso-sql-0 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-0-lb LoadBalancer 10.1.0.210 4.255.19.171 7979:32374/TCP,1433:32444/TCP 79m contoso-sql-1 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-1-lb LoadBalancer 10.1.0.158 4.255.19.201 7979:30152/TCP,1433:30868/TCP 79m contoso-sql-2 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-2-lb LoadBalancer 10.1.0.159 4.255.19.218 7979:30566/TCP,1433:31463/TCP 79m kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 87mSprawdź, czy wszystkie trzy pody SQL Server działają.
kubectl get podsDane wyjściowe wyglądają podobnie do następującego przykładu:
NAME READY STATUS RESTARTS AGE contoso-sql-0 2/2 Running 0 74m contoso-sql-1 2/2 Running 0 74m contoso-sql-2 2/2 Running 0 74m
Treści powiązane
- Wdrażanie kontenerów i grupy dostępności programu SQL Server za pomocą narzędzia DH2i DxOperator w usłudze Azure Kubernetes Service za pośrednictwem narzędzia Rancher
- Wdrażanie grup dostępności za pomocą narzędzia DH2i DxEnterprise na platformie Kubernetes
- 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