Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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 в каждом узле кластера
- Настройка экземпляра отказоустойчивого кластера