Создание и расширение кластера на базе 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
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
9.На сервере 1 переводим ноду в режим primary и монтируем drbd ресурс. 12
Увеличение дискового пространства drbd ресурса. 12
Ресайз drbd ресурса на логическом томе lvm. 13
Создание 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>, чтобы сохранить изменения.
Теперь выполните следующую команду, чтобы добавить диск /dev/sdb1 в LVM как Physical Volume:
2.Добавление диска в LVM PV
pvcreate /dev/sdb1
Отобразить информацию о физических томах можно командой:
pvscan
Отобразить больше информации о каком-либо конкретном физическом томе, например, /dev/sdb1 можно командой:
pvdisplay /dev/sdb1
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
Создание drbd ресурса на логическом томе под управлением lvm.
1.Настройка сетевых параметров на 1 и 2 сервере
На 1 сервере
Указываем имя домена на 1 сервере.
nano /etc/sysconfig/network
Указываем статически ip адрес на интерфейсе
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Указываем статически ip адрес для доменов в /etc/hosts
nano /etc/hosts
Применяем настройки:
service network restart
Ifconfig
Настройка сетевых параметров на 1
На 2 сервере:
nano /etc/sysconfig/network
nano /etc/sysconfig/network-scripts/ifcfg-eth0
nano /etc/hosts
Применяем изменения:
service network restart
Проверить отображение сетевых параметров:
Ifconfig
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
Устанавливаем drbd, например, версии 8.4. Необходимо установить два пакета kmod-drbd84 и drbd84-utils.
yum install -y kmod-drbd84
При установке kmod-drbd84 также установятся зависимости: drbd84-utils.x86_64 0:9.5.0-1.el6.elrepo kernel.x86_64 0:2.6.32-754.17.1.el6
3. Форматирование логических томов lvm под drbd (на 1 и 2 сервере).
mke2fs -j /dev/share/asterisk
mke2fs -j /dev/share/monitor
Удаляем фс:
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
4. Создать конфигурационные файлы drbd (на 1 и 2 сервере).
nano /etc/drbd.d/asterisk.res
nano /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.
Cоздаем drbd ресурсы:
drbdadm create-md asterisk
drbdadm up asterisk
drbdadm create-md monitor
drbdadm up monitor
cat /proc/drbd
После этого вывод команды cat /proc/drbd должен показывать, что состояние соединения Connected, роль ресурса, на обоих серверах — Secondary, состояние дисков Inconsistent. В выводе команды должна быть строка.
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent С r-----
Получить подробную информацию можно также командой
drbdsetup status asterisk --verbose –statistics
где asterisk – drbd ресурс, по которому необходима информация
Отдельные параметры также можно проверить командами:
drbdadm cstate asterisk – вывести на экран (только) состояние соединения ресурса asterisk
drbdadm role asterisk – вывести на экран (только) состояние соединения ресурса asterisk для текущей/противоположной ноды.
drbdadm dstate asterisk– вывести на экран (только) состояние дисков ресурса asterisk для текущей/противоположной ноды.
6. На 1 сервере принудительно назначить роль ресурса primary, запуск синхронизации.
drbdadm --force primary asterisk
drbdadm --force primary monitor
7. На 1 сервере отформатировать ресурс, смонтировать, перенести на drbd ресурс файлы и директории.
После окончания синхронизации отформатировать drbd ресурсы
mkfs.ext4 /dev/drbd0
mkfs.ext4 /dev/drbd1
Создать директории для монтирования drbd ресурсов и смонтировать в созданные директории:
mkdir -pv /mnt/asterisk
mkdir -pv /mnt/monitor
Монтирование:
mount /dev/drbd0 /mnt/asterisk
mount /dev/drbd1 /mnt/monitor
Проверить монтирование:
df -hT
Допустим 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
Пометим диск для использования LVM:
pvcreate /dev/sdb2
pvdisplay
Добавляем /dev/sdd2 в группу томов share
vgextend share /dev/sdd2
vgdisplay
Расширяем LVM том /dev/share/monitor на обоих серверах, например, до максимально возможного размера:
lvextend -l +100%FREE /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
Проверим состояние, должна начаться синхронизация:
cat /proc/drbd
Увеличение офлайн.
Если drbd ресурс использует внешние метаданные и раздел увеличивается, когда drbd ресурс неактивен, то новый размер распознается автоматически. Drbd ресурс будет иметь новый размер после перехода в активное состояние и установления сетевого соединения.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.