Настройка экземпляра отказоустойчивого кластера (iSCSI) — SQL Server на Linux

Применимо к:SQL Server — Linux

В этой статье описывается, как настроить хранилище iSCSI для экземпляра отказоустойчивого кластера в Linux.

Настройка iSCSI

iSCSI использует сетевые подключения для представления дисков с сервера, который является целью для серверов. Для серверов, подключающихся к цели iSCSI, требуется настроить инициатор iSCSI. Дискам на цели присваиваются явные разрешения, чтобы обратиться к ним могли только инициаторы, обладающие соответствующими правами. Цель должна обладать высокой доступностью и надежностью.

Важные сведения о цели iSCSI

Хотя в этом разделе не рассматривается настройка цели iSCSI, так как она зависит от типа используемого источника, убедитесь, что настроены параметры безопасности для дисков, которые будут использоваться узлами кластера.

Цель никогда не следует настраивать на любом из узлов экземпляра отказоустойчивого кластера, если используется цель iSCSI на базе Linux. Для повышения производительности и доступности сети iSCSI должны быть отделены от тех, по которым передается обычный сетевой трафик, как на исходном, так и на клиентском сервере. Сети, используемые для iSCSI, должны быть быстрыми. Помните, что сеть потребляет некоторую пропускную способность процессора, поэтому при использовании обычного сервера следует проводить соответствующее планирование. Важнее всего убедиться в том, что созданным дискам назначены соответствующие разрешения, чтобы к ним могли обратиться только серверы, участвующие в экземпляре отказоустойчивого кластера. Ниже показан пример из цели iSCSI, где linuxnodes1 — это созданное имя, а IP-адреса узлов назначены, чтобы NewFCIDisk1.vhdx был им виден.

Initiator

Instructions

В этом разделе рассматривается настройка инициатора iSCSI на серверах, которые будут служить узлами для экземпляра отказоустойчивого кластера. Эти инструкции должны работать и в RHEL и Ubuntu.

