Active/Passive Cluster в Linux. Часть 1: установка и настройка DRBD

Dec 21, 2015 15:56 · 531 words · 3 minute read drbd pacemaker corosync cluster

Начинаем цикл статей о пошаговой настройке отказоустойчивого кластера в ОС Debian Wheezy с использованием Pacemaker и Corosync.

Часть первая — обзор исходных данных, установка необходимых пакетов и настройка DRBD-ресурсов. Давайте разберемся!

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

lsb_release -a
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.8 (wheezy)
Release:	7.8
Codename:	wheezy

На серверах установлено про три сетевые карты (причем одна из них двухпортовая, два физических интерфейса объединены в один логический).

Настройки сетевых интерфейсов на первом сервере:

cat /etc/network/interfaces
auto lo eth0
iface lo inet loopback

iface eth0 inet static
    address 192.168.0.22
    netmask 255.255.255.0
    gateway 192.168.0.5

auto eth1
iface eth1 inet static
    address 192.168.25.8
    netmask 255.255.255.0

auto bond0
iface bond0 inet static
    address 172.16.0.1
    netmask 255.255.255.0
    gateway 172.16.0.254
    bond_mode balance-rr
    bond_miimon 100
    bond_downdelay 200
    bond_updelay 200
    slaves eth2 eth3

На втором сервере:

cat /etc/network/interfaces
auto lo eth0
iface lo inet loopback

iface eth0 inet static
    address 192.168.0.23
    netmask 255.255.255.0
    gateway 192.168.0.5

auto eth1
iface eth1 inet static
    address 192.168.25.9
    netmask 255.255.255.0

auto bond0
iface bond0 inet static
    address 172.16.0.2
    netmask 255.255.255.0
    gateway 172.16.0.254
    bond_mode balance-rr
    bond_miimon 100
    bond_downdelay 200
    bond_updelay 200
    slaves eth2 eth3

Примечание. Интерфейс eth0 служит для доступа к отдельным нодам кластера, eth1 — это heartbeat-интерфейс, а bond0 используется для синхронизации DRBD-ресурсов.

В нашем примере будут использоваться два DRBD-ресурса — раздел для базы данных и раздел для хранения пользовательских файлов.

Устанавливаем на оба сервера необходимые пакеты:

aptitude install lvm2 drbd8-utils

Выполняем:

modprobe drbd
echo 'drbd' >> /etc/modules

Подготовка необходимых разделов (команды выполняются на обоих серверах одновременно):

pvcreate /dev/sda5
vgcreate vg0 /dev/sda5
lvcreate -L100G -n www vg0
lvcreate -L100G -n mysql vg0

Создаем конфигурационные файлы /etc/drbd.d/www.res и /etc/drbd.d/mysql.res следующего содержания:

resource www {
    protocol C;
 
    disk {
        fencing resource-only;
    }
 
    handlers {
        fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
        after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
    }
 
    net {
        after-sb-0pri discard-least-changes;
        after-sb-1pri call-pri-lost-after-sb;
        after-sb-2pri call-pri-lost-after-sb;
    }
    syncer {
        rate 110M;
    }
    on db1
    {
        device /dev/drbd2;
        disk /dev/vg0/www;
        address 172.16.0.1:7794;
        meta-disk internal;
    }
    on db2
    {
        device /dev/drbd2;
        disk /dev/vg0/www;
        address 172.16.0.2:7794;
        meta-disk internal;
    }
}
resource mysql {
    protocol C;
 
    disk {
        fencing resource-only;
    }
 
    handlers {
        fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
        after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
    }
 
    net {
        after-sb-0pri discard-least-changes;
        after-sb-1pri call-pri-lost-after-sb;
        after-sb-2pri call-pri-lost-after-sb;
    }
    syncer {
        rate 110M;
    }
    on db1
    {
        device /dev/drbd0;
        disk /dev/vg0/mysql;
        address 172.16.0.1:7792;
        meta-disk internal;
    }
    on db2
    {
        device /dev/drbd0;
        disk /dev/vg0/mysql;
        address 172.16.0.2:7792;
        meta-disk internal;
    }
}

После чего на обоих серверах выполняем:

drbdadm create-md www
drbdadm create-md mysql
drbdadm up all

На первом сервере (он будет основным, активным) выполняем:

drbdsetup /dev/drbd0 primary -o
drbdsetup /dev/drbd2 primary -o
mkfs.ext4 /dev/drbd0
mkfs.ext4 /dev/drbd2
tune2fs -m 0 /dev/drbd0
tune2fs -m 0 /dev/drbd2
/bin/mount -o noatime /dev/drbd0 /var/lib/mysql
/bin/mount -o noatime /dev/drbd2 /srv/www

Переносим необходимые данные на созданные разделы (/var/lib/mysql и /srv/www), дожидаемся завершения синхронизации ресурсов по сети.

Проверить состояние DRBD-ресурсов можно командой:

cat /proc/drbd

На активном сервере результат выполнения команды будет примерно следующим:

version: 8.3.11 (api:88/proto:86-96)
srcversion: F937DCB2E5D83C6CCE4A6C9
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:473023140 nr:7553228 dw:481816448 dr:531058677 al:62274735 bm:15105 lo:5 pe:7 ua:0 ap:11 ep:1 wo:f oos:0

 2: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:831980448 nr:1132592 dw:833113040 dr:1611580617 al:4156518 bm:941 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

На этом первая часть настройки Active/Passive Cluster в Linux завершена, во второй части рассмотрим установку и настройку Pacemaker и Corosync.

tweet Share