Введение Однажды мне поставили задачу.
мол один сервер - это хорошо.
но с учетом роста посетителей неплохо было бы увеличить производительность на выходе и для этого будет куплен еще 1 сервер.
еще один сервер - это хорошо, подумал я.
только что с ним делать?? Пообщавшись с программистом и примерно поняв, чего он хочет. А именно одновременная доставка контента и что-то вроде нфс или шаров.
но тогда были бы накладные расходы, потому что данные пересылались по сети и диск одного сервера был бы загружен, поэтому необходимо было, чтобы данные одновременно хранились на обоих серверах и реплицировались друг на друга.
Поискав в Гугле что-нибудь на эту тему, я нашел информацию о кластерной fs, и мне подошли gfs2 и обнаруженный позже ocfs2, но проблема была в том, что обычно использовалось выделенное файловое хранилище и ноды его уже смонтировали.
что для меня было неприемлемо, и тогда, задав вопросы людям на конференции ([email protected], благо там были люди, работающие с кластерами и другими забавными вещами), я пришел к дрбд Исходные данные 1 боевой сервер 70 гигабайт информации, на обычном разделе reiserfs 1Тб 2 Новый сервер с диском 2ТБ, в lvm выделен раздел равный разделу на первом сервере, + безопасная зона, с которой будет работать сайт, перенесённый по rsync с первого сервера.
Дрбд
Что это такое? зайдя на офф сайт drbd.org После просмотра этой картинки сразу стало понятно, что это то, что мне нужно.
т.е.
это по сути сетевой рейд-1 репликация есть, но drbd только создает устройства и сверху нужна кластерная фс, иначе будет работать совсем странно.
Итак, устанавливаем drbd 1. Сеть между узлами должна работать 2. Для удобства желательно прописать алиасы в /etc/host 3. Размеры дисков должны совпадать, но так как у меня на втором компьютере было существенно больше места 2ТБ, а на первом всего 1ТБ, я с помощью lvm выделил кусок, примерно равный пространству на первом сервере, а остальное использовал для запуска сайт во время работы с дисками.
примерно равный кусок, потому что при создании устройства drbd он автоматически стал равен размеру меньшего из двух.
это такой приятный бонус.
4. Ядро должно быть включено Драйверы устройств ---> - Коннектор - единое пользовательское пространство <-> компоновщик пространства ядра Криптографический API ---> — Менеджер криптографических алгоритмов 5. Установите drbd на оба узла.
#emerge drbd
6. Отредактируйте конфиг /etc/drbd.conf.
это должно выглядеть примерно так global { usage-count yes; }
common { syncer { rate 100M; } }
resource drbd0 {
protocol C;
startup {
wfc-timeout 20;
degr-wfc-timeout 10;
# become-primary-on both; # Enable this *after* initial testing
}
net {
cram-hmac-alg sha1;
shared-secret "megaSeCrEt";
allow-two-primaries;
ping-timeout 20;
}
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.0.1:7789;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/mapper/vg-home;
address 192.168.0.2:7789;
meta-disk internal;
}
disk {
fencing resource-and-stonith;
no-disk-flushes;
no-md-flushes;
}
handlers {
outdate-peer "/sbin/obliterate"; # We'll get back to this.
}
для более точного и полного описания man drbd.conf :)
7. На обоих узлах введите
# modprobe drbd
# drbdadm create-md drbd0
# drbdadm прикрепить drbd0
# drbdadm подключаем drbd0
8. Затем на втором узле (так как рядом есть сайт и его нужно будет загрузить в новый раздел)
#drbdadm — --overwrite-data-of-peer Primary drbd0
и перезапустить
#/etc/init.d/drbd перезапуск
перезагрузка нужна, чтобы сервис нормально запустился и взял настройки из конфига, так как по умолчанию скорость синхронизации довольно низкая.
9. Синхронизацию можно наблюдать так
#смотреть кота /proc/drbd
теперь пришло время заняться ФС
OCFS2
Почему ocfs2? Потому что это в основе.Почему не gfs2? Он есть в ядре, но при попытке его использовать при удалении файлов виснет в тупике (изначально была попытка его использовать, но на своей шкуре убедившись, что он все-таки не готов к производству, о чем неоднократно упоминается на сайте разработчика и не только :(выбран ocfs2) Почему не gfs1? На тот момент в ядре 2.6.27 его поддержки не было + он просто не работал.
1. Не забудьте включить это в ядре
--> Файловые системы
--> Поддержка файловой системы OCFS2 (ЭКСПЕРИМЕНТАЛЬНАЯ)
а также длм
2. Ищем последние ебилды в bugzilla bugs.gentoo.org/show_bug.cgiЭid=193249
3. Ставим
#emerge ocfs2-tools
4. Самый простой конфиг, по сравнению с тем, что нам приходилось делать на gfs2 (опять же на обеих нодах)
/etc/ocfs2/cluster.conf node:
ip_port = 7777
ip_address = 192.168.0.1
number = 0
name = node1
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.0.2
number = 1
name = node2
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
5. Создайте fs на первом узле (этот шаг — 10-й шаг в части drbd)
#mkfs.ocfs2 -b 4K -C 32K -N 2 /dev/drbd0 (здесь также нужно добавить имя кластера и использовать dlm)
(точная команда ускользнула из головы, но что-то вроде этого.
как всегда полная информация man mkfs.ocfs2) и он зальет второй узел из-за синхронизации.
Нижняя граница
После некоторого неторопливого форматирования.смонтируйте полученный раздел на втором узле #mount /dev/drbd0 /home/site/www/ -t ocfs2 (лирическое отступление, все логи веб-сервера и т.п.
находятся в /home/site/logs потому что нет смысла переносить их на другой узел, также делаются симлинки с /home/site/www на /home/site на какой-то конфиги, которые различаются на узлах) и теперь заливаем сайт обратно rsync. после 6 часов синхронизации серверы готовы к боевому дежурству, остается только раскидать запросы веб-сервера по узлам.
но это уже другая статья)) PS незабываемо #rc-update добавить drbd по умолчанию #rc-update добавить ocfs2 по умолчанию Извините, возможно, что при форматировании и монтировании ocfs2 нужно перезапустить службу.
к сожалению точно не помню.
#/etc/init.d/ocfs2 перезапуск Возможна ситуация с расщеплением мозга, информация как с этим бороться есть на офф сайте, Также здесь не упоминаются действия drbd в случае потери связи с другим узлом, но это довольно специфическая вещь, поэтому лучше сразу прочитать об этом в документации.
основные ссылки, на основе которых написана данная статья www.debian-administration.org/articles/578 oss.oracle.com/projects/ocfs2 www.netup.ru/articles.phpЭn=13 ru.gentoo-wiki.com/wiki/HOWTO_Heartbeat_and_DRBD www.drbd.org Теги: #Gentoo #DRBD #cluster #ocfs2 #lvm #rsync #Высокая производительность
-
Солнечный Свет + Углекислый Газ = Топливо
19 Oct, 24 -
Старые Форматы Powerpoint Стали Опасными
19 Oct, 24