Сергей Маликов
25.08.2019
665

Создание и расширение кластера на базе drbd.

В статье рассматривается создание drbd ресурса, расположенного на логическом томе LVM, изменение размера drbd ресурса. DRBD – пакет обеспечивающий постоянную синхронизацию данных определенных разделов одного сервера с выделенными разделами другого сервера. Поддерживает только два узла. Разработчик — австрийская компания Linbit. Оглавление Создание и расширение кластера на базе drbd. 1 Создание drbd ресурса на логическом томе LVM. […]

В статье рассматривается создание drbd ресурса, расположенного на логическом томе LVM, изменение размера drbd ресурса.

DRBD – пакет обеспечивающий постоянную синхронизацию данных определенных разделов одного сервера с выделенными разделами другого сервера. Поддерживает только два узла. Разработчик — австрийская компания Linbit.

Оглавление

Создание и расширение кластера на базе drbd. 1

Создание drbd ресурса на логическом томе LVM. 2

1.Установка LVM и создание логических томов. 2

2.Добавление диска в LVM PV.. 2

3.Создание групп томов. 3

4.Расширение групп томов. 3

5.Создание логических томов. 3

6.Форматирование и монтирование логических томов. 4

7.Расширение логических томов. 5

Создание drbd ресурса на логическом томе под управлением lvm. 6

1.Настройка сетевых параметров на 1 и 2 сервере. 6

2.Установка drbd на 1 и 2 сервере. 7

3. Форматирование логических томов lvm под drbd (на 1 и 2 сервере). 7

4. Создать конфигурационные файлы drbd (на 1 и 2 сервере). 7

5.Создание drbd ресурсов (на 1 и 2). 8

6. На 1 сервере принудительно назначить роль ресурса primary, запуск синхронизации. 9

7. На 1 сервере отформатировать ресурс, смонтировать, перенести на drbd ресурс файлы и директории. 9

8. На 2 сервере перевести drbd ресурс в primary, смонтировать, создать символьные ссылки аналогично серверу 1. 11

9.На сервере 1 переводим ноду в режим primary и монтируем drbd ресурс. 12

Увеличение дискового пространства drbd ресурса. 12

Онлайн увеличение. 12

Ресайз drbd ресурса на логическом томе lvm.. 13

Увеличение офлайн. 14

Создание drbd ресурса на логическом томе LVM.

LVM (Logical Volume Manager) — менеджер логических томов, абстрагирующий управление дисками.  В LVM есть несколько уровней:

  • Физические тома (Physical volume) – раздел(ы) или физический диск(и).
  • Группа томов (Volume Group) – объединяет физические тома в один диск.
  • Логические тома (Logical Volume) – логические разделы, использующиеся также как и обычные разделы жесткого диска (которые можно форматировать в файловую систему).

Использование LVM упрощает создание множественных разделов с различными файловыми системами, расширение разделов.

1.Установка LVM и создание логических томов

Для установки lvm в ОС Red Hat, CentOS, Fedora ввести команду:

yum install lvm2

Создаем раздел на диске /dev/sdb и изменим тип раздела на Linux LVM или 8e:

fdisk /dev/sdb

Введите o и нажмите <Enter>, чтобы создать пустую таблицу разделов на диске.

Введите n и нажмите <Enter> для создания нового раздела. Нажмите  <Enter>, чтобы принять значения по умолчанию или введите свои.

Введите t и нажмите <Enter>. Введите тип раздела 8e и нажмите <Enter>. Тип раздела будет помечен как Linux LVM.

Введите w и нажмите <Enter>, чтобы сохранить изменения.

Создание раздела с помощью fdisk
Создание раздела с помощью fdisk

Теперь выполните следующую команду, чтобы добавить диск /dev/sdb1 в LVM как Physical Volume:

2.Добавление диска в LVM PV

pvcreate /dev/sdb1

Отобразить информацию о физических томах можно командой:

