Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server в Linux
В этой статье описывается, как настроить хранилище iSCSI для экземпляра отказоустойчивого кластера в Linux.
Настройка iSCSI
iSCSI использует сеть для предоставления дисков с сервера, известного как таргет, к серверам. Для серверов, подключающихся к цели iSCSI, требуется настроить инициатор iSCSI. Дискам в целевой системе присваиваются явные разрешения, чтобы только те инициаторы, которые должны иметь возможность получить к ним доступ, могли это сделать. Объект должен обладать высокой доступностью и надежностью.
Важные сведения о цели iSCSI
Хотя в этом разделе не описывается, как настроить целевой объект iSCSI, поскольку это зависит от типа используемого вами источника, убедитесь, что безопасность дисков, которые будут использоваться узлами кластера, настроена.
Цель никогда не следует настраивать на любом из узлов экземпляра отказоустойчивого кластера, если используется цель iSCSI на базе Linux. Для обеспечения производительности и доступности сети iSCSI должны быть отделены от сетей, используемых обычным сетевым трафиком как на исходном, так и на клиентских серверах. Сети, используемые для iSCSI, должны быть быстрыми. Помните, что сеть потребляет некоторую пропускную способность процессора, поэтому при использовании обычного сервера следует проводить соответствующее планирование.
Самое важное для выполнения на целевой системе — это убедиться, что созданным дискам назначены соответствующие разрешения, чтобы к ним могли обращаться только серверы, участвующие в экземпляре отказоустойчивого кластера. Пример показан здесь из целевого объекта Microsoft iSCSI, где linuxnodes1 — это создаваемое имя, и в этом случае IP-адреса узлов назначаются так, чтобы NewFCIDisk1.vhdx был видим для них.
Инструкции
В этом разделе описывается настройка инициатора iSCSI на серверах, которые служат узлами для FCI. Инструкции должны работать в Red Hat Enterprise Linux (RHEL) и Ubuntu.
Дополнительные сведения об инициаторе iSCSI для поддерживаемых дистрибутивов см. в следующих ссылках:
Выберите один из серверов, который будет участвовать в настройке FCI. Это не имеет значения, какой из них. iSCSI должен находиться в выделенной сети, поэтому настройте iSCSI для распознавания и использования этой сети. Запустите
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new, где<iSCSIIfaceName>— это уникальное или понятное имя для сети. В следующем примере используетсяiSCSINIC.sudo iscsiadm -m iface -I iSCSINIC -o newНиже приведены ожидаемые выходные данные.
New interface iSCSINIC addedИзмените
/var/lib/iscsi/ifaces/iSCSIIfaceName. Убедитесь, что в нем полностью заполнены следующие значения.-
iface.net_ifacename— это имя сетевой карты, как показано в ОС. -
iface.hwaddress— ЭТО MAC-адрес уникального имени, которое будет создано для следующего интерфейса. iface.ipaddressiface.subnet_Mask
См. следующий пример.
-
Найдите iSCSI-адресат.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort><iSCSINetName>— это уникальное/понятное имя для сети,<TargetIPAddress>— это IP-адрес цели iSCSI, а<TargetPort>— порт цели iSCSI.Ниже приведены ожидаемые выходные данные.
10.181.182.1:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target 10.201.202.1:3260,1 iqn.1991-05.com.contoso:dc1-linuxnodes1-target [2002:b4b5:b601::b4b5:b601]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target [2002:8c9:ca01::c8c9:ca01]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-targetВойдите в целевой объект.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l<iSCSIIfaceName>— это уникальное/понятное имя для сети, а<TargetIPAddress>— это IP-адрес цели iSCSI.Ниже приведены ожидаемые выходные данные.
Logging in to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] (multiple) Login to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] successful.Проверьте, есть ли подключение к целевому объекту iSCSI.
sudo iscsiadm -m sessionРезультат должен быть аналогичным приведенному ниже:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)Проверьте подключенные диски iSCSI.
sudo grep "Attached SCSI" /var/log/messages
Создайте физический том на диске iSCSI.
sudo pvcreate /dev/<devicename><devicename>— это имя устройства из предыдущего шага.Создайте группу томов на диске iSCSI. Диски, назначенные одной группе томов, отображаются в виде пула или коллекции.
sudo vgcreate <VolumeGroupName> /dev/devicename<VolumeGroupName>— это имя группы томов, а<devicename>— это имя устройства из шага 6.Создайте и проверьте логический том для диска.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName><size>— это размер создаваемого тома, который можно указать с помощью G (gigabytes), T (terabytes) и т. д.,<LogicalVolumeName>является именем логического тома и<VolumeGroupName>именем группы томов на предыдущем шаге.Ниже приведены ожидаемые выходные данные.
Logical volume "FCIDataLV1" created.В следующем примере создается том размером 25 ГБ.
Выполните
sudo lvs, чтобы просмотреть созданный LVM.Отформатируйте логический том с использованием поддерживаемой файловой системы. Для ext4 используйте следующий пример:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName><VolumeGroupName>— это имя группы томов из предыдущего шага.<LogicalVolumeName>— это имя логического тома из предыдущего шага.Для системных баз данных или других объектов, хранящихся в расположении данных по умолчанию, выполните указанные ниже действия. В противном случае перейдите к шагу 13.
Убедитесь, что SQL Server остановлен на сервере, на который вы работаете.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverПолностью перейдите в режим суперпользователя. При успешном выполнении вы не получаете никаких подтверждений.
sudo -iСтаньте
mssqlпользователем. При успешном выполнении вы не получаете никаких подтверждений.su mssqlСоздайте временный каталог для хранения данных и файлов журналов SQL Server. При успешном выполнении вы не получаете никаких подтверждений.
mkdir <TempDir><TempDir>— это имя папки. В следующем примере создается папка с именем /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDirСкопируйте данные и файлы журналов SQL Server во временный каталог. При успешном выполнении вы не получаете никаких подтверждений.
cp /var/opt/mssql/data/* <TempDir><TempDir>— это имя папки из предыдущего шага.Проверьте наличие файлов в папке.
ls <TempDir><TempDir>— имя папки из предыдущих шагов.Удалите файлы из существующего каталога данных SQL Server. При успешном выполнении вы не получаете никаких подтверждений.
rm - f /var/opt/mssql/data/*Проверьте, были ли файлы удалены. На следующем рисунке показан пример всей последовательности из c до h.
ls /var/opt/mssql/dataВведите
exit, чтобы вернуться на пользователяroot.Подключите логический том iSCSI в папке данных SQL Server. При успешном выполнении вы не получаете никаких подтверждений.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data<VolumeGroupName>— это имя группы томов, а<LogicalVolumeName>— это имя созданного логического тома. Приведенный ниже пример синтаксиса соответствует группе томов и логическому тому из предыдущей команды.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/dataИзмените владельца подключения на
mssql. При успешном выполнении вы не получаете никаких подтверждений.chown mssql /var/opt/mssql/dataИзмените владельца группы точки монтирования на
mssql. При успешном выполнении вы не получаете никаких подтверждений.chgrp mssql /var/opt/mssql/dataПереключитесь на
mssqlпользователя. При успешном выполнении вы не получаете никаких подтверждений.su mssqlСкопируйте файлы из временного каталога
/var/opt/mssql/data. При успешном выполнении вы не получаете никаких подтверждений.cp /var/opt/mssql/TempDir/* /var/opt/mssql/dataПроверьте наличие файлов.
ls /var/opt/mssql/dataВвод
exitне должен бытьmssql.Ввод
exitне должен бытьroot.Запустите SQL Server. Если все данные были скопированы и параметры безопасности применены правильно, сервер SQL Server должен отобразиться как запущенный.
sudo systemctl start mssql-server sudo systemctl status mssql-serverОстановите SQL Server и убедитесь, что она завершит работу.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Для объектов, отличных от системных баз данных, например пользовательских баз данных или резервных копий, выполните указанные ниже действия. Если используется только расположение по умолчанию, перейдите к шагу 14.
Перейдите в режим суперпользователя. При успешном выполнении вы не получаете никаких подтверждений.
sudo -iСоздайте папку для использования SQL Server.
mkdir <FolderName><FolderName>— это имя папки. Если папка находится в другом месте, необходимо указать полный путь к ней. В приведенном ниже примере создается папка /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdataПодключите логический том iSCSI в папке, созданной в предыдущем шаге. При успешном выполнении вы не получаете никаких подтверждений.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>— это имя группы томов,<LogicalVolumeName>— это имя созданного логического тома, а<FolderName>— имя папки. Ниже показан пример синтаксиса.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdataИзмените владение созданной папкой для
mssql. При успешном выполнении вы не получаете никаких подтверждений.chown mssql <FolderName><FolderName>— это имя созданной папки. Пример см. здесь.chown mssql /var/opt/mssql/userdataИзмените группу созданной
mssqlпапки на . При успешном выполнении вы не получаете никаких подтверждений.chown mssql <FolderName><FolderName>— это имя созданной папки. Пример см. здесь.chown mssql /var/opt/mssql/userdataВведите
exit, чтобы выйти из режима суперпользователя.Создайте в этой папке базу данных для тестирования. Следующий скрипт создает базу данных, переключает контекст на нее, проверяет наличие файлов на уровне ОС, а затем удаляет временное расположение. Для выполнения этого скрипта можно использовать SSMS или sqlcmd .
DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON (NAME = TestDB_Data, FILENAME = '/var/opt/mssql/userdata/TestDB_Data.mdf') LOG ON (NAME = TestDB_Log, FILENAME = '/var/opt/mssql/userdata/TestDB_Log.ldf'); GO USE TestDB; GOВыполните следующую команду в оболочке, чтобы просмотреть новые файлы базы данных.
sudo ls /var/opt/mssal/userdataНиже приведены ожидаемые выходные данные.
lost+found TestDB_Data.mdf TestDB_Log.ldfУдалите базу данных для очистки.
DROP DATABASE TestDB; GOsudo ls /var/opt/mssal/userdataНиже приведены ожидаемые выходные данные.
lost+foundОтсоединить общий ресурс
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>— это имя группы томов,<LogicalVolumeName>— это имя созданного логического тома, а<FolderName>— имя папки. Ниже показан пример синтаксиса.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Настройте сервер таким образом, чтобы группу томов мог активировать только Pacemaker.
sudo lvmconf --enable-halvm --services -startstopservicesСоздайте список групп томов на сервере. Все, что перечислено и не относится к диску iSCSI, используется системой, например, для диска ОС.
sudo vgsИзмените раздел конфигурации активации файла /etc/lvm/lvm.conf. Настройте следующую строку.
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]<ListOfVGsNotUsedByPacemaker>— это список групп томов из результатов шага 20, которые не используются FCI. Заключите каждый из них в кавычки и разделите запятыми. Пример см. здесь.При запуске Linux он подключает файловую систему. Чтобы убедиться, что только Pacemaker может подключить диск iSCSI, перестройте корневой образ файловой системы.
Выполните следующую команду, которая может занять несколько минут. При успешном выполнении вы не получите сообщения.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Перезапустите сервер.
На другом сервере, который будет участвовать в факультативном кластере, выполните шаги 1–6. Это предоставляет целевой объект iSCSI серверу SQL Server.
Создайте список групп томов на сервере. В нем должна отображаться созданная ранее группа томов.
sudo vgsЗапустите SQL Server и убедитесь, что он может быть запущен на этом сервере.
sudo systemctl start mssql-server sudo systemctl status mssql-serverОстановите SQL Server и убедитесь, что она завершит работу.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverПовторите шаги 1–6 на всех других серверах, которые будут участвовать в FCI.
Теперь вы готовы настроить FCI.