Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server в Linux
В этом руководстве объясняется, как настроить группы доступности Always On для контейнеров SQL Server Linux, развернутых в кластере Kubernetes в службе Azure Kubernetes (AKS), с помощью DH2i DxEnterprise. Можно выбрать конфигурацию sidecar (предпочтительную) или создать собственный пользовательский образ контейнера.
Примечание.
Корпорация Майкрософт поддерживает компоненты перемещения данных, группы доступности и SQL Server. DH2i отвечает за поддержку продукта DxEnterprise, который включает в себя управление кластером и кворумом.
Выполнив действия, описанные в этой статье, узнайте, как развернуть StatefulSet и использовать решение DH2i DxEnterprise для создания и настройки группы доступности. Это руководство состоит из следующих шагов.
- Создайте конфигурацию headless-сервиса
- Создание конфигурации StatefulSet с SQL Server и DxEnterprise в том же pod, что и контейнер-сайдкар.
- Создайте и настройте группу доступности (AG) SQL Server, добавив вторичные реплики.
- Создайте базу данных в группе доступности и протестируйте отказоустойчивость
Предварительные условия
В этом руководстве показан пример группы доступности (AG) с тремя репликами. Вам нужно:
- Служба Azure Kubernetes (AKS) или кластер Kubernetes.
- Действительная лицензия DxEnterprise с включенными функциями AG и туннелями. Дополнительные сведения см. в версии разработчика для непроизводственного использования или программного обеспечения DxEnterprise для рабочих нагрузок.
Создание службы без головы
В кластере Kubernetes службы без головы позволяют модулям pod подключаться друг к другу с помощью имен узлов.
Чтобы создать службу без интерфейса, создайте YAML-файл под названием
headless_services.yamlсо следующим примером содержимого.#Headless services for local connections/resolution apiVersion: v1 kind: Service metadata: name: dxemssql-0 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-0 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-1 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-1 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-2 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-2 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033Выполните следующую команду, чтобы применить конфигурацию.
kubectl apply -f headless_services.yaml
Создайте StatefulSet
Создайте YAML-файл StatefulSet со следующим примером содержимого и присвойте ему
dxemssql.yamlимя.Эта конфигурация StatefulSet создает три реплики DxEMSSQL, которые используют запросы на постоянный том для хранения своих данных. Каждый модуль в этом StatefulSet включает два контейнера: контейнер SQL Server и контейнер DxEnterprise. Эти контейнеры запускаются отдельно друг от друга в конфигурации "побочного контейнера", но DxEnterprise управляет репликой группы доступности (AG) в контейнере SQL Server.
#DxEnterprise + MSSQL StatefulSet apiVersion: apps/v1 kind: StatefulSet metadata: name: dxemssql spec: serviceName: "dxemssql" replicas: 3 selector: matchLabels: app: dxemssql template: metadata: labels: app: dxemssql spec: securityContext: fsGroup: 10001 containers: - name: sql image: mcr.microsoft.com/mssql/server:2022-latest env: - name: ACCEPT_EULA value: "Y" - name: MSSQL_ENABLE_HADR value: "1" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: mssql mountPath: "/var/opt/mssql" - name: dxe image: docker.io/dh2i/dxe env: - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: dxe mountPath: "/etc/dh2i" volumeClaimTemplates: - metadata: name: dxe spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi - metadata: name: mssql spec: accessModes: - ReadWriteOnce resources: requests: storage: 1GiСоздайте учетные данные для экземпляра SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Примените конфигурацию StatefulSet.
kubectl apply -f dxemssql.yamlПроверьте состояние модулей и перейдите к следующему шагу, когда их состояние станет
running.kubectl get pods kubectl describe pods
Создание группы доступности и тестирование отказоустойчивости
Дополнительные сведения о создании и настройке группы доступности, добавлении реплик и тестировании отработки отказа см. в разделе Доступность групп SQL Server в Kubernetes.
Действия по настройке прослушивателя группы доступности (необязательно)
Вы также можете настроить прослушиватель группы доступности, выполнив следующие действия.
Убедитесь, что вы создали прослушиватель AG с помощью DxEnterprise, как описано в необязательном шаге ближе к концу документации DH2i.
В Kubernetes можно при необходимости создавать статические IP-адреса. При создании статического IP-адреса убедитесь, что при удалении и повторном создании службы прослушивателя внешний IP-адрес, назначенный службе прослушивателя, не изменяется. Выполните действия, чтобы создать статический IP-адрес в Службе Azure Kubernetes (AKS).
После создания IP-адреса назначьте этот IP-адрес и создадите службу подсистемы балансировки нагрузки, как показано в следующем примере YAML.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: 52.140.117.62 selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Действия по настройке перенаправления подключений для чтения и записи (необязательно)
После создания группы доступности вы можете включить перенаправление подключения для чтения и записи с вторичного сервера на основной, выполнив следующие действия. Дополнительные сведения см. в статье Перенаправление подключения записи/чтения с вторичной реплики на первичную (группы доступности Always On).
USE [master];
GO
ALTER AVAILABILITY
GROUP [ag_name] MODIFY REPLICA
ON N'<name of the primary replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-0 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-1 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the primary replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of primary -0>:1433'));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the secondary-0 replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -0>:1433'));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the secondary-1 replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -1>:1433'));
GO
Связанный контент
- Развертывание групп доступности в Kubernetes с помощью DH2i DxOperator в Azure Kubernetes Service
- Развертывание контейнеров SQL Server в Службе Azure Kubernetes
- Развертывание контейнеров SQL Server Linux в Kubernetes с помощью StatefulSets
- Руководство по настройке проверки подлинности Active Directory с помощью контейнеров SQL Server на Linux