pvscan

Отобразить больше информации о каком-либо конкретном физическом томе, например, /dev/sdb1 можно командой:

pvdisplay /dev/sdb1
Добавление диска в LVM PV
Добавление диска в LVM PV

PV Name — имя диска.

VG Name — группа томов, в которую входит данный диск.

PV Size — размер диска.

Allocatable — распределение по группам. Если NO – диск еще не задействован и для использования необходимо включить его в группу.

PE Size — размер физического фрагмента. Пока диск не добавлен в группу, будет 0.

Total PE — количество физических экстентов.

Free PE — количество свободных физических экстентов.

Allocated PE — распределенные экстенты.

PV UUID — идентификатор физического раздела.

3.Создание групп томов

Выполните следующую команду для создания общего ресурса Volume Group (VG) из Physical Volume (PV)  /dev/sdb1:

vgcreate share /dev/sdb1

где share — произвольное имя создаваемой группы; /dev/sdb1 —диск.

Теперь вы можете перечислить все VG с помощью следующей команды:

vgscan

Отобразить дополнительную информацию конкретной VG можно с помощью следующей команды:

vgdisplay share
Создание групп томов
Создание групп томов

VG Name — имя группы.

Format — версия подсистемы, используемая для создания группы.

Metadata Areas — область размещения метаданных.

VG Access — уровень доступа к группе томов.

VG Size — суммарный объем всех дисков, которые входят в группу.

PE Size — размер физического фрагмента.

Total PE — количество физических фрагментов.

Alloc PE / Size — распределенное пространство: количество физических фрагментов / объем.

Free  PE / Size — свободное пространство: количество физических фрагментов / объем.

VG UUID — идентификатор группы.

4.Расширение групп томов

Можно добавить еще PV (например, /dev/sdc1) в существующий общий ресурс VG с помощью следующей команды:

vgextend share /dev/sdс1

5.Создание логических томов

Теперь можно создать логические тома. Создадим два тома: asterisk и monitor.

Создание тома с именем asterisk из группы share, объемом 512MB:

lvcreate --size 512M --name asterisk share

Создадим еще один LV – monitor размером 500MB с помощью следующей команды:

lvcreate --size 500M --name monitor share
Создание логических томов
Создание логических томов

При создании тома можно указать использование 35% от дискового пространства группы share:

lvcreate -l 35%VG share

Использовать все свободное пространство группы vg01 при создании логического тома:

lvcreate -l 100%FREE share

Также можно использовать %PVS — процент места от физического тома (PV); %ORIGIN — размер оригинального тома (применяется для снимков файловой системы).

Теперь можно перечислить все LV с помощью следующих команд:

lvscan

или

lvs

Отобразить дополнительную информацию о конкретном LV, можно с помощью следующей команды:

lvdisplay share/asterisk

где share – VG, общий ресурс; asterisk – LV, логический том.

Создание логических томов – отображение информации
Создание логических томов – отображение информации

LV Path — путь к устройству логического тома.

LV Name — имя логического тома.

VG Name — имя группы томов.

LV UUID — идентификатор.

LV Write Access — уровень доступа.

LV Creation host, time — имя компьютера и дата, когда был создан том.

LV Size — объем дискового пространства, доступный для использования.

Current LE — количество логических фрагментов.

6.Форматирование и монтирование логических томов

Вы можете получить доступ к своим логическим томам так же, как и к обычным разделам жесткого диска, таким как /dev/sdb1 , /dev/sdc2 и др.

Логические тома доступны как /dev/VG_NAME/LV_NAME

Например, если VG_NAME – это share , а LV_NAME – asterisk, тогда логический том доступен как /dev/share/asterisk.

Вы можете использовать /dev/share/asterisk так же, как обычный раздел жесткого диска /dev/sdb1.

Как только вы создали логический том, вам нужно отформатировать его.

Выполните следующую команду для форматирования /dev/share/asterisk в файловую систему ext4:

