Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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