Дополнительные сведения об инициаторе iSCSI для поддерживаемых дистрибутивов см. по следующим ссылкам.

  1. Выберите один из серверов, которые будут включены в конфигурацию экземпляра отказоустойчивого кластера. Какой именно — не имеет значения. iSCSI должен находиться в выделенной сети, поэтому настройте iSCSI для распознавания и использования этой сети. Запустите sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new, где <iSCSIIfaceName> — это уникальное или понятное имя для сети. В следующем примере используется iSCSINIC.

    sudo iscsiadm -m iface -I iSCSINIC -o new
    

    Screenshot of the iface command and the response to the command.

  2. Измените /var/lib/iscsi/ifaces/iSCSIIfaceName. Убедитесь, что в нем полностью заполнены следующие значения.

    • iface.net_ifacename — это имя сетевой карты, отображаемое в операционной системе.
    • iface.hwaddress — это MAC-адрес уникального имени, которое будет создано для этого интерфейса ниже.
    • iface.ipaddress
    • iface.subnet_Mask

    См. следующий пример.

    Screenshot of the file with the values completely filled out.

  3. Найдите цель iSCSI.

    sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
    

    <iSCSINetName> — это уникальное/понятное имя для сети, <TargetIPAddress> — это IP-адрес цели iSCSI, а <TargetPort> — это порт цели iSCSI.

    Screenshot of the discovery command and the response to the command.

  4. Войдите на цель.

    sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
    

    <iSCSIIfaceName> — это уникальное/понятное имя для сети, а <TargetIPAddress> — это IP-адрес цели iSCSI.

    iSCSITargetLogin

  5. Проверьте наличие подключения к цели iSCSI.

    sudo iscsiadm -m session
    

    iSCSIVerify

  6. Проверьте подключенные к iSCSI диски.

    sudo grep "Attached SCSI" /var/log/messages
    

    Screenshot of the grep command and the response to the command showing the attached SCSI disks.

  7. Создайте физический том на диске iSCSI.

    sudo pvcreate /dev/<devicename>
    

    <devicename> — это имя устройства из предыдущего шага.

  8. Создайте группу томов на диске iSCSI. Диски, назначенные одной группе томов, отображаются в виде пула или коллекции.

    sudo vgcreate <VolumeGroupName> /dev/devicename
    

    <VolumeGroupName> — это имя группы томов, а <devicename> — это имя устройства из шага 6.

  9. Создайте и проверьте логический том для диска.

    sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
    

    <size> — это размер создаваемого тома, для которого можно указать G (гигабайты), T (терабайты) и т. п., <LogicalVolumeName> — это имя логического тома, а <VolumeGroupName> — это имя группы томов из предыдущего шага.

    В приведенном ниже примере создается том размером 25 ГБ.

    Create25GBVol

  10. Выполните sudo lvs, чтобы просмотреть созданный LVM.

  11. Отформатируйте логический том с использованием поддерживаемой файловой системы. Для EXT4 используйте следующий пример.

    sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
    

    <VolumeGroupName> — это имя группы томов из предыдущего шага. <LogicalVolumeName> — это имя логического тома из предыдущего шага.

  12. Для системных баз данных или других объектов, хранящихся в расположении данных по умолчанию, выполните указанные ниже действия. В противном случае перейдите к шагу 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> — это имя папки из шага d.

  • Удалите файлы из существующего каталога данных SQL Server. В случае успешного действия подтверждение не выводится.

    rm - f /var/opt/mssql/data/*
    
  • Проверьте, были ли файлы удалены. На рисунке ниже показан пример всей последовательности с c по h.

    ls /var/opt/mssql/data
    

    Screenshot of the ls command and the response to the command.

  • Введите exit, чтобы переключиться на привилегированного пользователя.

  • Подключите логический том 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, чтобы выйти из учетной записи привилегированного пользователя.

  • Запустите 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
    
  1. Для объектов, отличных от системных баз данных, например пользовательских баз данных или резервных копий, выполните указанные ниже действия. Если используется только расположение по умолчанию, перейдите к шагу 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, чтобы выйти из режима суперпользователя.

  • Создайте в этой папке базу данных для тестирования. В примере ниже создается база данных с помощью sqlcmd, переключается контекст, проверяется наличие файлов на уровне ОС, а затем временная папка удаляется. Можно также использовать SSMS.

    Screenshot of the sqlcmd command and the response to the command.

  • Отключение общей папки

    sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
    

    <VolumeGroupName> — это имя группы томов, <LogicalVolumeName> — это имя созданного логического тома, а <FolderName> — это имя папки. Пример синтаксиса показан ниже.

    sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata 
    
  1. Настройте сервер таким образом, чтобы группу томов мог активировать только Pacemaker.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  2. Создайте список групп томов на сервере. Все указанное, не являющееся диском iSCSI, используется системой, например для диска ОС.

    sudo vgs
    
  3. Измените раздел конфигурации активации файла /etc/lvm/lvm.conf. Настройте следующую строку.

    volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
    

    <ListOfVGsNotUsedByPacemaker> — это список групп томов из выходных данных шага 20, которые не будут использоваться экземпляром отказоустойчивого кластера. Заключите каждый из них в кавычки и разделите запятыми. Ниже приведен соответствующий пример.

    Screenshot showing an example of a volume_list value.

  4. При запуске Linux подключит файловую систему. Чтобы убедиться, что только Pacemaker может подключить диск iSCSI, перестройте корневой образ файловой системы.

    Выполните следующую команду, которая может занять несколько минут. При успешном выполнении команда не возвращает никакие сообщение.

    sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
    
  5. Перезапустите сервер.

  6. На другом сервере, который будет участвовать в экземпляре отказоустойчивого кластера, выполните шаги 1–6. В результате цель iSCSI будет представлена для SQL Server.

  7. Создайте список групп томов на сервере. В нем должна отображаться созданная ранее группа томов.

    sudo vgs
    
  8. Запустите SQL Server и убедитесь, что он может быть запущен на этом сервере.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  9. Остановите сервер SQL Server и убедитесь в том, что его работа прекращена.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  10. Повторите шаги 1–6 на всех других серверах, которые будут участвовать в экземпляре отказоустойчивого кластера.

Теперь вы готовы к настройке экземпляра отказоустойчивого кластера.

Распределение Тема
Red Hat Enterprise Linux с надстройкой высокой доступности (HA) Настройка
Эксплуатация
SUSE Linux Enterprise Server с надстройкой высокой доступности (HA) Настройка