mkfs.ext4 /dev/share/asterisk

Теперь выполните следующую команду, чтобы создать точку монтирования, в которую вы хотите смонтировать логический том /dev/share/asterisk:

mkdir -pv /mnt/asterisk

Теперь можно смонтировать /dev/share/asterisk в любой пустой каталог, например /mnt/asterisk:

mount /dev/share/asterisk /mnt/asterisk

Проверим монтирование устройства:

df –h

Теперь можно копировать, создавать новые файлы и каталоги в /mnt/asterisk.

Форматирование и монтирование логических томов
Форматирование и монтирование логических томов

Для постоянного монтирования можно добавить в /etc/fstab строку:

/dev/share/asterisk  /mnt/asterisk    ext4    defaults        1 2

7.Расширение логических томов

LVM – хороший инструмент для управления квотами. Если потребуется больше места, можно изменить размер логического тома на лету.

Даже если вы не управляете квотами, когда у вас недостаточно места на диске, вы можете просто добавить новые жесткие диски, добавить их в PV, расширить VG новым PV и расширить LV.

Например, чтобы добавить еще 1 МБ к логическому тому asterisk, созданному из ресурса группы томов share , выполните следующую команду:

lvextend --size +1M --resizefs share/asterisk

Вы можете использовать G для обозначения ГБ. Например, –size +2G.

Размер логического тома asterisk должен быть изменен.

df –h
Расширение логических томов LVM
Расширение логических томов LVM

Создание drbd ресурса на логическом томе под управлением lvm.

1.Настройка сетевых параметров на 1 и 2 сервере

На 1 сервере

Указываем имя домена на 1 сервере.

nano /etc/sysconfig/network
Настройка сетевых параметров на 1 сервере – редактирование /etc/sysconfig/network
Настройка сетевых параметров на 1 сервере – редактирование /etc/sysconfig/network

Указываем статически ip адрес на интерфейсе

nano /etc/sysconfig/network-scripts/ifcfg-eth0
Настройка сетевых параметров на 1 сервере – редактирование /etc/sysconfig/network-  scripts/ifcfg-eth0
Настройка сетевых параметров на 1 сервере – редактирование /etc/sysconfig/network- scripts/ifcfg-eth0

Указываем статически ip адрес для доменов в /etc/hosts

nano /etc/hosts
Настройка сетевых параметров на 1 сервере /etc/hosts

Настройка сетевых параметров на 1 сервере /etc/hosts

Применяем настройки:

service network restart
Ifconfig
Отображение сетевых параметров на 1 сервере
Отображение сетевых параметров на 1 сервере

Настройка сетевых параметров на 1

На 2 сервере:

nano /etc/sysconfig/network
Настройка сетевых параметров на 2 сервере - редактирование /etc/sysconfig/network
Настройка сетевых параметров на 2 сервере – редактирование /etc/sysconfig/network
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Настройка сетевых параметров на 2 сервере - редактирование /etc/sysconfig/network-scripts/ifcfg-eth0
Настройка сетевых параметров на 2 сервере – редактирование /etc/sysconfig/network-scripts/ifcfg-eth0
nano /etc/hosts

Применяем изменения:

service network restart

Проверить отображение сетевых параметров:

Ifconfig
Отображение сетевых параметров на 2 сервере
Отображение сетевых параметров на 2 сервере

2.Установка drbd на 1 и 2 сервере

В стандартных репозиториях DRBD нет, поэтому надо подключить elrepo.

На 1,2 сервере (для CentOS 6):

rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

yum install https://www.elrepo.org/elrepo-release-6-9.el6.elrepo.noarch.rpm

Установка репозитория elrepo
Установка репозитория elrepo

Устанавливаем drbd, например, версии 8.4. Необходимо установить два пакета kmod-drbd84 и drbd84-utils.

yum install -y kmod-drbd84
Установка drbd
Установка drbd

