Страницы

Сохранить статью у себя в соцсети:

четверг, 31 января 2013 г.

§ Proxmox VE: DRBD shared storage.

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"

Комментариев нет:

Отправить комментарий

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика