++ ВведениеДанная статья описывает механизм развертывания файлового сервера на предварительно поднятом кластере высокой готовности (High-Aviability).
Предполагается, что все кластерные службы, а так же службы обеспечения высокой готовности настроены и запущены. В моем случае, кластер состоит из 2-х узлов.++ Собственно ПО
В данном случае использован следующий набор ПО для High-Aviability:
Операционная система - CentOS 5.4
Кластерное ПО - все от RedHat (группы пакетов "Cluster" и "Cluster Storage")
Файловая система для общего хранилища - GFS2.
Репликация дисков DRBD8 (замечу, все узлы в режиме "primary")
Механизм "сердцебиения" - опционально(далее поясню, почему) - HeartBeat.Для файлсервера: Samba 3.3 и CTDB 1.0.82
++ Установка, настройка и запускТо, что описано ниже, делаем на всех узлах кластера.
Для начала собираем CTDB из исходных текстов
cd ctdb
./autogen.sh
./configure
make
make install
После этого необходимо создать и отредактировать основные конфигурационные файлы, служащие для запуска и работы CTDB.1. Создать файл /etc/sysconfig/ctdb.sysconfig:
CTDB_RECOVERY_LOCK="/synchronized/lock"
CTDB_PUBLIC_INTERFACE=eth0
CTDB_PUBLIC_ADDRESSES=/usr/local/etc/ctdb/public_addresses
CTDB_MANAGES_SAMBA=yes
CTDB_INIT_STYLE=redhat
CTDB_NODES=/usr/local/etc/ctdb/nodes
CTDB_LOGFILE=/var/log/log.ctdbВ данном случае, этот файл не использует все возможные параметры, а лишь те, которые необходимы в данном случае:
CTDB_RECOVERY_LOCK="/synchronized/lock" - этот параметр описывает месторасположение файла, в котором хранится записи о том, какой из узлов является мастером восстановления. Файл lock должен располагаться на общем хранилище и быть доступным всем нодам,использующим CTDB.
CTDB_PUBLIC_INTERFACE=eth0 - этот параметр описывает сетевой интерфейс, на котором в данный момент времени поднято сетевое соединение.
CTDB_PUBLIC_ADDRESSES=/usr/local/etc/ctdb/public_addresses - этот параметр определяет файл, содержащий список IP-адресов, по которым клиенты, использующие Samba для доступа к файловым ресурсам, посылают запросы на соединение. Распределением этих адресов по нодам занимается CTDB.
CTDB_MANAGES_SAMBA=yes - этот параметр определяет, будет ли CTDB управлять запуском Samba-сервера вместо стандартных сценариев управления, которые реализует операционная система.
CTDB_INIT_STYLE=redhat - этот параметр описывает сценарии запуска служб для различных операционных систем.
CTDB_NODES=/usr/local/etc/ctdb/nodes - этот параметр определяет файл, в котором хранится информация об узлах кластера.
CTDB_LOGFILE=/var/log/log.ctdb - этот параметр определяет лог- файл, использующийся службой CTDB.
2. Создать файл /usr/local/etc/ctdb/nodes:
192.168.1.1
192.168.1.2Здесь IP-адрес 192.168.1.1 принадлежит первой ноде, IP-адрес 192.168.1.2 - второй.
3. Создать файл /usr/local/etc/ctdb/public_addresses:
192.168.0.200/24 eth0
Это IP-адрес, за которым в DNS сервере закреплено доменное имя Samba-сервера.
Далее собираем самбуcd samba-3.3.8/source
./autogen.sh
./configure --with-ctdb=/usr/src/ctdb --with-cluster-support \
--enable-pie=no --with-shared-modules=idmap_tdb2
make
make install/usr/src/ctdb - каталог с исходными текстами CTDB, установленными ранее.
Правим smb.conf
Эти два параметра обязательно надо добавить в global. Остальное, по Вашим запросам.
clustering = Yes
idmap backend = tdb++ Запуск Samba
Сначала запускаем CTDB на всех узлах кластера.
/usr/local/sbin/ctdbd
Проверяем, запустилось ли.
ctdb status
Если все конфигурационные файлы корректны,будет такое:
Number of nodes:2
pnn:0 192.168.1.1 OK (THIS NODE)
pnn:1 192.168.1.2 OK
Generation:1087563258
Size:2
hash:0 lmaster:0
hash:1 lmaster:1
Recovery mode:NORMAL (0)
Recovery master:0Проверяем для начала параметры smb.conf
/usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba/etc/smb.conf
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONEЗапускаем самбу:
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/smbd -DДалее, все как обычно, только не забывайте, что это не кластер, и все действия должны быть выполнены на всех узлах.
++ Тестирование
Для сравнения производительности Samba-сервера с использованием CTDB и без использования CTDB, а также возможностей файловой системы (общего хранилища) используется ряд тестовых модулей.
Скорость чтения данных
Чтение(MB/sec)
Клиент
1
2
3
4
Samba без CTDB
2,15
2,16
2,13
2,09
Samba + CTDB
24,73
23,42
23,26
23,15Сервер был доступен по кналу 1 Гб/с, поэтому суммарно использовано около 75% пропускной способности.
Скорость записи идентична, не намного уступает, определяется скорее возможностями файловой системы.
Замечу, что с ростом узлов (до 8) скорость доступа к данным (скорость чтения/записи) стремительно растет.
++ ЗаключениеПредложенный вариант кластеризации Samba позволяет достичь некоторых результатов:
1. Высокая надежность и отказоустойчивость (читайте про CTDB). Потеря данных исключена.
2. Показатели производительности по сравнению с 1-серверными системами отличные.Конфигурация годится для организации бюджетного кластерного файлового сервера, и при грамотной организации каналов связи (между узлами, клиент- сервер) обеспечит отличный уровень производительности.
++ Список источников
* http://ctdb.samba.org
* http://wiki.samba.org/index.php/Clustered_Samba
URL:
Обсуждается: http://www.opennet.me/tips/info/2297.shtml
на freebsd я так понимаю оно никак не работает
Предлагаю "High-Aviability" заменить более грамотным "High-Availability", а его перевод не "высокой готовности",а "высокой доступности" или "отказоустойчивости".
А что, автор man rpmbuild не асилил?
Ну теперь поясняй те, как ваша логика связала HA, Samba, CTDB и RPM, а тем более rpmbuild ?
Неприятно удивил способ установки ПО. В комментариях даже был более острый пост, его стерли.Все-таки система получается необновляемой. Неужели действительно тяжело собрать через rpmbuild нативно, и написать в спеке те опции сборки, что нравятся?
Автору большое спасибо, было интересно, хотя стоило бы написать больше подробностей про Cluster Suite и drbd.
>Неприятно удивил способ установки ПО.
>Все-таки система получается необновляемой.Очень чудно обновляется ...
cvs up || svn up || git pull || make clean || make install
>>Неприятно удивил способ установки ПО.
>>Все-таки система получается необновляемой.
>
>Очень чудно обновляется ...
>
>cvs up || svn up || git pull || make clean ||
>make installА кто будет следить за _версиями_ (не коммитов, а ПО), за необходимостью обновления, и т д?
Может быть, еще парсилку комментариев напишем, и внесем в скрипт, который будет по ssh в цикле обходить машины, проверять, и т д?Чем это лучше LFS? Зачем вообще тогда брать какой-то дистрибутив?
Альтернатива, не изобретение велосипедов. Например, для RH платформы, использованной автором(CentOS, RHEL, Fedora и все остальные) есть очень и очень удобный инструмент для управления ПО:
http://www.redhat.com/spacewalk/faq.html
http://rhn.redhat.com/help/about.pxt
http://www.redhat.com/docs/manuals/satellite/(если закрыть глаза на Жабу и Оракл, каналы с ПО просто потрясающе удобно!)
У SLE (ZenWorks) и у Ubuntu (LaunchPad) есть аналогичные решения (я с ними не работала, и удобность, плюсы и минусы прокомментировать не могу)
Даже чистые rpm(что стоит только rpm -V), dpkg, yum, up2date, zypper, apt/aptitude, если не боятся ими пользоваться, умеют гораздо больше, и являются инструментами, созданными специально для этой цели.
В конце концов, есть порты в той же Gentoo и FreeBSD, хотите все собирать, но ленитесь править спек rpm-а (а поправить строчку с configure в секции %build в vim можно парой-тройкой команд :) ), мешает религия? Есть системы, которые ориентированы на source-бэйсед подход (что и там, особенно во фре, не мешает пользоваться бинарными пакетами)Стоит еще представить что будет, когда такая система передается другому администратору или закачику, с этой горой костылей и скриптов, парсящих ревизии и матюки в комментариях коммитеров :)
>>>Неприятно удивил способ установки ПО.
>>>Все-таки система получается необновляемой.
>>
>>Очень чудно обновляется ...
>>
>>cvs up || svn up || git pull || make clean ||
>>make install
>
>А кто будет следить за версиямиА зачем? Работает - нетрож, глючит проверяй.
Вон блин, в Дебиане, grub самообновился до grub2, а я его с утра и не узнал...
>>А кто будет следить за версиями
>А зачем? Работает - нетрож, глючит проверяй.Записываем: за версиями будет следить друхх павлина Глючит-Проверяй! |-)
Причём если оно вдруг собралось и проинсталировалось с "какими есть" зависимостями, но - вдруг! - с этими же зависимостями не запустилось или, например, не работает "где-то там, иногда", то делать он это будет при упавшем-типа сервере. Но, у него всё получится -- мы в него верим! :/
>>>А кто будет следить за версиями
>>А зачем? Работает - нетрож, глючит проверяй.
>
>Записываем: за версиями будет следить друхх павлина Глючит-Проверяй! |-)
>
>Причём если оно вдруг собралось и проинсталировалось с "какими есть" зависимостями, но
>- вдруг! - с этими же зависимостями не запустилось или, например,
>не работает "где-то там, иногда", то делать он это будет при
>упавшем-типа сервере. Но, у него всё получится -- мы в него
>верим! :/"где-то туда, иногда" надо переносить не бинарники, а строку для кофигуре
Вот у меня каталог /usr/src/, в котором работают с исходниками, занимает 20Mb.
Угадай чего... Прально, махонькие скрипты ...
#!/bin/bashLOGIN="cvs -d:pserver:anonymous@hsqldb.cvs.sourceforge.net:/cvsroot/hsqldb login"
SOURCE="cvs -z3 -d:pserver:anonymous@hsqldb.cvs.sourceforge.net:/cvsroot/hsqldb co"if [ -d .svn ] && svn up || \
if [ -d .cvs ] && cvs up || \
if [ -d .git ] && git pull && exit 0;echo LOGIN: <Enter>
echo PASS: anonymous
sleep 10;($LOGIN)
($SOURCE)
if [ $? -eq 0 ]
then
CFLAGS="-g0 -O3 -mtune=generic -ffast-math -ffoo-bar=z"
./configure --prefix=/usr --libdir=/usr/lib64 \
--sysconfig=/etc --...
--with-... \
--without-... \
--disable-... \
--enable-... ;
make && make check && make install;
И Я ВСЕГДА ЗНАЮ ЧТО И КАК РАБОТАЕТ, ЧТО и ГДЕ ЛЕЖИТ,
НЕ НОЮ НА ФОРУМАХ "- ЧЁ У МНЯ НИХ...Я НИКАМПИЛИЦЦА".
А САМАЯ СТРАШНАЯ БАГА - ЭТО ОТСУТСТВИЕ ИСХОДНИКОВ! ЧЕГО И ВСЕМ ЖЕЛАЮ!!!ПРОСТИТЕ МЕНЯ ЛЮДИ С:-)
>А САМАЯ СТРАШНАЯ БАГА - ЭТО ОТСУТСТВИЕ ИСХОДНИКОВ! ЧЕГО И ВСЕМ ЖЕЛАЮ!!!
>ПРОСТИТЕ МЕНЯ ЛЮДИ С:-)И Истина открылась непросвещённым! И возрадовались они. И поверили в Путь Бээсдэ на ядре Линуукс. И сказали они - веди нас, Павлин, в землю Генту обетованную.
:)))))
>"где-то туда, иногда" надо переносить не бинарники, а строку для кофигуреНу, я тоже те спеки, что правила, в Subversion храню :)
И все-таки Вы не правы: путь LFS, это, имхо, не должно быть путем большинства :)
Все знать невозможно, и человечество не зря придумало институт разделения труда.А бездумно делать apt-get upgrade тоже не нужно, стоит почитать, что там и зачем пришло в апдейтах, прежде чем обновлять кучу "боевых" машин
>[оверквотинг удален]
>
>Ну, я тоже те спеки, что правила, в Subversion храню :)
>
>И все-таки Вы не правы: путь LFS, это, имхо, не должно быть
>путем большинства :)
>Все знать невозможно, и человечество не зря придумало институт разделения труда.
>
>А бездумно делать apt-get upgrade тоже не нужно, стоит почитать, что там
>и зачем пришло в апдейтах, прежде чем обновлять кучу "боевых" машин
># zypper up
Загрузка данных о репозиториях...
Чтение установленных пакетов...Будут обновлены следующие пакеты:
binutils binutils-devel binutils-gold cpp33 cpp44 cpp45 gcc33 gcc44 gcc44-32bit
gcc44-c++ gcc44-info gcc44-locale gcc45 gcc45-c++ gcc45-info gcc45-locale gdb
gstreamer-0_10-plugins-good gstreamer-0_10-plugins-good-lang libcloog0 libffi45
libgcc45 libgcc45-32bit libgcc45-debuginfo libgomp45 libstdc++33 libstdc++44-devel
libstdc++45 libstdc++45-32bit libstdc++45-32bit-debuginfo libstdc++45-debuginfo
libstdc++45-devel libstdc++45-devel-32bit libstdc++45-doc mjpegtools MPlayer36 пакетов для обновления.
Полный размер загрузки: 75,1 MiB. После этой операции будет использовано дополнительно 496,0 KiB.
Продолжить? [y/n/?] (y):
Казалось бы, что может быть нового в gcc-3.3, а вот оно ...
gstreamer пытаюсь удалить уже раз пятый...
Нет, да какая нибудь хрень за собой его притащит...На пакеты с окончанием -32bit и -doc ваще табу стоит, как видишь всё равно просачиваются..
На deb дистрах так не попляшешь, там либо Гном со всем добром, типа 30 пакетов с именем evolution-*, NetworkManager и т.п.,
либо "пашел нафиг с новым годом"apt-get remove evolution-server (как-то так, забыл уже)
Будут удалены .... gnome-core gnome-base ...
(аху...ть) =-oПо этому, SuSE самая конфигурируемая из всех не компилируемых дистров!!! =)
Ах да, чуть не забыл...После перевоза всего добра, точнее дисков на которых находятся /usr, /var, /media
на BTRFS, SuSE стала грузится 14 сек.
chkconfig --list | grep :onacpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off
alsasound 0:off 1:off 2:on 3:off 4:off 5:on 6:off
apcupsd 0:off 1:on 2:on 3:on 4:off 5:on 6:off
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
dbus 0:off 1:off 2:on 3:on 4:off 5:on 6:off
earlysyslog 0:off 1:off 2:on 3:on 4:off 5:on 6:off
earlyxdm 0:off 1:off 2:off 3:off 4:off 5:on 6:off
fbset 0:off 1:on 2:on 3:on 4:off 5:on 6:off
haldaemon 0:off 1:off 2:on 3:on 4:off 5:on 6:off
irq_balancer 0:off 1:off 2:on 3:on 4:off 5:on 6:off
kbd 0:off 1:on 2:on 3:on 4:off 5:on 6:off S:on
mysql 0:off 1:off 2:off 3:on 4:off 5:on 6:off
lm_sensors 0:off 1:off 2:on 3:on 4:off 5:on 6:off
network 0:off 1:off 2:on 3:on 4:off 5:on 6:off
network-remotefs 0:off 1:off 2:on 3:on 4:off 5:on 6:off
nmb 0:off 1:off 2:off 3:on 4:off 5:on 6:off
ntp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
random 0:off 1:off 2:on 3:on 4:off 5:on 6:off
smb 0:off 1:off 2:off 3:on 4:off 5:on 6:off
splash_early 0:off 1:off 2:on 3:on 4:off 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:off 5:on 6:off
xdm 0:off 1:off 2:off 3:off 4:off 5:on 6:off
Т.е. Samba, NTP, MySQL, KDE4 , ну всякая системная шушара...
> Далее собираем самбу
> cd samba-3.3.8/source
> ./autogen.sh
> ./configure --with-ctdb=/usr/src/ctdb --with-cluster-support \
> --enable-pie=no --with-shared-modules=idmap_tdb2
> make
> make installВместо этого выполняем
# cd /tmp
# wget http://samba.org/samba/ftp/stable/samba-3.4.5.tar.gz
# tar zxvf samba-3.4.5.tar.gz
# cd samba-3.4.5/packaging/RHEL
# sh makerpms.shЖдем пока собирутся пакеты
# cd /usr/src/redhat/RPMS/i386/
# rpm -Uvh samba-*
>[оверквотинг удален]
>> make
>> make install
>
>Вместо этого выполняем
>
># cd /tmp
># wget http://samba.org/samba/ftp/stable/samba-3.4.5.tar.gz
># tar zxvf samba-3.4.5.tar.gz
># cd samba-3.4.5/packaging/RHEL
># sh makerpms.shsh: makerpms.sh: No such file or directory
>Чтение(MB/sec)
>Клиент
>1
>2
>3
>48 * 4 = 32 Мбит - это скорость в хреновой сети на хабах, с сетевухами Realtek 8139
>Samba без CTDB
>2,15
>2,16
>2,13
>2,09см. выше
>Samba + CTDB
>24,73
>23,42
>23,26
>23,15
> Сервер был доступен по кналу 1 Гб/с,
>поэтому суммарно использовано около 75% пропускной способности.А по-моему 19.2% пропускной способности.
24,73 * 8 бит = 192 Mbit в сек.Господа, у Вас проблемы с сетью.
> Скорость записи идентична, не намного уступает, определяется
> скорее возможностями файловой системы.Ага... но только после 400 Mb/sec, и для FC SAS II
2pavlinux:
Вы не так поняли таблицу результатов:
>Клиент
>1
>2
>3
>4- это просто номера клиентов, которые одновременно используют сервер.
>24,73
>23,42
>23,26
>23,15суммарно получаем скорость ~92 мега байта/с
канал дает 1 гига бит/с , т.е. 128 мегабайт/с.
отсюда получаем 92/128 = 71 - 72% использования пропускной способности канала.
это линейное чтение?результаты dbench в студию!
желательно показать зависимость от количества нод.
забыл сказать - виндовые клиенты обычно и так больше 15-25МБ на нос не дают :-)
посему приведенный "бенчмарк" ни о чем не говорит
70 мб/сек на гигабите делает как винда так и бубунта подрубленные к виндовой шаре. Так что 15-25 - это как бы не очень соотносится с реальностью.
не у всех еще 2008 и 7-ка
не верно.
правильно так - не у всех ещё бубунта и бубунта.
>2pavlinux:
>Вы не так поняли таблицу результатов:А..., так что ля?
Ну я решил внести и свои пять копеек, правда они автору ох как не понравятся.
Вообще из заголовка следует что есть о чем новом почитать и узнать много нового. Но как-то странно я по тексту статьи так и не понял про что идет речь. Я конечно знаю что такое samba и даже знаю что такое кластер высокой готовности, и даже знаю что такое drbd, и heartbeat (кстати после его упоминания я что-то не нашел что про него еще что то дополнительно написано). Но я так и не понял что такое CTDB. Опять же я не понял почему используется именно то ПО которое указано в начале статьи. С чем связан их выбор? Почему использовался drbd если у Вас используется GFS, почему не стали использовать GNBD из поставки Red Hat? С чем связано использование DRBD именно в режиме master/master? Ну и самое главное для каких целей поднималась данная конфигурация?
Про то как устанавливается ПО в дистрибутиве который имеет мощнейшие средства для управления/установки/удаления/сборки и т.п. я говорить не приходится.
Я советую автору все таки статью переделать полностью. Хотя бы все то что указано в первом абзаце. Ну и тесты я думаю здесь если и нужно проводить то уже никак не копированием файлов.
>Но я так и не понял что такое CTDB.http://ctdb.samba.org/
особенно это:
- CTDB is the core component that provides pCIFS ("parallel CIFS") with Samba3/4.
- CTDB provides HA features such as node monitoring, node failover, and IP takeover.
>Ну и тесты я думаю здесь если и нужно проводить то уже никак не копированием файлов.а чем? и чем не устраивает?
зы:
если есть что добавить к статье - ю а велком.
блин, этож не кандидатская защищается, где любой может резко раскритиковать.
с чего вообще взяли, что он должен объяснять, что такое CTDB?
Предполагается, что все кластерные службы, а так же службы обеспечения высокой готовности настроены и запущены. В моем случае, кластер состоит из 2-х узлов.++ Собственно ПО
В данном случае использован следующий набор ПО для High-Aviability:
Операционная система - CentOS 5.4
Кластерное ПО - все от RedHat (группы пакетов "Cluster" и "Cluster Storage")
Файловая система для общего хранилища - GFS2.
Репликация дисков DRBD8 (замечу, все узлы в режиме "primary")
Механизм "сердцебиения" - опционально(далее поясню, почему) - HeartBeat.автор, не могли бы вы перечислить вообще софт используемый для этого, а то из вашего текста выходит - что заведется это на любом дистре, стоит только там поставить самбу и ctdb.
пока же совершенно очевидно, что вы увидели в man smb.conf опции про clustering и решили об этом всем рассказать
Весь софт я описал. Больше ничего не использовал.
я не автор. а автор итак уже поделился своей историей_успеха.
собственно я предположил, что от него требовать что-то ещё, с разжёвыванием, на мой взгляд глупо (и нагло). спросить/уточнить/добавить - наверное приветствуется. я не прав?
всё ПО перечислено. а для остального используется гугль и википедиа.
>а то из вашего текста выходит - что заведется это на любом дистре, стоит только там поставить самбу и ctdb.заведётся. и не обязательно с именно таким ПО. и в таком количестве.
просто он описал именно свою конфигурацию.
зы:
надеюсь у автора местные аналитеги не отбили желание писать дальше.
а самому подрочиться очень тяжело, в качестве обзора статья хороша , только очень много всяких приложений проще на HA и drbd виртуализацию накрутить, а в случае в rhel + drbd + GFS2 ha-кластер средствами RHEL собрать , ни к чему так усложнять все.
Подправил статью.
Результаты представил как есть, зависимость от колличества нод посмотрите у IBM-вской системы SoFS.
Спасибо за статью - не знал про CTDB и обходился классической схемой с "бекапной" нодой. Все вполне понятно описано, а про rpmbuild и подобное - не слушайте эту ерунду, proof of concept тут есть, а уж статей по репозиториям для RHEL/CENTOS/Debian etc., и так хватает, кому надо красиво - сделает spec файлы.
> кому надо красиво - сделает spec файлыа ниче что spec файл уже есть в исходниках, видать разработчики самбы для прикола его туда положили :)
> А зачем? Работает - нетрож, глючит проверяй.
ЖЖЕШЬ!!!
> с чего вообще взяли, что он должен объяснять, что такое CTDB?
а какой тогда глубокий смысл в статье?
> Samba использует легковесную базу данных (TDB) для приведения соответствия Windows SID к Unix UID/GID
а про ldap ты ничего не слышал?
> Samba использует легковесную базу данных (TDB) для приведения соответствия Windows SID к Unix UID/GID
> а про ldap ты ничего не слышал?ldap используется для хранения базы данных паролей пользователей, но никак не блокировок файловой системы и данных об открытых сессиях.
TDB и ldap используются для абсолютно разных целей, ваш вопрос неактуален.
Отлично!
Теперь уже более менее понятно, мне хоть это и не надо настраивать, но прочитав просто вступление и описание сервисов я запомнил что и для чего нужен и в дальнейшем при необходимости мне уже будет проще найти.
Но только остались вопросы по поводу heartbeat.
Так он нужен или нет? И как организовано хранение данных предоставляемых службой samba?
Поймите правильно, я не придираюсь к статье, а просто хочу указать на те нюансы которые надо осветить, потому что сейчас статья находится просто в непонятном состоянии. Она сейчас ни для новичка ни для уже подготовленного специалиста.
Было бы неплохо описать как хранятся данные, опять же по каким причинам используется GFS2 и DRBD? Почему сначала нужен heartbeat потом не нужен? Мне как уже не новичку и так все понятно, и даже что не понятно я или прочту или додумаю сам, а вот новичку (кому в принципе довольно часто бывают интересны такие вещи и у них есть время на эксперименты такого рода) может быть очень сложно понять логику статьи и тем более сделать аналогичное.
>[оверквотинг удален]
>те нюансы которые надо осветить, потому что сейчас статья находится просто
>в непонятном состоянии. Она сейчас ни для новичка ни для уже
>подготовленного специалиста.
>Было бы неплохо описать как хранятся данные, опять же по каким причинам
>используется GFS2 и DRBD? Почему сначала нужен heartbeat потом не нужен?
>Мне как уже не новичку и так все понятно, и даже
>что не понятно я или прочту или додумаю сам, а вот
>новичку (кому в принципе довольно часто бывают интересны такие вещи и
>у них есть время на эксперименты такого рода) может быть очень
>сложно понять логику статьи и тем более сделать аналогичное.Хорошая критика еще никому не навредила :)
Доработаю статью.