Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server в Linux
В этом руководстве объясняется, как настроить группы доступности SQL Server AlwaysOn для контейнеров на основе SQL Server Linux, развернутых в кластере Службы Azure Kubernetes (AKS), с помощью DH2i DxOperator. Эти процедуры также применяются к кластерам Azure Red Hat OpenShift. Главное отличие заключается в развертывании кластера Azure Red Hat OpenShift, после чего в следующих шагах необходимо заменить команды kubectl на oc.
Используя шаги из этой статьи, вы узнаете, как развернуть StatefulSet и использовать DH2i DxOperator для создания и настройки AG с тремя репликами, размещённой на AKS.
В этом руководстве описаны следующие действия.
- Создание объекта в кластере
configmapAKS с параметрами mssql-conf - Установка DxOperator
- Создать секретные объекты
- Развертывание группы доступности SQL Server с тремя репликами с помощью YAML-файла
- Подключение к SQL Server
Prerequisites
Служба Azure Kubernetes (AKS) или кластер Kubernetes.
Действительная лицензия DxEnterprise с включенными функциями AG и туннелями. Дополнительные сведения см. в версии разработчика для непроизводственного использования или программного обеспечения DxEnterprise для рабочих нагрузок.
configmap Создание объекта
В AKS создайте
configmapобъект, имеющий параметры mssql-conf на основе ваших требований. В этом примере вы создаётеconfigmap, используя файл с именемmssqlconfig.yamlи следующими параметрами.apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = trueСоздайте объект, выполнив следующую команду.
kubectl apply -f ./mssqlconfig.yaml
Создать секретные объекты
Создайте секрет для хранения sa пароля для SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Создайте секрет для хранения ключа лицензии для DH2i. Посетите веб-сайт DH2i, чтобы получить лицензию разработчика. Замените XXXX-XXXX-XXXX-XXXX в следующем примере ключом лицензии.
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
Установка DxOperator
Чтобы установить DxOperator, скачайте YAML-файл DxOperator, используя следующий пример, а затем примените YAML-файл.
Разверните YAML-файл, в котором описано, как настроить AG, с помощью следующей команды. Сохраните файл с пользовательским именем, например
DxOperator.yaml.curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlПосле установки оператора вы можете развернуть контейнеры SQL Server, настроить группу доступности, определить реплики, а также развернуть и настроить кластер DxEnterprise. Измените следующий пример YAML-файла развертывания,
DxSqlAg.yaml, чтобы соответствовать вашим требованиям.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" ]Разверните файл
DxSqlAg.yaml.kubectl apply -f DxSqlAg.yaml
Создание прослушивателя группы доступности
Обновите
availabilityGroupListenerPortзначение в вашемDxSqlAg.yamlфайле:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433Примените этот файл:
kubectl apply -f DxSqlAg.yamlПримените следующий YAML, чтобы добавить балансировщик нагрузки для слушателя.
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: 7979Проверьте, работают ли сервисы и балансировщики нагрузки.
kubectl get servicesВыходные данные выглядят примерно так:
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Проверьте, работают ли все три модуля SQL Server.
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
Связанный контент
- Развертывание контейнеров SQL Server и группы доступности с помощью DH2i DxOperator в службе Azure Kubernetes через Rancher
- Развертывание групп доступности с помощью DH2i DxEnterprise в Kubernetes
- Quickstart: развертывание кластера контейнеров SQL Server на Azure или Red Hat OpenShift
- Развертывание контейнеров SQL Server Linux в Kubernetes с помощью StatefulSets