В пн, 16/06/2014 в 16:40 +0300, Vladislav V. Prodan пишет:
> 16 июня 2014 г., 16:36 пользователь Nike <[email protected]> написал:
> > Может вам лучше глянуть в сторону кластера?
> >
> > https://wiki.freebsd.org/HAST
> >
> 
> Я полтора года назад пытался юзать HAST и ZFS.
> Но скорость записи была очень печальная.
> А при восстановлении данных при появлении в онлайне второго
> устройства, вся система колом становилась :(
> Если у вас есть свежие данные - поделитесь.
> 
> 

пробовал кластер (( - не понравилось
расскажу как делал 
вопервых добавил 
echo "device carp" >> KERNEL
config KERNEL
make depend all install && reboot
на каждой ноде кластера настроил hast.conf 
на экспорт 3-х блочных устройств

on data0{
<------>listen 192.168.250.30
}
on data1{
<------>listen 192.168.250.31
}

resource ada1 {
    local /dev/ada1
    on data0{
<------>remote 192.168.250.31
    }
    on data1{
<------>remote 192.168.250.30
    }
}
resource ada2 {
    local /dev/ada2
    on data0{
<------>remote 192.168.250.31
    }
    on data1{
<------>remote 192.168.250.30
    }
}
resource ada3 {
    local /dev/ada3
    on data0{
<------>remote 192.168.250.31
    }
    on data1{
<------>remote 192.168.250.30
    }
}

на мастере 
hastctl create ada[1-3]
hastctl role primary ada[1-3]
zpool create data raidz hast/ada1 hast/ada2 hast/ada3

на втором 
hastctl create ada[1-3]
hastctl role secondary ada[1-3]

вроде все прошло гладко - синхронизировались быстро

потом настроил carp на обоих машинах

ifconfig age0 vhid 1 pass ++++++ 192.168.253.9/30 alias
ifconfig age0 vhid 1 advskew 100 pass +++++++ 192.168.253.9/30

и соответственно переключение в /etc/devd.conf на случай падения

notify 0 {
<----->match "system"<><------>"CARP";
<----->match "subsystem"<----->"[0-9]+@[0-9a-z]+";
<----->match "type"<--><------>"(MASTER|BACKUP)";
<----->action "/root/bin/carp.sh $type";
};


и разумеется в /root/bin/carp.sh
 если MASTER 

hastctl role primary ada[1-3]
zpool import data

если BACKUP
zpool export data
hastctl role secondary ada[1-3]

гладко писано в бумаге 

в случае пропадания линка (вытащил езер) - мастер ничего не делает -
саrр переходит в состаяние INIT  и не считает себя обязанным
предупредить devd ((( или я не знаю какой match type в devd.conf писать
- в доке об этом не слова

вторая нода спокойно стала мастером.

вроде все норм.

но вот втыкаю езер - и пока карп дуплился - у меня 2 мастера и
соответстенно split brain

ны тут решение есть нормальное - в devd.conf добавил еще секцию 
реакция на исчезновение линка

notify 100 {
<----->match "system"<><------>"IFNET";
<----->match "subsystem"<----->"age0";
<----->match "type"<--><------>"LINK_DOWN";
<----->action "/root/bin/carp.sh INIT";
};

а в carp.sh  дописал секцию перевода 
zpool export data
hastctl role init ada[1-3]

возможность попасть в ситуацию с split-brain исключена
а вот теперь самое плохое 

zpool export -f data не всегда срабатывает - иногда зависает
причем в логе тишина
смена роли на одном из винтов тоже регулярно зависает 
причем на смене  primary -> secondary 

вобщем вот такая не очень саксесфул стори 





Ответить