Proxmox VE: Shared storage with DRBD.
В статье описывается способ организации общего дискового хранилища между двумя серверами Proxmox VE. Общее хранилище будет построено на базе DRBD. В итоге у нас будет два сервера между которыми будет возможна online миграция виртуальных машин.Подготавливаем диск, разбиваем там раздел с типом LVM (8e). Этот раздел будет низлежащим блочным устройством для DRBD тома (для DRBD тома также можно использовать и готовые LVM тома)
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-121601, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-121601, default 121601):
Using default value 121601
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Устанавливаем DRBD, важно чтобы версия ядерного модуля DRBD и drbd8-utils совпадали
# cat /sys/module/drbd/version
8.3.13
При необходимости правим данные о репозиториях, добавляем sid т.к. в стабильном репозитории слегка устаревшая версия drbd8-utils (на момент написания статьи - декабрь 2012)
# vi /etc/apt/sources.list
deb http://ftp.ru.debian.org/debian sid main
Обновляем список доступных пакетов, затем устанавливаем drbd8-utils, смотрим чтобы версия соответсовала версии DRBD в ядре.
# aptitude update
# aptitude install drbd8-utils -V
The following NEW packages will be installed:
drbd8-utils [2:8.3.13-2]
...
Setting up drbd8-utils (2:8.3.13-2) ...
Правим конфигурационные файлы DRBD-ресурса на обоих нодах.
# vi /etc/drbd.d/r0.res
resource r0 {
startup {
wfc-timeout 0;
degr-wfc-timeout 60;
become-primary-on both;
}
net {
cram-hmac-alg sha1;
shared-secret "my-secret";
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
syncer {
rate 30M;
}
on a1.proxmox.dev { # используем в качестве имен hostname'ы серверов.
device /dev/drbd0;
disk /dev/sdb1;
address 10.101.20.1:7788;
meta-disk internal;
}
on a2.proxmox.dev { # используем в качестве имен hostname'ы серверов.
device /dev/drbd0;
disk /dev/sdb1;
address 10.101.20.2:7788;
meta-disk internal;
}
}
Теперь создаем метаданные и запускаем DRBD том ( на обоих узлах)
# modprobe drbd
# drbdadm create-md r0
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
# drbdadm up r0
Cостояние можно просмотреть через /proc интерфейс
# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:31462272
Теперь можно запустить начальную синхронизацию (на любом из узлов). Статус выполнения можно также наблюдать через /proc/drbd.
# drbdadm -- --overwrite-data-of-peer primary r0
# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:SyncTarget ro:Secondary/Secondary ds:Inconsistent/UpToDate C r-----
ns:0 nr:19838592 dw:19838592 dr:0 al:0 bm:1211 lo:1 pe:7453 ua:0 ap:0 ep:1 wo:b oos:11487744
[===========>........] sync'ed: 63.4% (11216/30592)M
finish: 0:15:59 speed: 11,960 (11,480) want: 30,720 K/sec
По завершению синхронизации остановим тома и запустим их через rc-скрипт (на обоих узлах) уже в Dual-Primary режиме
# drbdadm down r0
# service drbd start
Теперь если посмотреть /proc/drbd , то можно увидеть что том находится в Dual-Primary режиме.
# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:0 dw:0 dr:200 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Теперь переходим к созданию LVM группы, настройка выполняется на одном узле.
# pvcreate /dev/drbd0
Writing physical volume data to disk "/dev/drbd0"
Physical volume "/dev/drbd0" successfully created
# vgcreate drbd-a1-a2 /dev/drbd0
Volume group "drbd-a1-a2" successfully created
Добавляем созданую группу томов в качестве хранилища для Proxmox, при добавлении хранилища указываем shared тип.
Теперь все готово, можно создать виртуальную машину и в качестве хранилища использовать группу томов размещенную на DRBD. После чего можно экспериментировать с живой миграцией.
На главную "Virtualizing Linux"
Комментариев нет:
Отправить комментарий