Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 63 Следующий »

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) и РУСБ.10015-10, РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12

Аннотация

DRBD (Distributed Replicated Block Device) — это инструмент, позволяющий создавать решения для резервирования данных путем репликации блочных устройств (например, жестких дисков или томов LVM). При использовании DRBD данные, записанные на одном сервере, автоматически и синхронно копируются на другой сервер. Использование DRBD является одним из способов организации сетевого RAID-1. 

Ключевые особенности:

  • данные реплицируются сразу после того как они были изменены;
  • инструмент реализован как модуль ядра;
  • DRBD обеспечивает репликацию на удалённый узел содержимого локального блочного устройства; 
  • операция чтения всегда осуществляется только с локального узла;
  • для сетевого взаимодействия используется протокол TCP.

Каждый из узлов может функционировать как:

  • primary/первичный — узел доступен для чтения и записи данных как локальное блочное устройство;
  • secondary/вторичный — узел хранит данные, но не позволяет получить к ним локальный доступ.

Если первичный узел прекращает работу, DRBD переводит вторичный узел в режим первичного. Узлы могут взаимодействовать между собой в одном из трех режимов репликации.

Использование более двух узлов возможно только для DRBD версии 9 и выше

Режимы репликации

В терминологии DRBD режимы репликации именуются как протоколы (protocol). Протокол определяет, как данные синхронизируются между узлами, а также как обрабатываются ситуации сбоя и обеспечения целостности данных. 

Инструмент поддерживает три режима репликации данных между узлами:

  1. Protocol A  — операция записи считается завершенной, если завершена запись на локальный узел и запись передана на удаленный узел.
  2. Protocol B  — выполнены аналогичные Protocol A условия после чего удаленный узел подтвердил получение записи. 
  3. Protocol C  — выполнены аналогичные Protocol A условия после чего локальный и удаленный узлы подтвердтвердили успешное завершение записи. Обеспечивает наибольшую сохранность данных при этом наиболее ресурсоёмок.

Protocol A рекомендуется использовать только при существенной потере производительности дисковой системы во время работы DRBD

В качестве объекта записи в DRBD выступает т.н. ресурс. Ресурс (Resource) — это реплицируемые области блочных устройств. Помимо ресурсов DRBD хранит на узлах необходимую для репликации служебную информацию (размеры блочных устройств, журналы активности и т.д.), которая именуется как метаданные (metadata).

Параметры стенда


Для корректной работы DRBD необходимо наличие ресурсов одинакового объема на узлах

Для развертывания кластера используются два подсоединенных к сети компьютера с установленной ОС Astra Linux. DRBD должен быть запущен на обоих узлах. 

ПараметрУзел 1Узел 2
Имя узлаdrbd1drbd2
Статический IP-адрес узла10.19.1.3610.19.1.39


  1. Присвоить статические IP-адреса узлам выполнив на них:

    sudo nmcli c d path 1

    sudo nmcli c m path 1 ip4 <IP-адрес узла>/24 gw4 192.168.23.1 ipv4.dns 77.88.8.8  ipv4.method manual

    sudo nmcli c u path 1

    В качестве IP-адреса сервера DNS (параметр ipv4.dns) для примера указан адрес сервера Яндекс (77.88.8.8), который можно заменить на любой удобный адрес. Подробнее про настройку сетевых подключений см. Настройка сетевых подключений в Astra Linux.

  2. Имена узлов внести в файл /etc/hosts:
    sudo sed -i '$a 10.19.1.36\tdrbd1' /etc/hosts
    sudo sed -i '$a 10.19.1.39\tdrbd2' /etc/hosts
  3. Исключить указание имен узлов в строках с адресами локальной петли (127.0.0.1):
    sudo sed -i 's/^127\.0\.0\.1\s.*/127.0.0.1\tlocalhost/' /etc/hosts
    sudo sed -i '/^127\.0\.1\.1/d' /etc/hosts

Установка DRBD

На всех узлах:

  1. Установить пакет:
    sudo apt install drbd-utils


  2. Подключить модуль ядра:
    sudo modprobe drbd

Настройка репликации

На всех узлах:

  1. Перед началом настройки сделаить резервную копию конфигурационного файла global_common.conf инструментом cp:

    cd /etc/drbd.d

    sudo cp global_common.conf global_common.conf.backup

    или при помощи графического файлового менеджера Fly.

  2. Указать настройки конфигурации виртуального блочного устройства DRBD в /etc/drbd.d/global_common.conf:
    global {
      usage-count no;
    }
    common {
      net {
        protocol C;
      }
    }

Настройки основного конфигурационного файла:

    • блок global содержит параметры, влияющие на работу всех ресурсов:

      • параметр usage-count отвечает за отправку статистики использования DRBD на сервера LINBIT. По умолчанию установлен в yes. Рекомендуется изменить на no;
    • блок net содержит параметры сетевого взаимодействия между узлами:

      • параметр protocol указывает используемый режим репликации.

        DRBD допускает указание используемого протокола для ресурсов в блоке resource файлов конфигурации ресурсов (см. ниже)

Описание остальных блоков доступно в виде комментариев в самом файле конфигурации.

Управление DRBD

Для получения справки по DRBD и настройкам конфигурационных файлов выполнить:

info drbd

Для управления узлами в DRBD применяется компонент drbdadm.

