Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server в Linux
В этом руководстве объясняется, как настроить группы доступности SQL Server AlwaysOn для контейнеров на основе SQL Server Linux, развернутых в кластере Службы 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.
В этом руководстве рассматриваются следующие шаги:
- Создание объекта в кластере
configmapAKS с параметрами 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.yamlYAML развертывания, который можно изменить в соответствии с вашими требованиями.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
Связанный контент
- Развертывание групп доступности в Kubernetes с помощью DH2i DxOperator в Службе Azure Kubernetes и Rancher от SUSE
- Развертывание групп доступности с помощью DH2i DxEnterprise в Kubernetes
- Развертывание контейнеров SQL Server в Службе Azure Kubernetes
- Развертывание контейнеров SQL Server Linux в Kubernetes с помощью StatefulSets