Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server в Linux
Двухузловый экземпляр отказоустойчивого кластера SQL Server с общим диском обеспечивает избыточность на уровне сервера для обеспечения высокой доступности. В этом руководстве приводятся инструкции по созданию экземпляра отказоустойчивого кластера SQL Server с двумя узлами в Linux. К конкретным шагам, которые вы завершите, относятся:
- Установка и настройка Linux
- Установка и настройка SQL Server
- Настройка файла хостов
- Настройка общего хранилища и перемещение файлов базы данных
- Установка и настройка Pacemaker в каждом узле кластера
- Настройка экземпляра отказоустойчивого кластера
В этой статье объясняется, как создать экземпляр отказоустойчивого кластера (FCI) SQL Server с двумя узлами и общим диском. Здесь содержатся инструкции и примеры сценариев для Red Hat Enterprise Linux (RHEL).
Концептуальные сведения см. в разделе Отказоустойчивые экземпляры кластеров в Linux.
Prerequisites
Чтобы завершить следующий сквозной сценарий, вам нужны две машины для развертывания двухузлового кластера и ещё один сервер для хранения. Ниже описано, как будут настроены эти серверы.
Установка и настройка Linux
Сначала необходимо настроить операционную систему в узлах кластера. На каждом узле кластера настройте дистрибутив Linux. На обоих узлах следует использовать один и тот же дистрибутив и одну и ту же версию. Воспользуйтесь одним из указанных далее дистрибутивов:
- RHEL с допустимой подпиской для надстройки высокой доступности
Установка и настройка SQL Server
Установите и настройте SQL Server на обоих узлах. Подробные инструкции см. в руководстве по установке SQL Server на Linux.
Назначить один узел первичным, а другой вторичным для целей конфигурации. Эти термины будут применяться далее в данном руководстве.
Остановите и отключите SQL Server во вторичном узле. В следующем примере показаны остановка и отключение SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-serverNote
Во время установки создается главный ключ сервера для экземпляра SQL Server и помещается в папку
/var/opt/mssql/secrets/machine-key. В Linux SQL Server всегда работает от имени локальной учетной записиmssql. Поскольку это локальная учетная запись, ее идентичность не передается между узлами. Поэтому нужно скопировать ключ шифрования с первичного узла на вторичный, чтобы каждый локальныйmssqlаккаунт мог получить к нему доступ и расшифровать мастер-ключ сервера.На основном узле создайте учетную запись 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>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];Caution
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Вы также можете задать разрешения на более детальном уровне. Для входа в Pacemaker требуется
VIEW SERVER STATEдля запроса состояния работоспособности с помощьюsp_server_diagnostics, setupadmin иALTER ANY LINKED SERVER, а также для обновления имени экземпляра FCI с использованием имени ресурса путём запускаsp_dropserverиsp_addserver.Остановите и отключите SQL Server в первичном узле.
Настройка файла хостов
На каждом узле кластера настройте файл hosts. Файл hosts должен содержать IP-адрес и имя каждого узла кластера.
Проверьте IP-адрес для каждого узла. Для отображения IP-адреса текущего узла выполните следующий сценарий.
sudo ip addr showЗадайте имя компьютера в каждом узле. Присвойте каждому узлу уникальное имя длиной не более 15 символов. Задайте имя компьютера, добавив его к
/etc/hosts. Следующий сценарий позволяет изменить/etc/hostsс помощьюvi.sudo vi /etc/hostsВ следующем примере показан файл
/etc/hostsс дополнениями для двух узловsqlfcivm1иsqlfcivm2.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Настройка хранилища и перемещение файлов базы данных
Необходимо предоставить хранилище, доступное для обоих узлов. Можно использовать iSCSI, NFS или SMB. Настройте хранилище, представьте его узлам кластера, а затем переместите в него файлы базы данных. Действия, выполняемые для каждого типа хранилища, описаны в следующих статьях:
- Настройте экземпляр резервного кластера на Linux (iSCSI)
- Настройте экземпляр резервного кластера на Linux (NFS)
- Настройте экземпляр резервного кластера на Linux (SMB)
Установка и настройка Pacemaker в каждом узле кластера
На обоих узлах кластера создайте файлы для хранения имени пользователя и пароля SQL Server для входа с помощью Pacemaker.
Следующая команда создает и заполняет такой файл:
sudo touch /var/opt/mssql/secrets/passwd echo '<loginName>' | sudo tee -a /var/opt/mssql/secrets/passwd echo '<loginPassword>' | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdНа обоих узлах кластера откройте порты брандмауэра для Pacemaker. Чтобы открыть эти порты с помощью
firewalld, выполните следующую команду:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadЕсли вы используете другой файрвол без встроенной конфигурации высокой доступности, откройте следующие порты для взаимодействия Pacemaker с другими узлами кластера:
- TCP: порты 2224, 3121, 21064
- UDP: порт 5405
Установите пакеты Pacemaker на каждом узле.
sudo yum install pacemaker pcs fence-agents-all resource-agentsЗадайте пароль для пользователя по умолчанию, который создается при установке пакетов Pacemaker и Corosync. Используйте одинаковый пароль на обоих узлах.
sudo passwd haclusterВключите и запустите службу
pcsdи Pacemaker. Это позволит узлам повторно подключаться к кластеру после перезагрузки. Выполните следующую команду на обоих узлах:sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerУстановите агент ресурсов FCI для SQL Server. Выполните следующие команды на обоих узлах.
sudo yum install mssql-server-ha
Настройка агента фехтовки
Устройство STONITH предоставляет агент блокировки. Для производственных кластеров необходимо настроить агент изоляции. Пример создания устройства STONITH в Azure см. раздел «Настройка Pacemaker на Red Hat Enterprise Linux в Azure». Отредактируйте инструкции под вашу среду.
Настройка экземпляра отказоустойчивого кластера
Будет создан экземпляр FCI в группе ресурсов. Это немного проще, так как группа ресурсов устраняет необходимость ограничений. Тем не менее, добавьте ресурсы в группу ресурсов в том порядке, в котором они должны запускаться. Порядок запуска должен быть следующим:
- ресурс хранилища;
- сетевой ресурс;
- ресурс приложения.
В этом примере создается FCI в группе NewLinFCIGrp. Имя группы ресурсов должно быть уникальным для любого ресурса, созданного в Pacemaker.
Создайте дисковый ресурс. Вы не получите ответ обратно, если нет проблемы. Способ создания дискового ресурса зависит от типа хранилища. В следующем разделе показаны примеры для каждого типа хранилища (iSCSI, NFS и SMB). Используйте пример, который подходит для типа вашего кластерного хранилища.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group <RGName>-
<iSCSIDiskResourceName>— имя ресурса, связанного с диском iSCSI. -
<VolumeGroupName>— имя группы томов. -
<LogicalVolumeName>— имя созданного логического тома. -
<FolderToMountiSCSIDisk>— папка для подключения диска (для системных баз данных и расположения по умолчанию, это будет/var/opt/mssql/data) -
<FileSystemType>будет ext4 или XFS в зависимости от того, как были отформатированы вещи и что поддерживает дистрибутив.
-
Создайте IP-адрес, который будет использоваться ФСИ. Вы не получите ответ обратно, если нет проблемы.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>-
<IPResourceName>— это имя ресурса, связанного с IP-адресом. -
<IPAddress>— это IP-адрес экземпляра FCI. -
<NetworkCard>— сетевая карта, связанная с подсетью (т. е. eth0) -
<NetMask>— это маска подсети, а именно 24 -
<RGName>— это имя группы ресурсов.
-
Создать ресурс FCI Вы не получите ответ обратно, если нет проблемы.
sudo pcs resource create <FCIResourceName> ocf:mssql:fci op defaults timeout=60s --group <RGName>-
<FCIResourceName>— это не только имя ресурса, но понятное имя, связанное с FCI. Это то, что пользователи и приложения используют для подключения. -
<RGName>— это имя группы ресурсов.
-
Запустите команду
sudo pcs resource. FCI должен быть в сети.Подключитесь к экземпляру FCI с помощью SSMS или sqlcmd, используя DNS-имя или имя ресурса экземпляра FCI.
Выполните заявление
SELECT @@SERVERNAME. Она должна вернуть имя FCI.Выполните заявление
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Она должна вернуть имя узла, на котором работает FCI.Вручную переключите FCI на другой узел. См. инструкции в разделе Эксплуатация резервного кластера на Linux.
Наконец, выполните обратное переключение FCI на исходный узел.
Summary
В этом руководстве вы выполнили следующие задачи.
- Установка и настройка Linux
- Установка и настройка SQL Server
- Настройка файла хостов
- Настройка общего хранилища и перемещение файлов базы данных
- Установка и настройка Pacemaker в каждом узле кластера
- Настройка экземпляра отказоустойчивого кластера