2. Суть доклада
• Построение отказоустойчивой «фермы»
• Блочные устройства с высоким уровнем
доступности и актуальности
• «Живая» миграция виртуальных машин
внутри «фермы»
• «Отказоустойчивые» ip сервисы на базе
corosync/pacemaker или carp/ucarp
3. Типовые решения
• Полноценный кластер – дорого,
сложно, тяжело поддерживать
4. Типовые решения
• Некластеризованные
виртуальные/реальные
сервера с
синхронизацией данных
«по необходимости»
либо «по расписанию» с
дублированием –
избыточные ресурсы,
дополнительные
расходы на
синхронизацию
5. Цель доклада
Отказоустойчивый
микрокластер
«собранный» из
попарно соединенных
физических серверов.
Бюджетно и надежно.
8. Операционная система
Операционная система – Oracle Linux
• Бесплатная поддержка (обновления)
• Единый репозиторий как для
коммерческих так и для платных
условий поддержки
• Продолжительный период поддержки
9. Разбивка диска
• /boot/ - 200 Mb
• SWAP – от 0.5 до 2.0 от объема RAM
• Остальное под LVM (группа vg0)
– / - 10Gb (volume_name = root)
– Остальное не распределяем
/boot
data
swap
root
13. Результаты
• Пара серверов
• Отказоустойчивая связность между
собой с размером пакеты mtu=9000
• Отказоустойчивый выход в сеть
• Операционная система с поддержкой
файловой системы OCFS2
14. Дисковое пространство
• Создаем на каждом сервере раздел
lvcreate --name=data --size=(полный объем свободного места в группе) vg0
• Конфигурируем DRBD
/etc/drbd.d/shared.res
resource shared {
protocol C;
net {
allow-two-primaries;
sndbuf-size 0;
}
disk {
no-disk-barrier;
no-disk-flushes;
}
startup {
become-primary-on both;
}
on HOSTNAME_LEFT {
device minor 1;
disk /dev/vg0/data;
address INT IP LEFT:7789;
meta-disk internal;
}
on HOSTNAME_RIGHT {
device minor 1;
disk /dev/vg0/data;
address INT IP RIGHT:7789;
meta-disk internal;
}
}
15. Дисковое пространство
• Инициализируем раздел на обоих серверах
# drbdadm create-md shared
• Запускаем DRBD на обоих серверах
# service drbd start
# chkconfig drbd on
• На любом сервере
# drbdadm invalidate shared
• Ожидаем пока #service drbd status покажет
завершение синхронизации
• На обоих узлах
# drbdadm primary shared
16. Результат
• Настроенная пара серверов с
синхронизируемым дисковым
пространством (блочным устройством)
без файловой системы
• На каждом сервере устройство
доступно лдя чтения и записи
17. Файловая система
• Ставим нужные пакеты
# yum install ocfs2-tools
• Настраиваем
# /etc/ocfs2/cluster.conf
node:
ip_port = 7777
ip_address = INT IP LEFT
number = 0
name = HOSTNAME_LEFT
cluster = ocfs2
node:
ip_port = 7777
ip_address = INT IP RIGHT
number = 1
name = HOSTNAME_RIGHT
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
# service o2cb configure
18. Файловая система (продолжение)
• Создаем файловую систему
на любом сервере
# mkfs.ocfs2 -F -N 3 -J block64 -L drbd_ocfs --mount
cluster -T (datafiles|vmstore) /dev/drbd/by-res/shared
• Настраиваем таблицу разделов
на обоих серверах
# /etc/fstab
/dev/drbd1 /mnt/shared ocfs2
defaults,noexec,nosuid,noacl,nouser_xattr,errors=remount-ro,localflocks
• Монтируем файловую систему
на обоих узлах
# mkdir –p /mnt/shared/;chkconfig ocfs2 on;service ocf2 start
19. Проверка
• Перезагружаем любой сервер
и убеждаемся что все работает
• Делаем чтобы работало
• Не забываем что узлов 2
20. Результат
• Получили пару серверов с надежной
файловой системой при этом в случае
отказа одного из серверов все данные
будут доступны
• Можно переходить к виртуальным
машинам
23. А дальше все просто!
• Живая миграция виртуальной машины
# virsh --connect=qemu:///system --quiet migrate
--live vhost1 qemu+ssh://INT_IP/system
(лучше происать внутренние адреса серверов в
/etc/hosts)
• Один сервер умер, срочно запускам на втором
# virsh define /mnt/shared/xml/vhost1.xml
# virsh start vhost1
24. А как бы автоматизировать
• Pacemaker/corosync
• Не забываем про STONITH девайсы
• Ставим на мониторинг
• Переодически проверяем
25. Отказоустойчивость сервиса
• Оперативный запуск виртуальных
машин – 1-15 минут в зависимости от
сервиса
• Наличие пассивного дублера –
миграция ip адресов
• Поддержка двух активных сервисов с
автоматическим запуском по факту
отказа
26. Отказоустойчивые ip адреса и
сервисы
Решений много
1. HSRP – надежное аппаратное решение, требует
наличия поддерживающего оборудования. Не
знает ничего про другие сервисы, чем и
ограничивается возможность применения.
2. carp/ucarp – просто, надежно. Не знает ничего про
другие сервисы, чем и ограничивается
возможность применения.
3. Heartbeat – фактически предок pacemaker/corosync.
Конфигурировать сложно
4. Pacemaker/corosync – аналог heartbeat но проще
настраивать.
27. Отказоустойчивые ip адреса и
сервисы
Инструмент
Управление
сервисами
Простота
настройки Особенности
HSRP Нет
Зависит от конечного
решения Требуется аппаратная поддержка
UCARP Нет Просто
heartbeat Да Сложно
Может некорректно работать при
высокой нагрузке на систему
pacemaker/corosync Да Средне
Может некорректно работать при
высокой нагрузке на систему
28. Ограничение решения
• Виртуальные машины не могут быть
смигрированы за пределы своей пары хостов
• Операции ввода-вывода медленнее чем при
некластерной (например ext3) файловой
системе или локальном блочном устройстве
выделенном через LVM
• На каждом хосте необходимо иметь
достаточно памяти для размещения всех
критичных виртуальных машин этой пары
хостовых машин
29. Типовые проблемы и решения
• Рассинхронизация DRBD после
перезагрузки или аварийного сбоя
Не запускать виртуальные машины на
хосте. На котором идет восстановление
drbd до его завершения.
Минимизирвоать операции ввода-
вывода на неповрежденном хосте. При
необходимости остановить
синхронизацию и запустиьт ее в менее
нагруженный интервал времени.