Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server en Linux
En este tutorial se explica cómo configurar grupos de disponibilidad AlwaysOn (AG) de SQL Server para contenedores basados en Linux de SQL Server implementados en un clúster de Azure Kubernetes Service (AKS), mediante DH2i DxOperator. Estos procedimientos también se aplican a los clústeres de Red Hat OpenShift en Azure. La principal diferencia es el despliegue de un clúster Red Hat OpenShift en Azure, seguido de sustituir kubectl comandos por oc en los siguientes pasos.
Siguiendo los pasos de este artículo, aprendes a desplegar un StatefulSet y utilizar el DH2i DxOperator para crear y configurar un AG con tres réplicas, alojado en AKS.
Este tutorial consta de los pasos siguientes:
- Creación de un objeto
configmapen el clúster de AKS con la configuración mssql-conf - Instalación de DxOperator
- Cree objetos secretos
- Despliega un grupo de disponibilidad de SQL Server de tres réplicas usando un archivo YAML
- Conectarse a SQL Server
Prerequisites
Un Azure Kubernetes Service (AKS) o clúster de Kubernetes.
Una licencia de DxEnterprise válida que incluya características de AG y túneles habilitados. Para obtener más información, consulte la edición de desarrollador para uso no productivo o el software DxEnterprise para cargas de trabajo de producción.
Cree el objeto configmap
En AKS, cree el objeto
configmap, que tiene la configuración mssql-conf en función de sus requisitos. En este ejemplo, creas elconfigmapusando un archivo llamadomssqlconfig.yamlcon los siguientes parámetros.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueCrea el objeto ejecutando el siguiente comando.
kubectl apply -f ./mssqlconfig.yaml
Cree objetos secretos
Cree un secreto para almacenar la contraseña sa de SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
Cree un secreto para almacenar la clave de licencia para DH2i. Visite el sitio web de DH2i para obtener una licencia de desarrollador. En el ejemplo siguiente, reemplace XXXX-XXXX-XXXX-XXXX con su clave de licencia.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Instalación de DxOperator
Para instalar DxOperator, descarga el archivo YAML de DxOperator usando el siguiente ejemplo y luego aplica el archivo YAML.
Despliega el archivo YAML que describe cómo configurar un AG usando el siguiente comando. Guarde el archivo con un nombre personalizado, como
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlDespués de instalar el operador, puedes desplegar contenedores de SQL Server, configurar el grupo de disponibilidad, definir réplicas y desplegar y configurar el clúster DxEnterprise. Cambia el siguiente archivo YAML de despliegue de ejemplo,
DxSqlAg.yaml, para adaptarlo a tus necesidades.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" ]Implemente el archivo
DxSqlAg.yaml.kubectl apply -f DxSqlAg.yaml
Creación del agente de escucha del grupo de disponibilidad
Actualiza el
availabilityGroupListenerPortvalor en tuDxSqlAg.yamlarchivo:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Aplique el archivo:
kubectl apply -f DxSqlAg.yamlAplica el siguiente YAML para añadir un balanceador de carga para el oyente.
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 que los servicios y balanceadores de carga estén funcionando.
kubectl get servicesEl resultado es similar al ejemplo siguiente:
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 que los tres pods de SQL Server estén funcionando.
kubectl get podsEl resultado es similar al ejemplo siguiente:
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
Contenido relacionado
- Implementación de contenedores y grupos de disponibilidad de SQL Server con DH2i DxOperator en Azure Kubernetes Service mediante Rancher
- Implementación de grupos de disponibilidad con DH2i DxEnterprise en Kubernetes
- Inicio rápido: Implementación de un clúster de contenedores de SQL Server en Azure o Red Hat OpenShift
- Implementación de contenedores de SQL Server Linux en Kubernetes con StatefulSets