Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server в Linux
Экземпляр отказоустойчивого кластера SQL Server с двумя узлами и общим диском обеспечивает избыточность на уровне сервера для поддержки высокой доступности. В этом руководстве приводятся инструкции по созданию экземпляра отказоустойчивого кластера SQL Server с двумя узлами в Linux. К конкретным шагам, которые вы завершите, относятся:
- Установка и настройка Linux
- Установка и настройка SQL Server
- Настройте файл hosts
- Настройка общего хранилища и перемещение файлов базы данных
- Установка и настройка Pacemaker в каждом узле кластера
- Настройка экземпляра отказоустойчивого кластера
В этой статье объясняется, как создать экземпляр отказоустойчивого кластера (FCI) SQL Server с двумя узлами и общим диском. Здесь содержатся инструкции и примеры сценариев для Red Hat Enterprise Linux (RHEL). Дистрибутивы Ubuntu аналогичны RHEL, поэтому примеры сценариев также будут работать в Ubuntu.
Для получения концептуальной информации см. «Экземпляры отказоустойчивого кластера» — SQL Server на Linux.
Предварительные условия
Для выполнения следующего законченного сценария нужны два компьютера для развертывания двухузлового кластера и сервера для хранения. Ниже описаны действия по настройке этих серверов.
Установка и настройка Linux
Сначала необходимо настроить операционную систему в узлах кластера. На каждом узле в кластере настройте дистрибутив Linux. На обоих узлах следует использовать один и тот же дистрибутив и одну и ту же версию. Воспользуйтесь одним из указанных далее дистрибутивов:
- RHEL с допустимой подпиской для надстройки высокой доступности
Установка и настройка SQL Server
Установите и настройте SQL Server на обоих узлах. Подробные инструкции см. в руководстве по установке SQL Server на Linux.
В целях настройки назначьте один узел первичным, а другой — вторичным. Используйте приведенные ниже условия для работы с этим руководством.
Остановите и отключите SQL Server во вторичном узле. В следующем примере показаны остановка и отключение SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-serverПримечание.
Во время установки создается главный ключ сервера для экземпляра 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>];Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Вы также можете задать разрешения на более детальном уровне. Для входа в Pacemaker требуется
VIEW SERVER STATEдля запроса состояния работоспособности с помощьюsp_server_diagnostics, setupadmin и ALTER ANY LINKED SERVER, чтобы обновить имя экземпляра FCI на имя ресурса, выполнивsp_dropserverиsp_addserver.Остановите и отключите SQL Server в первичном узле.
Настройте файл hosts
На каждом узле кластера настройте файл 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. Настройте хранилище, представьте его узлам кластера, а затем переместите в него файлы базы данных. Действия, выполняемые для каждого типа хранилища, описаны в следующих статьях:
- Настройка экземпляра отказоустойчивого кластера (iSCSI) — SQL Server на Linux
- Настройка экземпляра отказоустойчивого кластера (NFS) — SQL Server на Linux
- Настройка экземпляра отказоустойчивого кластера хранилища SMB — SQL Server на Linux
Установка и настройка Pacemaker в каждом узле кластера
На обоих узлах кластера создайте файлы для хранения имени пользователя и пароля SQL Server для входа с помощью Pacemaker.
Следующая команда создает и заполняет такой файл:
sudo touch /var/opt/mssql/secrets/passwd sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /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
Настройка экземпляра отказоустойчивого кластера
Будет создан экземпляр 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 на другой(ие) узел(ы). См. инструкции в статье Работа экземпляра отказоустойчивого кластера — SQL Server на Linux.
И, наконец, осуществите откат FCI на исходный узел и уберите ограничение на совместное размещение.
Итоги
В этом руководстве вы выполнили следующие задачи.
- Установка и настройка Linux
- Установка и настройка SQL Server
- Настройте файл hosts
- Настройка общего хранилища и перемещение файлов базы данных
- Установка и настройка Pacemaker в каждом узле кластера
- Настройка экземпляра отказоустойчивого кластера