Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
heartbeat + drbd
 
Вообшм повозился с этими зверюшками, настроил настроил и вот наконецто достроил ... башка уже никак некатит ) вот решил обратится к господам гуру ...
поставлено на Генте
настраивал по этой документации ...
вот конфиги:
drbd.conf   - http://paste2.org/p/126159
ha.cf       - http://paste2.org/p/126160
haresources -
Код
hptux1 IPaddr::192.168.0.70/24/eth0/192.168.0.255
hptux1 drbddisk::drbd0 Filesystem::/dev/drbd0::/backup/mysql::ext3::noatime mysql

authkeys    -
Код
Auth 1
1 crc

Код
cat /etc/fstab | grep drbd
/dev/drbd0      /backup/mysql   ext3      noauto      0 0

на обеих сторонах конфиги одинаковы, настраивал на одном потом через сцп на другой ...
после первой конфигурации ( ище не было рестарта ), все нормально синхронизировалось (drbd) и статусы соответсвенно были, Primary/Secondary - Secondary/Primary
вот после рестарта все началось ...

начал тестить, первый поднимается IP 0.70 эму присвоивается, раздел монитурется ...
hptux1>
Код
eth0:0    Link encap:Ethernet  HWaddr 00:21:5A:23:8A:DA  
          inet addr:192.168.0.70  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4401 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4186 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:596149 (582.1 Kb)  TX bytes:599716 (585.6 Kb)
          Memory:f0180000-f01a0000 


Код
mount | grep drbd
/dev/drbd0 on /backup/mysql type ext3 (rw,noatime)


drbdadm state drbd0 для обеих машин ...
hptux1> Primary/Unknown
hptux2> Secondary/Unknown
drbdadm cstate drbd0
hptux1> StandAlone
hptux2> StandAlone
вот тута уже барда ...

когда отключаю первый то второму ИП присваивается, потом  уже все, раздел не монтируется и соответсвенно мускул не можт стартануть ...

log - http://paste2.org/p/126172
debug - http://paste2.org/p/126174
 
Читал? http://www.netup.ru/articles.php?n=13 У меня heartbeat+drbd крутися года полтора. Кластер на этой связке построен. На котором UTM (биллинг) крутится. Ну и попутно ты ещё конфиг drbd не привёл. Хошь - могу свой рабочий конфиг привести. Твои логи, честно говоря, смотреть лень. Только drbd у меня старый. В новом синтаксис конфига другой. Кстати - перекидывать ресурсы между нодами кластера можно принудительно. Командами -  /usr/lib/heartbeat/hb_standby,  /usr/lib/heartbeat/hb_takeover Мануалы посмотри на эти команды.
Изменено: SOLDIER - 07.01.2009 20:08:27
 
Кстати. Там есть ещё конфиг ha.cf. Он настроен? Вот чего у меня в нём (коммменты убраны):
Цитата

logfile /var/log/ha-log
logfacility     local0
keepalive 1
deadtime 10
warntime 2
initdead 120
ucast eth1 192.168.0.1
auto_failback on
node    cluster1 cluster2
ping 10.10.10.1
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
 
Схема, для этого конфига:
1. На каждой ноде 2 сетевые. Одна - IP 10.10.10.20 (на одной ноде) и 10.10.10.21 (на второй). 2 сетевые соединены между собой гиговым кросс-овер кабелем и имеют адреса 192.168.0.1, 0.2.
2. Общий шлюз (см. выше) - 10.10.10.1. Он же используется в качестве "пингера".
3. Синхронизация drbd делается через гиговый линк.
4. Общий интерфейс - eth0:0 - он и поднимается на основной ноде. IP - 10.10.10.22
Состояние drbd можно проверять ещё /etc/init.d/drbd status
Изменено: SOLDIER - 07.01.2009 20:17:10
 
Цитата
SOLDIER пишет:
Ну и попутно ты ещё конфиг drbd не привёл.
да привел - http://paste2.org/p/126159

Код
global {
        usage-count no;
}
common {
}
resource "drbd0" {
        protocol C;
        handlers {
                pri-on-incon-degr "echo 'DRBD: primary requested but inconsistent!' | wall; /etc/init.d/heartbeat stop"; #"halt -f";
                pri-lost-after-sb "echo 'DRBD: primary requested but lost!' | wall; /etc/init.d/heartbeat stop"; #"halt -f";
        }
        startup {
                degr-wfc-timeout 120;    # 2 minutes.
        }
        syncer {
                rate 100M;
                al-extents 257;
        }
        net {
        }
        disk {
                on-io-error   pass_on;
                fencing dont-care;
        }
        on hptux1 {
                device          /dev/drbd0;
                disk            /dev/hda4;
                address         192.168.0.68:7788;
                meta-disk       internal;
        }
        on hptux2 {
                device          /dev/drbd0;
                disk            /dev/hda4;
                address         192.168.0.69:7788;
                meta-disk       internal;
        }

}

Цитата
SOLDIER пишет:
Кстати - перекидывать ресурсы между нодами кластера можно принудительно
эт на всякий пажарный, у меня проблемка в том что при загрузке системы вся эта барда ...
с heartbeat-ом вроде все норма, тута drbd барахлит ...
 
Цитата
SOLDIER пишет:
Читал? www.netup.ru/articles.php?n=13
токо что ...
команду "drbdadm -- --human primary all" не понял ...

