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 sono applicabili anche ai cluster Azure Red Hat OpenShift; la distinzione principale è la distribuzione di un cluster Azure Red Hat OpenShift, seguito da comandi sostitutivi kubectl con oc nei passaggi seguenti.
Microsoft supporta lo spostamento dei dati, il gruppo di disponibilità e i componenti di SQL Server. DH2i è responsabile del supporto del prodotto DxEnterprise, che include la gestione del cluster e del quorum.
DxOperator è un'estensione software per Kubernetes che usa definizioni di risorse personalizzate per automatizzare la distribuzione dei cluster DxEnterprise. DxEnterprise fornisce quindi tutti gli strumenti per creare, configurare, gestire e garantire il failover automatico per i carichi di lavoro dei gruppi di disponibilità di SQL Server in Kubernetes. È possibile registrarsi per ottenere una licenza software DxEnterprise gratuita. Per altre informazioni, vedere la Guida introduttiva a DxOperator.
Usando i passaggi descritti in questo articolo, scopri come distribuire uno StatefulSet e usare DH2i DxOperator per creare e configurare un AG con tre repliche, ospitato in AKS.
Questa esercitazione è costituita dai passaggi seguenti:
- Creare un oggetto
configmapnel cluster AKS con le impostazioni di mssql-conf - Installare DxOperator
- Creare un oggetto segreto
- Distribuire un gruppo di disponibilità SQL con 3 repliche tramite 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 viene creatoconfigMap, usando un file denominatomssqlconfig.yamlcon i parametri seguenti.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueCreare l’oggetto eseguendo i comandi seguenti.
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, è necessario scaricare il file YAML DxOperator usando l'esempio seguente e quindi applicare il file YAML.
Distribuisci il file YAML che descrive come configurare un AG con il comando seguente. Salvare il file con un nome personalizzato, come
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlDopo aver installato l'operatore è possibile distribuire i contenitori di SQL Server, configurare il gruppo di disponibilità, definire le repliche, distribuire e configurare il cluster DxEnterprise. Ecco un file YAML di distribuzione di esempio denominato
DxEnterpriseSqlAg.yaml, che è possibile modificare in base alle esigenze.apiVersion: dh2i.com/v1 kind: DxEnterpriseSqlAg metadata: name: contoso-sql spec: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Listener port for the availability group (uncomment to apply) availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED availabilityGroupOptions: null # Valid options are EXTERNAL (automatic failover) and NONE (no automatic failover) availabilityGroupClusterType: EXTERNAL createLoadBalancers: true template: metadata: labels: label: example annotations: annotation: example spec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 joinExistingCluster: false # QoS - guaranteed (uncomment to apply) #resources: #limits: #memory: 1Gi #cpu: '1' # Configuration options for the required persistent volume claim for DxEnterprise volumeClaimConfiguration: storageClassName: null resources: requests: storage: 1Gi mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer mssqlConfigMap: mssql-config # QoS - guaranteed (uncomment to apply) #resources: #limits: #memory: 2Gi #cpu: '2' # Configuration options for the required persistent volume claim for SQL Server volumeClaimConfiguration: storageClassName: null resources: requests: storage: 2Gi # Additional side-car containers, such as mssql-tools (uncomment to apply) #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]Distribuisci il file
DxEnterpriseSqlAg.yaml.kubectl apply -f DxEnterpriseSqlAg.yaml
Creare un listener del gruppo di disponibilità
Applicare il codice YAML seguente per aggiungere un servizio di bilanciamento del carico impostando il selettore sul valore di metadata.name nel passaggio precedente. In questo esempio è contoso-sql.
apiVersion: v1
kind: Service
metadata:
name: contoso-cluster-lb
spec:
type: LoadBalancer
selector:
dh2i.com/entity: contoso-sql
ports:
- name: sql
protocol: TCP
port: 1433
targetPort: 51444
- name: listener
protocol: TCP
port: 51433
targetPort: 51433
- name: dxe
protocol: TCP
port: 7979
targetPort: 7979
Verificare le assegnazioni di distribuzione e bilanciamento del carico.
kubectl get pods
kubectl get services
L'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 87m
PS /home/aravind> kubectl get pods
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