Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server no Linux
Este tutorial explica como configurar os AGs (grupos de disponibilidade Always On) do SQL Server para contêineres baseados em Linux do SQL Server implantados em um cluster do AKS (Serviço de Kubernetes do Azure), usando DH2i DxOperator. Esses procedimentos também se aplicam aos clusters Red Hat OpenShift no Azure. A principal distinção é a implantação de um cluster Red Hat OpenShift no Azure, seguido pela substituição kubectl dos comandos por oc nos passos seguintes.
Seguindo os passos deste artigo, você aprende como implantar um StatefulSet e usar o DH2i DxOperator para criar e configurar um AG com três réplicas, hospedado no AKS.
O tutorial consiste nas seguintes etapas:
- Criar um objeto
configmapno cluster AKS com configurações mssql-conf - Instalar o DxOperator
- Criar objetos secretos
- Implante um grupo de disponibilidade do SQL Server com três réplicas usando um arquivo YAML
- Conectar-se ao SQL Server
Pré-requisitos
Um cluster do AKS (Serviço de Kubernetes do Azure) ou do Kubernetes.
Uma licença válida do DxEnterprise com funcionalidades de AG e túneis habilitados. Para obter mais informações, confira a edição do desenvolvedor para uso que não seja de produção ou software DxEnterprise para cargas de trabalho de produção.
Criar o objeto configmap
No AKS, crie o objeto
configmap, que tem configurações mssql-conf com base em seus requisitos. Neste exemplo, você cria oconfigmapby usando um arquivo 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 sa do SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas que sejam 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. No exemplo a seguir, substitua XXXX-XXXX-XXXX-XXXX 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, baixe o arquivo YAML do DxOperator usando o seguinte exemplo e, em seguida, aplique o arquivo YAML.
Implante o arquivo YAML que descreve como configurar um AG usando o seguinte comando. Salve o arquivo com um nome personalizado, por exemplo,
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlDepois de instalar o operador, você pode implantar contêineres do SQL Server, configurar o grupo de disponibilidade, definir réplicas e implantar e configurar o cluster DxEnterprise. Altere o seguinte arquivo YAML de implantação de exemplo,
DxSqlAg.yaml, para atender às suas necessidades.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" ]Implante o arquivo
DxSqlAg.yaml.kubectl apply -f DxSqlAg.yaml
Criar um ouvinte de grupo de disponibilidade
Atualize o valor
availabilityGroupListenerPortno arquivoDxSqlAg.yaml:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Aplique o arquivo:
kubectl apply -f DxSqlAg.yamlAplique o YAML a seguir 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 funcionando.
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 87mVerifique se os três pods do SQL Server estão rodando.
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
- Implantar contêineres do SQL Server e grupo de disponibilidade com DH2i DxOperator no Serviço de Kubernetes do Azure via Rancher
- Implantar grupos de disponibilidade com o DH2i DxEnterprise no Kubernetes
- Início Rápido: Implantar um cluster de contêineres do SQL Server no Azure ou no Red Hat OpenShift
- Implante contêineres Linux do SQL Server no Kubernetes com StatefulSets