При установке kmod-drbd84 также установятся зависимости: drbd84-utils.x86_64 0:9.5.0-1.el6.elrepo   kernel.x86_64 0:2.6.32-754.17.1.el6

Установка drbd завершена
Установка drbd завершена

3. Форматирование логических томов lvm под drbd (на 1 и 2 сервере).

mke2fs -j /dev/share/asterisk
mke2fs -j /dev/share/monitor
Форматирование логических томов lvm под drbd
Форматирование логических томов lvm под drbd

Удаляем фс:

dd if=/dev/zero bs=1M count=500 of=/dev/share/monitor
sync
dd if=/dev/zero bs=1M count=500 of=/dev/share/asterisk
sync
Низкоуровневое форматирование логических томов lvm под drbd
Низкоуровневое форматирование логических томов lvm под drbd

4. Создать конфигурационные файлы drbd (на 1 и 2 сервере).

nano /etc/drbd.d/asterisk.res
Конфигурационный файл ресурса asterisk /etc/drbd.d/asterisk.res
Конфигурационный файл ресурса asterisk /etc/drbd.d/asterisk.res
nano /etc/drbd.d/monitor.res
Конфигурационный файл ресурса monitor /etc/drbd.d/monitor.res
Конфигурационный файл ресурса monitor /etc/drbd.d/monitor.res

Изменить конфигурационный файл /etc/drbd.d/global_common.conf

Файл создается при установке. Необходимо настроить параметры:

global {
	usage-count no;
}
common {
startup {
                wfc-timeout 120;
                degr-wfc-timeout 60; 
}
disk {
	on-io-error detach;
	}
net {
	protocol C;
	after-sb-0pri discard-least-changes;
	after-sb-1pri discard-secondary;
	after-sb-2pri call-pri-lost-after-sb;
	cram-hmac-alg "sha1";
	shared-secret "hKZXMmQAp78phPMzOfQQ";
	}

syncer {
	rate 50M;
}
}

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

