Развертывание групп доступности в Kubernetes с помощью DH2i DxOperator на Служба Azure Kubernetes
Область применения: SQL Server — Linux
В этом руководстве объясняется, как настроить группы доступности SQL Server AlwaysOn для контейнеров на основе SQL Server Linux, развернутых в кластере Kubernetes Служба Azure Kubernetes (AKS), с помощью DH2i DxOperator. Эти процедуры также применимы к кластерам Azure Red Hat OpenShift; Основное различие заключается в развертывании кластера Azure Red Hat OpenShift, за которым следует подстановка kubectl
команд в oc
следующих шагах.
Примечание.
Корпорация Майкрософт поддерживает компоненты перемещения данных, группы доступности и SQL Server. DH2i отвечает за поддержку продукта DxEnterprise, который включает в себя управление кластером и кворумом. DxOperator — это расширение программного обеспечения для Kubernetes, которое использует пользовательские определения ресурсов для автоматизации развертывания кластеров DxEnterprise. Затем DxEnterprise предоставляет все инструментирование для создания, настройки, управления и предоставления автоматической отработки отказа для рабочих нагрузок ГРУППЫ доступности SQL Server в Kubernetes.
Вы можете зарегистрировать бесплатную лицензию на программное обеспечение DxEnterprise. Дополнительные сведения см. в кратком руководстве по началу работы DxOperator.
С помощью описанных в этой статье шагов вы узнаете, как развернуть StatefulSet и использовать DH2i DxOperator для создания и настройки группы доступности с тремя репликами, размещенными в AKS.
В этом руководстве рассматриваются следующие шаги:
- Создание объекта в кластере
configmap
AKS с параметрами mssql-conf - Установка DxOperator
- Создание секретных объектов
- Развертывание 3 реплики SQL AG с помощью YAML-файла
- Подключение к SQL Server
Необходимые компоненты
Кластер Служба Azure Kubernetes (AKS) или Kubernetes.
Допустимая лицензия DxEnterprise с включенными функциями и туннелями группы доступности. Дополнительные сведения см. в выпуске разработчика для непроизводственных рабочих нагрузок или программного обеспечения 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>"
Внимание
Пароль должен соответствовать политике паролей по умолчанию 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, описывающий настройку группы доступности с помощью следующей команды. Сохраните файл с пользовательским именем, например
DxOperator.yaml
.curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml kubectl apply –f DxOperator.yaml
После установки оператора можно развернуть контейнеры SQL Server, настроить группу доступности, определить реплики, развернуть и настроить кластер DxEnterprise. Ниже приведен пример файла
DxEnterpriseSqlAg.yaml
YAML развертывания, который можно изменить в соответствии с вашими требованиями.apiVersion: dh2i.com/v1 kind: DxEnterpriseSqlAg metadata: name: contoso-sql spec: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Listener port for the availability group (uncomment to apply) availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED availabilityGroupOptions: null # Valid options are EXTERNAL (automatic failover) and NONE (no automatic failover) availabilityGroupClusterType: EXTERNAL createLoadBalancers: true template: metadata: labels: label: example annotations: annotation: example spec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 joinExistingCluster: false # QoS – guaranteed (uncomment to apply) #resources: #limits: #memory: 1Gi #cpu: '1' # Configuration options for the required persistent volume claim for DxEnterprise volumeClaimConfiguration: storageClassName: null resources: requests: storage: 1Gi mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer mssqlConfigMap: mssql-config # QoS – guaranteed (uncomment to apply) #resources: #limits: #memory: 2Gi #cpu: '2' # Configuration options for the required persistent volume claim for SQL Server volumeClaimConfiguration: storageClassName: null resources: requests: storage: 2Gi # Additional side-car containers, such as mssql-tools (uncomment to apply) #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]
Разверните файл
DxEnterpriseSqlAg.yaml
.kubectl apply -f DxEnterpriseSqlAg.yaml
Создать прослушиватель группы доступности
Примените следующий YAML для добавления подсистемы балансировки нагрузки, задав селектор значением metadata.name
на предыдущем шаге. В нашем примере это значение выглядит следующим образом: contoso-sql
.
apiVersion: v1
kind: Service
metadata:
name: contoso-cluster-lb
spec:
type: LoadBalancer
selector:
dh2i.com/entity: contoso-sql
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 pods
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
PS /home/aravind> 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
Связанный контент
- Развертывание групп доступности с помощью DH2i DxEnterprise в Kubernetes
- Развертывание контейнеров SQL Server в Службе Azure Kubernetes
- Развертывание контейнеров SQL Server Linux в Kubernetes с помощью StatefulSets
- Руководство по настройке проверки подлинности Active Directory с помощью контейнеров SQL Server на Linux