URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85849
[ Назад ]

Исходное сообщение
"Heartbeat + DRBD"

Отправлено Dembi , 05-Июл-09 19:37 
Привет Всем!

Есть два сервера:
cl1 – 10.0.1.210
cl3 – 10.0.1.45
Virtual IP – 10.0.1.245
ОС – Debian

Установил DRBD8 + heartbeat 2.1.3-6lenny1

Задача:
1.    Сделать полное резервирование одного раздела жесткого диска на обеих  машинах
2.    Объединить машины в один кластер с одним виртуальным IP

Ниже конфигурационный файл DRBD8, он одинаковый на двух серверах:

[html]
resource r0 {
protocol C;

startup { wfc-timeout 30; degr-wfc-timeout 120; }
disk  { on-io-error detach; }
syncer {
    rate 200M;
    al-extents 257;
  }


on cl1 {
    device     /dev/drbd1;
    disk       /dev/hda9;
    address    10.0.1.210:7788;
    meta-disk  internal;
  }

on cl3 {
    device     /dev/drbd1;
    disk       /dev/hda9;
    address    10.0.1.45:7788;
    meta-disk  internal;
  }

}
[/html]


Ниже конфигурационный файл ha.cf, он одинаковый на серверах, за исключением параметра «ucast eth0 10.0.1.45». На cl1 он имеет IP cl3. На cl3 он имеет IP cl1.

[html]
logfacility local0
logfile /var/log/ha-log
debugfile /var/log/ha-debug
use_logd on
udpport 694
keepalive 1 # 1 second
warntime 5
deadtime 10
auto_failback on
use_logd yes
bcast eth0
node cl1
node cl3
ucast eth0 10.0.1.45
udp eth0
crm off
[/html]

Ниже конфигурационный файл haresources, он одинаковый на двух серверах:
cl1 IPaddr::10.0.1.245/24/eth0/10.0.1.255
cl1 drbddisk::r0 Filesystem::/dev/drbd1::/home

Вопросы:

1, почему при выполнение команды cat /proc/drbd:

cl1:~# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33

1: cs:WFConnection st:Primary/Unknown ds:UpToDate/DUnknown C r---
    ns:0 nr:0 dw:40 dr:849 al:2 bm:2 lo:0 pe:0 ua:0 ap:0
        resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/257 hits:8 misses:2 starving:0 dirty:0 changed:2

я вижу статус только первого сервера «Primary» на cl1 и «Secondary» на cl2. То есть почему если cl1 есть «Primary» а cl2 «Secondary» я не вижу следующего  на cl1:

cs:WFConnection st:Primary/Secondary ds:UpToDate/DUnknown C r---

И следующего на cl2:

cs:StandAlone st:Secondary/ Primary ds:UpToDate/DUnknown   r---

2. Почему не пишется лог в ha-log ?


Содержание

Сообщения в этом обсуждении
"Heartbeat + DRBD"
Отправлено Valentine31 , 05-Июл-09 21:41 
Раздел drbd1 на обоих нодах не синхронизирован, о чем говорит статус WFConnection.

"Heartbeat + DRBD"
Отправлено Dembi , 05-Июл-09 22:30 
>Раздел drbd1 на обоих нодах не синхронизирован, о чем говорит статус WFConnection.
>

Подскажи, пожалуйста, как их синхронизировать ?


"Heartbeat + DRBD"
Отправлено Valentine31 , 06-Июл-09 09:33 
>>Раздел drbd1 на обоих нодах не синхронизирован, о чем говорит статус WFConnection.
>>
>
>Подскажи, пожалуйста, как их синхронизировать ?

Испчерпывающая ин-фа по настройке и администрированиию
http://www.drbd.org/users-guide/


"Heartbeat + DRBD"
Отправлено dembi , 10-Июл-09 12:10 
>>>Раздел drbd1 на обоих нодах не синхронизирован, о чем говорит статус WFConnection.
>>>
>>
>>Подскажи, пожалуйста, как их синхронизировать ?
>
>Испчерпывающая ин-фа по настройке и администрированиию
>http://www.drbd.org/users-guide/

