Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server em Linux
Este tutorial explica como configurar grupos de disponibilidade Always On (AGs) do SQL Server para contêineres baseados no SQL Server Linux implantados em um cluster do Serviço Kubernetes do Azure (AKS), usando o DH2i DxOperator. Estes procedimentos também se aplicam aos clusters Azure Red Hat OpenShift. A principal diferença é a implementação de um cluster do Azure Red Hat OpenShift, seguida da substituição dos comandos kubectl por oc nas etapas seguintes.
Seguindo os passos deste artigo, aprende como implementar um StatefulSet e usar o DH2i DxOperator para criar e configurar um AG com três réplicas, alojado no AKS.
Este tutorial consiste nas seguintes etapas:
- Criar um objeto
configmapno cluster AKS com configurações mssql-conf - Instalar o DxOperator
- Criar objetos secretos
- Implementar um grupo de disponibilidade SQL Server com três réplicas usando um ficheiro YAML
- Liga-te ao SQL Server
Pré-requisitos
Um Serviço Azure Kubernetes (AKS) ou Kubernetes cluster.
Uma licença DxEnterprise válida com recursos AG e túneis ativados. Para obter mais informações, consulte a edição para programadores para uso não produtivo ou o software DxEnterprise para cargas de trabalho de produção.
Criar o configmap objeto
No AKS, crie o
configmapobjeto, que tem configurações mssql-conf com base em suas necessidades. Neste exemplo, cria oconfigmapusando um ficheiro chamadomssqlconfig.yamlcom os seguintes parâmetros.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueCrie o objeto executando o seguinte comando.
kubectl apply -f ./mssqlconfig.yaml
Criar objetos secretos
Crie um segredo para armazenar a senha do sa SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Atenção
A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.
Crie um segredo para armazenar a chave de licença para DH2i. Visite o site da DH2i para obter uma licença de desenvolvedor. Substitua XXXX-XXXX-XXXX-XXXX no exemplo a seguir por sua chave de licença.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Instalar o DxOperator
Para instalar o DxOperator, descarregue o ficheiro YAML do DxOperator usando o seguinte exemplo e depois aplique o ficheiro YAML.
Implemente o ficheiro YAML que descreve como configurar um AG usando o seguinte comando. Salve o arquivo com um nome personalizado, como
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlDepois de instalar o operador, pode implementar containers do SQL Server, configurar o grupo de disponibilidade, definir réplicas e implementar e configurar o cluster DxEnterprise. Altere o seguinte ficheiro YAML de implementação de exemplo,
DxSqlAg.yaml, para se adequar aos seus requisitos.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" ]Implemente o ficheiro
DxSqlAg.yaml.kubectl apply -f DxSqlAg.yaml
Criar um ouvinte para o grupo de disponibilidade
Atualize o
availabilityGroupListenerPortvalor no seuDxSqlAg.yamlficheiro:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Aplique o ficheiro:
kubectl apply -f DxSqlAg.yamlAplique o seguinte YAML para adicionar um balanceador de carga para o ouvinte.
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: 7979Verifique se os serviços e balanceadores de carga estão a funcionar.
kubectl get servicesA saída é semelhante ao exemplo a seguir:
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 se os três pods do SQL Server estão a funcionar.
kubectl get podsA saída é semelhante ao exemplo a seguir:
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
Conteúdo relacionado
- Implementar contentores do SQL Server e grupo de disponibilidade com DH2i DxOperator no Azure Kubernetes Service via Rancher
- Desplegar grupos de disponibilidade com o DH2i DxEnterprise no Kubernetes
- Guia de início rápido: implantar um cluster de contêiner do SQL Server no Azure ou no Red Hat OpenShift
- Implantar contêineres SQL Server Linux no Kubernetes com StatefulSets