Основные команды:

  • проверить синтаксис настроек, указанных в файле конфигурации на ошибки:
    sudo drbdadm dump all


  • задействовать метаданные:
    sudo drbdadm create-md <имя_узла>


  • инициализировать службу на узле (инициализацию нужно проводить на всех узлах):
    sudo drbdadm up <имя_узла>

     использовать down вместо up для выключения;

  • отслеживать статус синхронизации между узлами:
    drbdadm status


  • принудительно назначить узел первичным:
    sudo drbdadm primary <имя_узла>

     для назначения узла вторичным вместо primary указать secondary;

    Использование параметра --force допустимо для данной команды только при первом запуске, в противном случае данные будут утеряны


  • временно отключить узлы:
    sudo drbdadm disconnect all

    чтобы вновь включить нужно использовать connect.


    Вместо all для drbdadm допустимо указывать имя конкретного узла

     

  • вызов справки о drbdadm :
    man drbdadm

Добавление ресурсов

На всех узлах:

  1. Указать реплицируемый дисковый ресурс в /etc/drbd.d/r0.res для ресурса r0:
    resource r0 {
     # здесь возможно указание значения параметра protocol если он не указан в global_common.conf
      on drbd01 { 
        device    /dev/drbd0;
        disk      /dev/sdb;
        address   10.19.1.36:7789;
        meta-disk internal;
      }
      on drbd02 {
        device    /dev/drbd0;
        disk      /dev/sdb;
        address   10.19.1.39:7789;
        meta-disk internal;
      }
    }

    Настройки конфигурационного файла ресурсов:

    Конфигурационный файл подробнее:

    • resource — название ресурса;
    • on <имя_узла> — описание первого узла:
      • device — блок данных, который необходимо создать;
      • disk — родительский жесткий диск;
      • address — IP-адрес и номер порта соответствующего узла;
      • meta-disk internal — указание хранить служебные метаданные на этом же узле.


  2. Инициализировать хранилище метаданных:
    sudo drbdadm create-md r0


  3. Запустить службу drbd:
    sudo /etc/init.d/drbd start


  4. Включить в автозагрузку службу drbd:
    echo drbd > /etc/modules-load.d/drbd.conf

Далее:

  1. Сделать один из узлов, наппример drbd01, первичным выполнив на нем:
    sudo drbdadm -- --overwrite-data-of-peer primary all


  2. На вторичном узле drbd02 проверить процесс репликации:
    watch -n1 cat /proc/drbd

    Остановить watch можно сочетанием клавиш <Ctrl+C>


  3. Указать файловую систему для созданного виртуального блочного устройства на первичном узле:
    sudo mkfs.ext4 /dev/drbd0


  4. Примонтировать устройство на первичном узле:
    sudo mount /dev/drbd0 /srv


Просмотр списка задействованных ресурсов DRBD:

drbd-overview

более детально:

/etc/init.d/drbd status

 

СокращениеПараметр

cs:

 

состояние соединения

st:


состояние узла (локального/удаленного)

ld:


согласованность локальных данных

ds:

 

согласованность данных

ns:


отправка по сети

nr:

 

получение по сети

dw:

 

запись на диск

dr:


чтение с диска

pe:

 

ожидание подтверждения

ua:


разблокирован (все еще нужно отправить подтверждение)
al:количество записей в журнале доступа

Проверка работы

  1. Скопировать несколько файлов на узел, установленный как основной, в каталог /srv :
    sudo cp -r /etc/default /srv


  2. Отмонтировать каталог /srv:
    sudo umount /srv


  3. Установить первичному узлу роль вторичного:
    sudo drbdadm secondary r0


  4. Установить вторичному узлу роль первичного:
    sudo drbdadm primary r0


  5. Смонтировать ранее отмонтированный раздел:
    sudo mount /dev/drbd0 /srv


  6. Убедиться в наличии ранее скопированных файлов в каталоге /srv :
    ls

    /etc/default


DRBD и OCFS2

Начиная с версии DRBD-8.0.08 инструмент может задействовать оба узла как первичные, что дает возможность использовать кластерные файловые системы, например OCFS2.

OCFS2 — файловая система, обеспечивающая разделяемое использование одного и того же хранилища несколькими системами.

Настройка DRBD с OCFS2

На всех узлах:

  1. Установить пакет ocfs2-tools :
    sudo apt install ocfs2-tools


  2. Указать параметры настроек ocfs2-tools в основном конфигурационном файле /etc/ocfs2/cluster.conf:
    cluster:
         node_count = 2
         name = ocfs2cluster
     
    node:
         number = 1
         cluster = ocfs2cluster
         ip_port = 7777
         ip_address = 10.19.1.36
         name = drbd01
     
    node:
         number = 2
         cluster = ocfs2cluster
         ip_port = 7777
         ip_address = 10.19.1.39
         name = drbd02

Далее:
 Создать файловую систему для drbd0:

sudo mkfs.ocfs2 -L "testVol" /dev/drbd0

где "testVol" — имя создаваемого раздела.


Далее на всех узлах:

  1. Указать параметры в в /etc/default/o2cb
    O2CB_ENABLED=true
    O2CB_BOOTCLUSTER=ocfs2cluster


  2. Инициализировать новый кластер:
    o2cb register-cluster ocfs2cluster


  3. Включить и добавить в автозапуск:
    systemctl enable drbd o2cb ocfs2
    systemctl start drbd o2cb ocfs2


  4. Добавить новые точки монтирования в fstab:
    /dev/drbd0 /srv ocfs2 defaults,auto,heartbeat=local 0 0


  • Нет меток