scp -r /etc/drbd.d/* root@node1:/etc/drbd.d/
Копирование конфигурационных файлов на другой сервер.
Копирование конфигурационных файлов на другой сервер.

5.Создание drbd ресурсов (на 1 и 2)

Проверим, что модуль drbd загружен и включен в автозагрузке. Если не включен – добавляем в автозагрузку. modprobe – добавляет модуль в ядро Linux.

Проверка модуля drbd
Проверка модуля drbd

Cоздаем drbd ресурсы:

drbdadm create-md asterisk
drbdadm up asterisk
drbdadm create-md monitor
drbdadm up monitor
cat /proc/drbd
Создание drbd ресурсов
Создание drbd ресурсов

После этого вывод команды cat /proc/drbd должен показывать, что состояние соединения Connected, роль ресурса, на обоих серверах – Secondary, состояние дисков Inconsistent. В выводе команды должна быть строка.

0:  cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent С r-----

Получить подробную информацию можно также командой

drbdsetup status asterisk --verbose –statistics

где asterisk – drbd ресурс, по которому необходима информация

Вывод команды drbdsetup status asterisk --verbose –statistics
Вывод команды drbdsetup status asterisk –verbose –statistics

Отдельные параметры также можно проверить командами:

drbdadm cstate asterisk – вывести на экран (только) состояние соединения ресурса asterisk

drbdadm role asterisk – вывести на экран (только) состояние соединения ресурса asterisk для текущей/противоположной ноды.

drbdadm dstate asterisk– вывести на экран (только) состояние дисков ресурса asterisk для текущей/противоположной ноды.

Вывод краткой информации о drbd ресурсе
Вывод краткой информации о drbd ресурсе

6. На 1 сервере принудительно назначить роль ресурса primary, запуск синхронизации.

drbdadm --force primary asterisk
drbdadm --force primary monitor
Запуск синхронизации drbd
Запуск синхронизации drbd

7. На 1 сервере отформатировать ресурс, смонтировать, перенести на drbd ресурс файлы и директории.

После окончания синхронизации отформатировать drbd ресурсы

mkfs.ext4 /dev/drbd0
mkfs.ext4 /dev/drbd1
Форматирование drbd в ext4
Форматирование drbd в ext4

Создать директории для монтирования drbd ресурсов и смонтировать в созданные директории:

mkdir -pv /mnt/asterisk
mkdir -pv /mnt/monitor

Монтирование:

mount /dev/drbd0 /mnt/asterisk
mount /dev/drbd1 /mnt/monitor

Проверить монтирование:

df -hT
Монтирование drbd ресурса
Монтирование drbd ресурса

Допустим drbd ресурс monitor (использующий устройство /dev/drbd1, смонтированное в /mnt/monitor) предназначен для переноса всех записей из папки /var/spool/asterisk/monitor/

Копируем все из /var/spool/asterisk/monitor/ на drbd ресурс monitor, смонтированный в /mnt/monitor:

cp /var/spool/asterisk/monitor/* /mnt/monitor

Удаляем содержимое папки /var/spool/asterisk/monitor/ и саму папку:

rm -rf /var/spool/asterisk/monitor/

Создаем символическую ссылку, которая будет указывать на новое расположение записей -/mnt/monitor:

ln -s /mnt/monitor /var/spool/asterisk/monitor

Меняем владельца на asterisk/asterisk, группу и права на 755 у каталога с примонтированным drbd ресурсом /mnt/monitor и символической ссылки /var/spool/asterisk/monitor:

chown asterisk:asterisk /mnt/monitor
chmod 755 /mnt/monitor
chown asterisk:asterisk /var/spool/asterisk/monitor
chmod 755 /var/spool/asterisk/monitor
ls /mnt/ -l
ls /var/spool/asterisk/ -l
Изменение прав на папку и символические ссылки

Изменение прав на папку и символические ссылки

Аналогичным образом переносим необходимые конфигурационные файлы и каталоги на ресурс /dev/drbd0 в папку /mnt/asterisk.

Останавливаем на сервере 1 все службы, которые будут использовать drbd ресурсы. Если на drbd ресурс переносились директории и конфигурационные файлы mysql, asterisk, apache, dahdi, fail2ban:

service mysql stop
service asterisk stop
service httpd stop
service dahdi stop
service fail2ban stop

Отмонтируем устройства, и на 1 сервере переводим ноду в secondary.

umount /mnt/asterisk
umount /mnt/monitor
drbdadm secondary asterisk
drbdadm secondary monitor

8. На 2 сервере перевести drbd ресурс в primary, смонтировать, создать символьные ссылки аналогично серверу 1.

drbdadm primary asterisk
drbdadm primary monitor

Создать директории для монтирования drbd ресурсов и смонтировать в созданные директории:

mkdir -pv /mnt/asterisk
mkdir -pv /mnt/monitor

Монтирование:

mount /dev/drbd0 /mnt/asterisk
mount /dev/drbd1 /mnt/monitor

Проверить монтирование:

df –hT

Удаляем содержимое папки /var/spool/asterisk/monitor/ и саму папку:

rm -rf /var/spool/asterisk/monitor/

Создаем символическую ссылку, которая будет указывать на новое расположение записей -/mnt/monitor:

ln -s /mnt/monitor /var/spool/asterisk/monitor

Меняем владельца на asterisk/asterisk, группу и права на 755 у каталога с примонтированным drbd ресурсом /mnt/monitor и символической ссылки /var/spool/asterisk/monitor:

chown asterisk:asterisk /mnt/monitor
chmod 755 /mnt/monitor
chown asterisk:asterisk /var/spool/asterisk/monitor
chmod 755 /var/spool/asterisk/monitor
ls /mnt/ -l
ls /var/spool/asterisk/ -l

Аналогичным образом удаляем конфигурационные файлы, каталоги и вместо них создаем необходимые символьные ссылки на ресурс /dev/drbd0 в папку /mnt/asterisk.

Останавливаем на сервере 1 все службы, которые будут использовать drbd ресурсы. Если на drbd ресурс переносились директории и конфигурационные файлы mysql, asterisk, apache, dahdi, fail2ban:

service mysql stop
service asterisk stop
service httpd stop
service dahdi stop
service fail2ban stop

Т.к. drbd ресурс будет в режиме single primary (один сервер – основной, один – запасной) и будет переключаться на другой в случае отказа primary сервера – отключаем на 2х серверах эти службы в автозагрузке.

Отмонтируем устройства, и на 2 сервере переводим ноду в secondary.

umount /mnt/asterisk
umount /mnt/monitor
drbdadm secondary asterisk
drbdadm secondary monitor

9.На сервере 1 переводим ноду в режим primary и монтируем drbd ресурс.

drbdadm primary asterisk
drbdadm primary monitor
mount /dev/drbd0 /mnt/asterisk
mount /dev/drbd1 /mnt/monitor

Увеличение дискового пространства drbd ресурса.

Онлайн увеличение.

Возможно увеличение размера онлайн и офлайн. При онлайн увеличении необходимо выполнение условий:

  • Резервное устройство соответствующего ресурса должно управляться подсистемой управления логическими томами, такой как LVM.
  • Ресурс должен в данный момент находиться в состоянии подключенного соединения.

Ресайз drbd ресурса на логическом томе lvm

Изменить размер drbd ресурса, который расположен на логическом томе lvm можно в режиме он-лайн.

Предположим на устройстве /dev/sdb есть свободное место, на котором можно создать еще один раздел и добавить его в группу томов LVM share.

lsblk

Создаем новый раздел с помощью fdisk /dev/sdb

fdisk /dev/sdb

Для создания нового раздела на /dev/sdb ведите

n – создание раздела

p – выбрать тип primary

2 – ввести номер раздела

t – выбрать изменение типа раздела

8e –ввести тип раздела

p – вывод на экран таблицы разделов

w – запись изменений и выход

Проверяем с помощью lsblk:

lsblk
Создание раздела /dev/sdb2
Создание раздела /dev/sdb2

Пометим диск для использования LVM:

pvcreate /dev/sdb2
pvdisplay

Добавляем /dev/sdd2 в группу томов share

vgextend share /dev/sdd2
vgdisplay
Добавляем /dev/sdd2 в группу томов share
Добавляем /dev/sdd2 в группу томов share

Расширяем LVM том /dev/share/monitor на обоих серверах, например, до максимально возможного размера:

lvextend -l +100%FREE /dev/share/monitor
Расширяем LVM том /dev/share/monitor
Расширяем LVM том /dev/share/monitor

Также, можно увеличить логический том на определенное количество гб/мб

lvextend -L+1G /dev/share/monitor – увеличить том /dev/share/monitor на 1гб

lvextend -L+500M /dev/share/monitor – увеличить том /dev/share/monitor на 500мб

Увеличиваем раздел, используя все свободное место. Для фс ext2/ext3/ext4:

resize2fs /dev/share/monitor

На сервере, где drbd-ресурс в роли Primary выполняем команду:

drbdadm resize monitor
В этом случае начнется синхронизация добавляемого пространства, пропустить синхронизацию (если добавляемое пространство пустое) можно опцией –assume-clean.<br> drbdadm — –assume-clean resize &lt;ресурс>
Изменение размера drbd ресурса
Изменение размера drbd ресурса

Проверим состояние, должна начаться синхронизация:

cat /proc/drbd

Увеличение офлайн.

Если drbd ресурс использует внешние метаданные и раздел увеличивается, когда drbd ресурс неактивен, то новый размер распознается автоматически. Drbd ресурс будет иметь новый размер после перехода в активное состояние и установления сетевого соединения.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices