Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server в Linux
В этом руководстве приведены инструкции по созданию кластера общего диска с двумя узлами для SQL Server на SUSE Linux Enterprise Server (SLES). Кластерный уровень основан на SUSE High Availability Extension (HAE), который построен на Pacemaker.
Примечание.
Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.
Дополнительные сведения о конфигурации кластера, параметрах агента ресурсов, управлении, лучших практиках и рекомендациях см. в разделе SUSE Linux Enterprise High Availability Extension 12 с пакетом обновления 5 (SP5).
Предварительные условия
Для завершения следующего комплексного сценария необходимо три компьютера: два для развертывания кластера из двух узлов и еще один сервер для настройки общего ресурса NFS. Ниже описаны общие действия по настройке этих серверов.
Установка и настройка операционной системы в каждом узле кластера
Сначала необходимо настроить операционную систему в узлах кластера. В этом пошаговом руководстве используйте SLES с допустимой подпиской для надстройки высокого уровня доступности.
Установка и настройка SQL Server в каждом узле кластера
Установите и настройте SQL Server на обоих узлах. Подробные инструкции см. в руководстве по установке SQL Server на Linux.
В целях настройки назначьте один узел первичным, а другой — вторичным. Используйте приведенные ниже условия для работы с этим руководством.
Остановите и отключите SQL Server во вторичном узле. В следующем примере показаны остановка и отключение SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-serverПримечание.
Во время установки для экземпляра SQL Server создается главный ключ сервера (SMK) и помещается в
/var/opt/mssql/secrets/machine-key. В Linux SQL Server всегда работает от имени локальной учетной записиmssql. Поскольку это локальная учетная запись, ее идентичность не передается между узлами. Необходимо скопировать ключ шифрования с первичного узла на каждый дополнительный узел, чтобы каждая локальнаяmssqlучетная запись может получить доступ к ней для расшифровки SMK.На основном узле создайте учетную запись SQL Server для Pacemaker и предоставьте ей разрешение на выполнение
sp_server_diagnostics. Pacemaker использует эту учетную запись, чтобы проверить, в каком узле запущен SQL Server.sudo systemctl start mssql-serverПодключитесь к базе данных SQL Server
masterс учетной записьюsaи выполните следующий сценарий:USE [master]; GO CREATE LOGIN [<loginName>] with PASSWORD = N'<password>'; GRANT VIEW SERVER STATE TO <loginName>;Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Остановите и отключите SQL Server в первичном узле.
Следуйте указаниям в документации по SUSE, чтобы настроить и обновить файл hosts для каждого узла кластера. Файл
hostsдолжен содержать IP-адрес и имя каждого узла кластера.Чтобы проверить IP-адрес текущего узла, выполните следующую команду:
sudo ip addr showЗадайте имя компьютера в каждом узле. Присвойте каждому узлу уникальное имя длиной не более 15 символов. Задайте имя компьютера, добавив его в
/etc/hostname, используя YAST или вручную.В следующем примере показан файл
/etc/hostsс дополнениями для двух узловSLES1иSLES2.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2Все узлы кластера должны иметь доступ без пароля SSH друг к другу. В противном случае такие средства, как
hb_report,crm_report, и Обозреватель истории Hawk могут собирать данные только с локального узла. Если вы используете нестандартный порт SSH, используйте-Xэтот параметр (см. другие требования и рекомендации). Например, если порт SSH равен 3479, вызовитеcrm_reportс помощью:crm_report -X "-p 3479" [...]Для получения дополнительной информации см. Руководство по администрированию.
В следующем разделе описана настройка общего хранилища и перемещение файлов базы данных в это хранилище.
Настройка общего хранилища и перемещение файлов базы данных
Для предоставления общего хранилища можно использовать различные решения. В этом пошаговом руководстве демонстрируется настройка общего хранилища с NFS. Следуйте рекомендациям и используйте Kerberos для защиты NFS:
Если вы не будете следовать этим рекомендациям, любой пользователь, который может получить доступ к вашей сети и подделать IP-адрес SQL-сервера, может получить доступ к вашим файлам данных. Как всегда, выполните моделирование угроз в системе, прежде чем использовать его в рабочей среде.
Другой вариант хранения — использовать общую папку SMB:
Настройка сервера NFS
Сведения о настройке сервера NFS см. в документации по SUSE: настройка сервера NFS.
Настройка всех узлов кластера для подключения к общему хранилищу NFS
Прежде чем настроить клиент NFS для монтирования пути к файлам базы данных SQL Server, чтобы указать на расположение общего хранилища, сохраните файлы базы данных во временном расположении, чтобы скопировать их позже в общий ресурс.
На основном узле только сохраните файлы базы данных во временное место. Следующий скрипт создает временный каталог, копирует файлы базы данных в новый каталог и удаляет старые файлы базы данных. При запуске SQL Server от имени локального пользователя
mssqlнеобходимо убедиться, что после передачи данных в подключенную общую папку локальный пользователь имеет доступ на чтение и запись в общую папку.su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitНастройте клиент NFS на всех узлах кластера:
Примечание.
Рекомендации и лучшие практики SUSE по использованию высокодоступного хранилища NFS см. в "Высокодоступное хранилище NFS с DRBD и Pacemaker".
На каждом узле убедитесь, что SQL Server успешно запускается с новым путем к файлу. На этом этапе только один узел должен запускать SQL Server одновременно. Они не могут выполняться одновременно, так как оба пытаются получить доступ к файлам данных одновременно.
Чтобы предотвратить запуск SQL Server на обоих узлах, используйте ресурс кластера файловой системы, чтобы убедиться, что ресурс монтируется только одним узлом в любой момент времени.
Приведенные ниже команды запускают SQL Server, проверяют его состояние, а затем останавливают SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
На этом этапе оба экземпляра SQL Server настроены для запуска с файлами базы данных в общем хранилище. Следующим шагом является настройка SQL Server для Pacemaker.
Установка и настройка Pacemaker в каждом узле кластера
На обоих узлах кластера создайте файлы для хранения имени пользователя и пароля SQL Server для входа Pacemaker. Следующая команда создает и заполняет такой файл:
sudo touch /var/opt/mssql/secrets/passwd sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<password>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdВнимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Все узлы кластера должны обращаться друг к другу через SSH. Средства, такие как
hb_reportилиcrm_report(для устранения неполадок) и Hawk's History Explorer требуют SSH-доступа между узлами без пароля. В противном случае они могут собирать данные только из текущего узла. Если вы используете нестандартный порт SSH, используйте-Xопцию (смmanстраницу). Например, если порт SSH равен 3479, вызовитеhb_reportс помощью:crm_report -X "-p 3479" [...]Дополнительные сведения см. в руководстве по системным требованиям и рекомендациям в документации SUSE.
Установите расширение высокого уровня доступности. Чтобы установить расширение, выполните действия, описанные в следующей статье SUSE:
Установите агент ресурсов FCI для SQL Server. Выполните следующие команды на обоих узлах:
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo sudo zypper --gpg-auto-import-keys refresh sudo zypper install mssql-server-haАвтоматически настройте первый узел. Следующим шагом является настройка запущенного кластера с одним узлом, настроив первый узел SLES1. Следуйте инструкциям из статьи SUSE, настроив первый узел.
После завершения настройки проверьте состояние кластера с помощью команды
crm status.crm statusПоказано, что настроен один узел, SLES1.
Добавьте узлы в существующий кластер. Затем добавьте узел SLES2 в кластер. Следуйте инструкциям из статьи SUSE, добавив второй узел.
После завершения настройки проверьте состояние кластера с помощью команды crm status. При успешном добавлении второго узла выходные данные выглядят примерно так:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1Примечание.
admin_addr — это ресурс виртуального IP-кластера, настроенный во время начальной настройки кластера с одним узлом.
Процедуры удаления. Если необходимо удалить узел из кластера, используйте скрипт начальной загрузки ha-cluster-remove. Дополнительные сведения см. в разделе Обзор скриптов начальной загрузки.
Настройка ресурсов кластера для SQL Server
Ниже описаны действия по настройке ресурса кластера для SQL Server. Настройте следующие два параметра:
- Имя ресурса SQL Server: имя кластеризованного ресурса SQL Server.
-
Значение времени ожидания: период времени, в течение которого кластер ожидает подключения ресурса. Для SQL Server это значение представляет время, которое, как вы ожидаете, потребуется SQL Server, чтобы вывести базу данных
masterв режим онлайн.
Обновите значения в следующем скрипте для вашей среды. Запустите скрипт на одном узле, чтобы настроить и запустить кластеризованную службу.
sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Например, следующий сценарий создает кластеризованный ресурс SQL Server с именем mssqlha.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
После фиксации конфигурации SQL Server запускается на том же узле, что и виртуальный IP-ресурс.
Дополнительные сведения см. в разделе Настройка ресурсов кластера и управление ими (командная строка).
Убедитесь, что SQL Server запущен
Чтобы проверить, запущен ли SQL Server, выполните команду crm status.
crm status
В следующем примере показаны результаты успешного запуска Pacemaker в качестве кластеризованного ресурса.
2 nodes configured
2 resources configured
Online: [ SLES1 SLES2 ]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
mssqlha (ocf::mssql:fci): Started SLES1
Управление кластерными ресурсами
Сведения об управлении ресурсами кластера см. в следующей статье SUSE: Управление ресурсами кластера
Ручное аварийное переключение
Хотя ресурсы настроены для автоматического переключения при отказе или миграции на другие узлы кластера в случае сбоя оборудования или программного обеспечения, вы можете перемещать их вручную с помощью графического интерфейса Pacemaker или командной строки.
Используйте команду migrate для этой задачи. Например, чтобы перенести ресурс SQL на узел кластера с именем SLES2, выполните следующую команду:
crm resource
migrate mssqlha SLES2