Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server su Linux
Questa esercitazione illustra come configurare i gruppi di disponibilità Always On di SQL Server per i contenitori basati su SQL Server Linux distribuiti in un cluster del servizio Azure Kubernetes usando DH2i DxOperator. Queste procedure si applicano anche ai cluster Azure Red Hat OpenShift. La principale distinzione è il dispiegamento di un cluster Azure Red Hat OpenShift, seguito dalla sostituzione kubectl dei comandi con oc nei passaggi seguenti.
Seguendo i passaggi di questo articolo, impari come distribuire un StatefulSet e utilizzare il DH2i DxOperator per creare e configurare un AG con tre repliche, ospitato su AKS.
Questa esercitazione è costituita dai passaggi seguenti:
- Creare un oggetto
configmapnel cluster AKS con le impostazioni di mssql-conf - Installare DxOperator
- Creare oggetti segreti
- Distribuisci un gruppo di disponibilità SQL Server a tre repliche usando un file YAML
- Connessione a SQL Server
Prerequisiti
Un cluster di Servizio Azure Kubernetes (AKS) o un cluster Kubernetes.
Una licenza DxEnterprise valida con funzionalità di gruppi di disponibilità e tunnel abilitati. Per altre informazioni, vedere l'edizione per sviluppatori per l'utilizzo non di produzione o il software DxEnterprise per i carichi di lavoro di produzione.
Creare l'oggetto configmap
In AKS, creare l'oggetto
configmap, che include le impostazioni mssql-conf in base ai requisiti. In questo esempio, si crea ilconfigmapby usando un file chiamatomssqlconfig.yamlcon i seguenti parametri.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueCrea l'oggetto eseguendo il seguente comando.
kubectl apply -f ./mssqlconfig.yaml
Creare oggetti segreti
Creare un segreto per archiviare la sa password per SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
La password deve seguire la politica predefinita di SQL Server password. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
Creare un segreto per archiviare il codice di licenza per DH2i. Visitare il sito Web di DH2i per ottenere una licenza per sviluppatori. Sostituire XXXX-XXXX-XXXX-XXXX nell'esempio seguente con il codice di licenza.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Installare DxOperator
Per installare DxOperator, scarica il file YAML di DxOperator usando il seguente esempio, e poi applica il file YAML.
Deploya il file YAML che descrive come configurare un AG usando il seguente comando. Salvare il file con un nome personalizzato, come
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlDopo aver installato l'operatore, puoi distribuire container SQL Server, configurare il gruppo di disponibilità, definire repliche e distribuire e configurare il cluster DxEnterprise. Modifica il seguente esempio di file YAML di deployment,
DxSqlAg.yaml, per adattarlo alle tue esigenze.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: 51433 # 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" ]Distribuisci il file
DxSqlAg.yaml.kubectl apply -f DxSqlAg.yaml
Creare un listener del gruppo di disponibilità
Aggiorna il
availabilityGroupListenerPortvalore nel tuoDxSqlAg.yamlfile:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Applicare il file:
kubectl apply -f DxSqlAg.yamlApplica il seguente YAML per aggiungere un bilanciatore di carico per l'ascoltatore.
apiVersion: v1 kind: Service metadata: name: contoso-cluster-lb spec: type: LoadBalancer selector: dh2i.com/entity: 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: 7979Verifica che i servizi e i bilanciatori di carico siano in funzione.
kubectl get servicesL'output è simile al seguente esempio:
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 87mVerifica che tutti e tre i pod di SQL Server siano in funzione.
kubectl get podsL'output è simile al seguente esempio:
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
Contenuti correlati
- Distribuire contenitori e gruppi di disponibilità di SQL Server con DH2i DxOperator nel servizio Azure Kubernetes tramite Rancher
- Implementare gruppi di disponibilità con DH2i DxEnterprise in Kubernetes
- Avvio rapido: Distribuire un cluster di contenitori SQL Server in Azure o Red Hat OpenShift
- Distribuire contenitori Linux di SQL Server in Kubernetes con StatefulSets