В предыдущей конфигурации у меня возникала ситуация split-brain.
Я внес изменения описывающие разрешения ситуации split-brain в мой конфигурационный файл drbd.conf в раздел net {}. После этого все заработало корректно:

cl1:/etc# drbd-overview
  1:r0  Connected Primary/Secondary UpToDate/UpToDate C r--- /home ext3 1.9G 251M 1.6G 15%

cl3:~# drbd-overview
  1:r0  Connected Secondary/Primary UpToDate/UpToDate C r---

Ниже приведен пример моего конфига:

drbd.conf

global {
        usage-count yes;
}
resource r0 {
protocol C;
syncer {
    rate 40M;
  }
net {    after-sb-0pri discard-younger-primary;
    after-sb-1pri consensus;
    after-sb-2pri call-pri-lost-after-sb;

}
on cl1 {
    device     /dev/drbd1;
    disk       /dev/hda9;
    address    10.0.1.210:7788;
    meta-disk  internal;
  }

on cl3 {
    device     /dev/drbd1;
    disk       /dev/hda9;
    address    10.0.1.45:7788;
    meta-disk  internal;
  }

}

Так же настроил heartbeat. Ниже приведен его конфигурационный файл:

ha.cf
autojoin none
logfacility    none
logfile        /var/log/ha-log

debug 3
debugfile /var/log/ha-debug

# Отправка одного сигнала heartbeat каждую секунду
keepalive 2 # 1 second

# Предупреждение об опаздывающих сигналах heartbeats
warntime 15

deadping 80

# Объявляем узлы отключенными после 10 секунд
deadtime 40

initdead 120

udpport 694

bcast eth0

auto_failback on

# Перечень компонентов кластера (реальных серверов)
node cl1
node cl3

ucast eth0 10.0.1.210
ucast eth0 10.0.1.45

crm off


При ручной миграции сервисов с одного хоста на другой:

cl1:/etc# /usr/lib/heartbeat/hb_standby

все отработано корректно:
Сервисы: Virtual IP и /dev/drbd1 перешли с cl1 перешел к cl3

Но есть проблема

Если я отключаю сетевую карточку у cl3. Virtual IP и /dev/drbd1 переезжают на cl1
Но вот когда я  подымаю сетевую карточку на cl3 у меня появляется Split-Brain, ниже лог:

drbd1: state = {cs:WFReportParams st:Primary/Unknown ds:UpToDate/DUnknown r---}
drbd1: wanted = {cs:WFReportParams st:Secondary/Unknown ds:UpToDate/DUnknown r---}
drbd1: Split-Brain detected, dropping connection!
drbd1: error receiving ReportSate, 1:4!

Я так понимаю нужно колдовать с drbd.conf c разделом net {}. Может кто-то может подсказать исходя из своего опыта какие параметры лучше использовать ????


"Heartbeat + DRBD"
Отправлено Valentine31 , 14-Июл-09 15:01 
>[оверквотинг удален]
>появляется Split-Brain, ниже лог:
>
>drbd1: state = {cs:WFReportParams st:Primary/Unknown ds:UpToDate/DUnknown r---}
>drbd1: wanted = {cs:WFReportParams st:Secondary/Unknown ds:UpToDate/DUnknown r---}
>drbd1: Split-Brain detected, dropping connection!
>drbd1: error receiving ReportSate, 1:4!
>
>Я так понимаю нужно колдовать с drbd.conf c разделом net {}. Может
>кто-то может подсказать исходя из своего опыта какие параметры лучше использовать
>????

я бы net переписал следующим образом
  net {
    after-sb-0pri disconnect;
    after-sb-1pri disconnect;
    after-sb-2pri disconnect;
    rr-conflict disconnect
  }

исходя из своего опыта в случае Split-Brain эту ситуацию лучше решать самосоятельно. т.е.
на сбойной ноде:

drbd secondary resource
drbdam -- --discard-my-data connect resource

и протокол я бы поставил B (если у вас ноды в режиме primary/slave) на отказоустойчивость не сильно повлияет но скорости добавится ощутимо