Код
drbdadm -- --human primary all
drbdsetup: unrecognized option '--human'
/dev/drbd0: Error code 20 unknown.
You should updated the drbd userland tools.
Command 'drbdsetup /dev/drbd0 primary --human' terminated with exit code 20
drbdsetup exited with code 20
 
вот нашел одну хорошую ссылку, по этому настроил и получил
http://www.minigeek.org/index.php/2008/01/25/drbd-split-brain-problems
Prymary/Secondary - Secondary/Prymary
токо шас с нулю идет синхронизаиця дисков, вот после рестарта не знаю что получится ... )
 
Чё-то опять хвалёный Битрикс глючит.
 
Видать, у тебя более новая версия drbd. Я писал выше - эти умники в 8-й версии синтаксис очень сильно поменяли. Я на одной ноде обновил сдуру. Трахался минут 40, чтобы поднять. Потом плюнул и откатился на старую версию. Надо будет в стороне где-нить прогнать. А вообще эта ситуация описана для ситуации "сплит-брейн" - когда обе ноды считают себя главными и начинается маппет-шоу. У меня, когда начинает дурить drbd (было как-то несколько раз) давал другую команду - drbdadm -- --do-what-I-say primary all
 
Цитата
SOLDIER пишет:
Чё-то опять хвалёный Битрикс глючит.
а я думал что эт токо у меня )))

вот вчера посмотрел уже 8.3.0 вышла, навсякий скачанул, в ченджлогах посмотрел, подумал можт есть кокой то баг с этим "мозгом", но не было ...

вот что нашелся на форуме  ...

Цитата
If you have different data across each node then you may have a split brain. To fix this run the following command. Note this assumes that testcluster1 is more up to date than testcluseter2. If the opposite is true reverse the commands for each.

testcluster1: drbdadm connect all
testcluster2: drbdadm -- --discard-my-data connect all

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

но эт для 8.3.0 версии, так как команду state заменили на role
Код
#!/bin/bash
##########################################
# split-brain detection script for drbd
##########################################

# System enviroments
PATH=/usr/bin:/bin:/usr/sbin:/sbin

NODE1="hptux1"
NODE2="hptux2"

ROLE_STATUS=$(drbdadm role drbd0)

NORM_STATUS="Primary/Secondary"

if [ "${HOSTNAME}" == "${NODE1}" ]; then
   PING_NODE="${NODE2}"
else
   PING_NODE="${NODE1}"
fi

if [ "${ROLE_STATUS}" != "${NORM_STATUS}" ]; then
   echo ${ROLE_STATUS}
   ping -c 4 -W 4 ${PING_NODE} >/dev/null
   if [ "$?" -eq "0" ]; then
      drbdadm primary all
      drbdadm connect all
      ssh root@${PING_NODE} '/sbin/drbdadm -- --discard-my-data connect all'
   else
      echo "${PING_NODE} is unreachable ..."
   fi
fi
Изменено: °°°Trojan°°°™ - 09.01.2009 18:03:29
 
Trojan, мне почему-то кажется, что ты написал скрипт, который выполняет задачи heartbeat.  ;)
 
Цитата
SOLDIER пишет:
Trojan, мне почему-то кажется, что ты написал скрипт, который выполняет задачи heartbeat. Шутливо
интересно эт как ?

я это в крон добавил ...
 
Да так - что это задача heartbeat - отслеживать доступность с обоих нод некоего внешнего ресурса (у меня, например, кошки, к которой подключены обе ноды), отслеживать пинг через общий линк (через который, собственно, drbd и синхронизирует разделы) И в случае недоступности общего ресурса с основной ноды перекинуть все ресурсы (и службы, и поднять общий IP) на запасную ноду. При этом drbd перекидывается из состояние Primary/Secondary в Secondary/Primary АВТОМАТИЧЕСКИ!  :) По крайней мере - мои эксперименты с кластером это подтвердили.
Изменено: SOLDIER - 09.01.2009 20:04:22
 
Цитата
SOLDIER
ну еслиб heartbeat делал такое, то я бы не мучался тута )

пример когда приходит в состояние Secondary/Unknown или Primary/Unknown.
"auto_failback OFF"
Включаем первый нод, потом второй, все нормально работает, статусы Primary/Secondary и наоборот ...
Отключаем первый, второй все берет на себя (status:Pryimary/Unknown), включаем первый и опля, получаем статус ...
Нод1: Secondary/Unknown
Нод2: Primary/Unknown.
в этом случае heartbeat нифига не берет на себя ...
незнаю можт что-то криво настроил ...
 
Хм. Буду на неделе кластер мучать (если руки дойдут) - проверю.
 
напиши о результатах )
 
Цитата
SOLDIER пишет:
Да так - что это задача heartbeat - отслеживать доступность с обоих нод некоего внешнего ресурса (у меня, например, кошки, к которой подключены обе ноды), отслеживать пинг через общий линк (через который, собственно, drbd и синхронизирует разделы) И в случае недоступности общего ресурса с основной ноды перекинуть все ресурсы (и службы, и поднять общий IP) на запасную ноду. При этом drbd перекидывается из состояние Primary/Secondary в Secondary/Primary АВТОМАТИЧЕСКИ!

При разрыве соединения heartbeat только запускает один из скриптов прописанных в конфиге. То что называется АВТОМАТИЧЕСКИ делается либо за счет ручками написанного скрипта либо за счет Xen в котором четко прописан тип ресурса не phy а drbd.

Подробнее можно почитать здесь:
http://xgu.ru/wiki/xen/drbd
http://www.alsigned.ru/?p=490
Страницы: 1
Читают тему