SlideShare a Scribd company logo
Отказоустойчивый 
микрокластер 
своими руками 
Виталий Гаврилов
Суть доклада 
• Построение отказоустойчивой «фермы» 
• Блочные устройства с высоким уровнем доступности и 
актуальности 
• «Живая» миграция виртуальных машин внутри «фермы» 
• «Отказоустойчивые» IP сервисы на базе corosync/pacemaker или 
carp/ucarp
Типовые решения 
Полноценный кластер – дорого, сложно, тяжело поддерживать
Типовые решения 
• Некластеризованные 
виртуальные/реальные сервера с 
синхронизацией данных «по 
необходимости» либо «по расписанию» с 
дублированием – избыточные ресурсы, 
дополнительные расходы на 
синхронизацию
Цель доклада 
• Отказоустойчивый микрокластер, «собранный» 
из попарно соединенных физических серверов. 
Бюджетно и надежно
Схема сетевой линковки 
NODE-LEFT 
NODE-RIGHT 
SWITCH1 SWITCH2 
eth0 
eth1 
eth2 
eth3 
eth0 
eth1 
eth2 
eth3 
bond1 bond0 
bond1 bond0 
EXT IP LEFT EXT IP RIGHT 
INT IP LEFT INT IP RIGHT
Схема сетевой линковки 
NODE-LEFT 
NODE-RIGHT 
SWITCH1 SWITCH2 
eth0 
eth1 
eth2 
eth3 
eth0 
eth1 
eth2 
eth3 
bond1 bond0 
bond1 bond0 
EXT IP 
RIGHT 
EXT IP LEFT 
INT IP 
RIGHT 
INT IP LEFT 
br1 br0 
br1 br0
Операционная система 
Операционная система – Oracle Linux 
• Бесплатная поддержка (обновления) 
• Единый репозиторий как для коммерческих, так и для платных 
условий поддержки 
• Продолжительный период поддержки
Разбивка диска 
• /boot/ - 200 Mb 
• SWAP – от 0.5 до 2.0 от 
объема RAM 
• Остальное под LVM 
(группа vg0) 
• / - 10Gb 
(volume_name = root) 
• Остальное не 
распределяем 
swap boot 
root 
data
Конфигурация сетевых интерфейсов (bonding) 
/etc/sysconfig/network-scripts/eth[0-1] 
DEVICE="eth[0-1]" 
BOOTPROTO="static" 
HWADDR=“XX:XX:XX:XX:XX:XX" 
NM_CONTROLLED="no" 
ONBOOT="yes" 
MASTER=bond0 
SLAVE=yes 
TYPE="Ethernet" 
/etc/sysconfig/network-scripts/bond0 
DEVICE=bond0 
BOOTPROTO=none 
ONBOOT=yes 
IPADDR=EXT IP (LEFT|RIGHT) 
NETMASK=X.X.X.X 
TYPE=Bonding 
USERCRL=no 
BONDING_OPTS="mode=1 miimon=100" 
/etc/sysconfig/network-scripts/eth[2-3] 
DEVICE="eth[2-3]" 
BOOTPROTO="static" 
HWADDR=“XX:XX:XX:XX:XX:XX" 
NM_CONTROLLED="no" 
ONBOOT="yes" 
MASTER=bond1 
SLAVE=yes 
MTU=9000 
TYPE="Ethernet“ 
/etc/sysconfig/network-scripts/bond1 
DEVICE=bond0 
BOOTPROTO=none 
ONBOOT=yes 
IPADDR=INT IP (LEFT|RIGHT) 
NETMASK=255.255.255.252 
TYPE=Bonding 
USERCRL=no 
MTU=9000 
BONDING_OPTS="mode=0 miimon=100"
Конфигурация сетевых интерфейсов (bridge) 
/etc/sysconfig/network-scripts/bond0 
DEVICE=bond0 
BOOTPROTO=none 
ONBOOT=yes 
TYPE=Bonding 
USERCRL=no 
BONDING_OPTS="mode=1 miimon=100" 
BRIDGE=br0 
/etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0 
BOOTPROTO=static 
IPADDR=EXT IP (LEFT|RIGHT) 
NETMASK=X.X.X.X 
ONBOOT=yes 
TYPE=Brige 
IPV6INIT=no 
STP=(on|off) 
/etc/sysconfig/network-scripts/bond1 
DEVICE=bond0 
BOOTPROTO=none 
ONBOOT=yes 
TYPE=Bonding 
USERCRL=no 
BONDING_OPTS="mode=0 miimon=100“ 
MTU=9000 
BRIDGE=br1 
/etc/sysconfig/network-scripts/ifcfg-br1 
DEVICE=br1 
BOOTPROTO=static 
IPADDR=INT IP (LEFT|RIGHT) 
NETMASK=255.255.255.252 
ONBOOT=yes 
TYPE=Brige 
IPV6INIT=no 
MTU=9000 
STP=off
Настраиваем Firewall 
#/etc/sysconfig/iptables 
-A INPUT -i br1 -j ACCEPT 
#service iptables restart
Результаты 
• Пара серверов 
• Отказоустойчивая связность между собой с размером пакеты 
mtu=9000 
• Отказоустойчивый выход в сеть 
• Операционная система с поддержкой файловой системы OCFS2
Дисковое пространство 
• Создаем на каждом сервере раздел 
lvcreate --name=data --size= (полный объем свободного места в группе) vg0
/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; 
} 
} 
• Конфигурируем DRBD
Дисковое пространство 
• Инициализируем раздел на обоих серверах: # drbdadm create-md 
shared 
• Запускаем DRBD на обоих серверах: 
# service drbd start 
# chkconfig drbd on 
• На любом сервере # drbdadm invalidate shared 
• Ожидаем пока #service drbd status покажет завершение 
синхронизации 
• На обоих узлах # drbdadm primary shared
Результат 
• Настроенная пара серверов с синхронизируемым дисковым 
пространством (блочным устройством) без файловой системы 
• На каждом сервере устройство доступно для чтения и записи
Файловая система 
• Ставим нужные пакеты 
# 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
Файловая система 
(продолжение) 
• Создаем файловую систему на любом сервере 
# 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
Проверка 
• Перезагружаем любой сервер и убеждаемся, что все работает 
• Делаем, чтобы работало 
• Не забываем, что узлов 2
Результат 
• Получили пару серверов с надежной файловой системой 
• В случае отказа одного из серверов все данные будут доступны 
• Можно переходить к виртуальным машинам
Структура раздела /mnt/shared 
• /mnt/shared/ 
• /mnt/shared/data/ 
• /mnt/shared/data/image1.bin 
• … 
• /mnt/shared/xml/ 
• /mnt/shared/xml/vhost1.xml 
• …
А дальше все просто! 
• Запускаем установку ОС 
# virt-install -n vhost1 -l http://mirror.yandex.ru/centos/6.5/os/x86_64/ -- 
vnc --disk path=/mnt/shared/data/iamge1-root.bin,size=200 –prompt 
• Ставим ОС 
• Сохраняем конфигурацию 
# virsh dumpxml vhost1 > /mnt/shared/xml/vhost1.xml
А дальше все просто! 
• Живая миграция виртуальной машины 
# 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
А как бы автоматизировать 
• Pacemaker/corosync 
• Не забываем про STONITH девайсы 
• Ставим на мониторинг 
• Периодически проверяем
Отказоустойчивость сервиса 
• Оперативный запуск виртуальных машин – 1-15 минут в 
зависимости от сервиса 
• Наличие пассивного дублера – миграция IP адресов 
• Поддержка двух активных сервисов с автоматическим запуском 
по факту отказа
Отказоустойчивые ip адреса и сервисы 
Решений много 
1. HSRP – надежное аппаратное решение, требует наличия 
поддерживающего оборудования. Не знает ничего про другие 
сервисы, чем и ограничивается возможность применения. 
2. carp/ucarp – просто, надежно. Не знает ничего про другие 
сервисы, чем и ограничивается возможность применения. 
3. Heartbeat – фактически предок pacemaker/corosync. 
Конфигурировать сложно 
4. Pacemaker/corosync – аналог heartbeat но проще настраивать.
Отказоустойчивые ip адреса и сервисы 
Инструмент 
Управление 
сервисами 
Простота настройки Особенности 
HSRP Нет 
Зависит от 
конечного 
решения 
Требуется аппаратная 
поддержка 
UCARP Нет Просто 
heartbeat Да Сложно 
Может некорректно 
работать 
при высокой нагрузке на 
cистему 
pacemaker/corosync Да Средне 
Может некорректно 
работать 
при высокой нагрузке на 
cистему
Ограничение решения 
• Виртуальные машины не могут быть смигрированы за пределы 
своей пары хостов 
• Операции ввода-вывода медленнее, чем при некластерной 
(например ext3) файловой системе или локальном блочном 
устройстве выделенном через LVM 
• На каждом хосте необходимо иметь достаточно памяти для 
размещения всех критичных виртуальных машин этой пары 
хостовых машин
Типовые проблемы и решения 
Рассинхронизация DRBD после перезагрузки или аварийного сбоя 
• Не запускать виртуальные машины на хосте, на котором идет 
восстановление drbd до его завершения 
• Минимизировать операции ввода-вывода на неповрежденном 
хосте 
• При необходимости остановить синхронизацию и запустить ее в 
менее нагруженный интервал времени
Спасибо за внимание!

More Related Content

What's hot

Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
IBS
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Ontico
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Ontico
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
odnoklassniki.ru
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Ontico
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
odnoklassniki.ru
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Ontico
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
AvitoTech
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
Yandex
 
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
Yaryomenko
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandra
odnoklassniki.ru
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
Vadim Madison
 

What's hot (20)

Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
Технологии эффективного хранения данных, ключевые дифференциаторы NetApp
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandra
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 

Viewers also liked

Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Lenvendo
 
Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"
Lenvendo
 
Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Lenvendo
 
Ленвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRЛенвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRLenvendo
 
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Lenvendo
 
Ленвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаЛенвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаLenvendo
 
Ленвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаЛенвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаLenvendo
 
Каким должен быть подарок?
Каким должен быть подарок? Каким должен быть подарок?
Каким должен быть подарок?
CAMPO_MARZIO
 
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
George Lebedev
 
Daruyou Gift Card
Daruyou Gift CardDaruyou Gift Card
Daruyou Gift Card
Ketchup EE, Daruyou
 

Viewers also liked (10)

Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
 
Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"
 
Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.
 
Ленвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRЛенвендо. Сайт на службе HR
Ленвендо. Сайт на службе HR
 
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
 
Ленвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проектаЛенвендо.Построение системного ландшафта высоконагруженного проекта
Ленвендо.Построение системного ландшафта высоконагруженного проекта
 
Ленвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаЛенвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного портала
 
Каким должен быть подарок?
Каким должен быть подарок? Каким должен быть подарок?
Каким должен быть подарок?
 
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
 
Daruyou Gift Card
Daruyou Gift CardDaruyou Gift Card
Daruyou Gift Card
 

Similar to Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "Ленвендо", Виталий Гаврилов

Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
Yandex
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Cisco Russia
 
Настраиваем оборудование Juniper. Основы JunOS за одно занятие
Настраиваем оборудование Juniper. Основы JunOS за одно занятиеНастраиваем оборудование Juniper. Основы JunOS за одно занятие
Настраиваем оборудование Juniper. Основы JunOS за одно занятие
SkillFactory
 
Автономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейАвтономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейCisco Russia
 
GRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network InitiativeGRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network Initiative
ARCCN
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
Waits monitoring in PostgreSQL
Waits monitoring in PostgreSQLWaits monitoring in PostgreSQL
Waits monitoring in PostgreSQL
Ildus Kurbangaliev
 
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Vadim Ponomarev
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
Sergey Platonov
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017
S-Terra CSP
 
Сетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполненииСетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполнении
Cisco Russia
 
Организация сети и безопасность
Организация сети и безопасностьОрганизация сети и безопасность
Организация сети и безопасностьOpenStackRU
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Kaspersky
 
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязиОсновные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
Cisco Russia
 
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
OpenVZ
 
Метрооблако
МетрооблакоМетрооблако
Метрооблако
Igor Baklanov
 
ITSF 2014 ICS Security
ITSF 2014 ICS SecurityITSF 2014 ICS Security
ITSF 2014 ICS Security
Ilya Karpov
 
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
GigaCloud
 
Технология Cisco Instant Access для упрощения структуры кампусных сетей.
Технология Cisco Instant Access для упрощения структуры кампусных сетей. Технология Cisco Instant Access для упрощения структуры кампусных сетей.
Технология Cisco Instant Access для упрощения структуры кампусных сетей. Cisco Russia
 

Similar to Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "Ленвендо", Виталий Гаврилов (20)

Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
 
Настраиваем оборудование Juniper. Основы JunOS за одно занятие
Настраиваем оборудование Juniper. Основы JunOS за одно занятиеНастраиваем оборудование Juniper. Основы JunOS за одно занятие
Настраиваем оборудование Juniper. Основы JunOS за одно занятие
 
Автономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейАвтономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетей
 
GRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network InitiativeGRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network Initiative
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Waits monitoring in PostgreSQL
Waits monitoring in PostgreSQLWaits monitoring in PostgreSQL
Waits monitoring in PostgreSQL
 
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017
 
Сетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполненииСетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполнении
 
Организация сети и безопасность
Организация сети и безопасностьОрганизация сети и безопасность
Организация сети и безопасность
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязиОсновные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
Основные уязвимости и методы защиты оборудования и ПО видеоконференцсвязи
 
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Метрооблако
МетрооблакоМетрооблако
Метрооблако
 
ITSF 2014 ICS Security
ITSF 2014 ICS SecurityITSF 2014 ICS Security
ITSF 2014 ICS Security
 
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
 
Технология Cisco Instant Access для упрощения структуры кампусных сетей.
Технология Cisco Instant Access для упрощения структуры кампусных сетей. Технология Cisco Instant Access для упрощения структуры кампусных сетей.
Технология Cisco Instant Access для упрощения структуры кампусных сетей.
 

Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "Ленвендо", Виталий Гаврилов

  • 1. Отказоустойчивый микрокластер своими руками Виталий Гаврилов
  • 2. Суть доклада • Построение отказоустойчивой «фермы» • Блочные устройства с высоким уровнем доступности и актуальности • «Живая» миграция виртуальных машин внутри «фермы» • «Отказоустойчивые» IP сервисы на базе corosync/pacemaker или carp/ucarp
  • 3. Типовые решения Полноценный кластер – дорого, сложно, тяжело поддерживать
  • 4. Типовые решения • Некластеризованные виртуальные/реальные сервера с синхронизацией данных «по необходимости» либо «по расписанию» с дублированием – избыточные ресурсы, дополнительные расходы на синхронизацию
  • 5. Цель доклада • Отказоустойчивый микрокластер, «собранный» из попарно соединенных физических серверов. Бюджетно и надежно
  • 6. Схема сетевой линковки NODE-LEFT NODE-RIGHT SWITCH1 SWITCH2 eth0 eth1 eth2 eth3 eth0 eth1 eth2 eth3 bond1 bond0 bond1 bond0 EXT IP LEFT EXT IP RIGHT INT IP LEFT INT IP RIGHT
  • 7. Схема сетевой линковки NODE-LEFT NODE-RIGHT SWITCH1 SWITCH2 eth0 eth1 eth2 eth3 eth0 eth1 eth2 eth3 bond1 bond0 bond1 bond0 EXT IP RIGHT EXT IP LEFT INT IP RIGHT INT IP LEFT br1 br0 br1 br0
  • 8. Операционная система Операционная система – Oracle Linux • Бесплатная поддержка (обновления) • Единый репозиторий как для коммерческих, так и для платных условий поддержки • Продолжительный период поддержки
  • 9. Разбивка диска • /boot/ - 200 Mb • SWAP – от 0.5 до 2.0 от объема RAM • Остальное под LVM (группа vg0) • / - 10Gb (volume_name = root) • Остальное не распределяем swap boot root data
  • 10. Конфигурация сетевых интерфейсов (bonding) /etc/sysconfig/network-scripts/eth[0-1] DEVICE="eth[0-1]" BOOTPROTO="static" HWADDR=“XX:XX:XX:XX:XX:XX" NM_CONTROLLED="no" ONBOOT="yes" MASTER=bond0 SLAVE=yes TYPE="Ethernet" /etc/sysconfig/network-scripts/bond0 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes IPADDR=EXT IP (LEFT|RIGHT) NETMASK=X.X.X.X TYPE=Bonding USERCRL=no BONDING_OPTS="mode=1 miimon=100" /etc/sysconfig/network-scripts/eth[2-3] DEVICE="eth[2-3]" BOOTPROTO="static" HWADDR=“XX:XX:XX:XX:XX:XX" NM_CONTROLLED="no" ONBOOT="yes" MASTER=bond1 SLAVE=yes MTU=9000 TYPE="Ethernet“ /etc/sysconfig/network-scripts/bond1 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes IPADDR=INT IP (LEFT|RIGHT) NETMASK=255.255.255.252 TYPE=Bonding USERCRL=no MTU=9000 BONDING_OPTS="mode=0 miimon=100"
  • 11. Конфигурация сетевых интерфейсов (bridge) /etc/sysconfig/network-scripts/bond0 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Bonding USERCRL=no BONDING_OPTS="mode=1 miimon=100" BRIDGE=br0 /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 BOOTPROTO=static IPADDR=EXT IP (LEFT|RIGHT) NETMASK=X.X.X.X ONBOOT=yes TYPE=Brige IPV6INIT=no STP=(on|off) /etc/sysconfig/network-scripts/bond1 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Bonding USERCRL=no BONDING_OPTS="mode=0 miimon=100“ MTU=9000 BRIDGE=br1 /etc/sysconfig/network-scripts/ifcfg-br1 DEVICE=br1 BOOTPROTO=static IPADDR=INT IP (LEFT|RIGHT) NETMASK=255.255.255.252 ONBOOT=yes TYPE=Brige IPV6INIT=no MTU=9000 STP=off
  • 12. Настраиваем Firewall #/etc/sysconfig/iptables -A INPUT -i br1 -j ACCEPT #service iptables restart
  • 13. Результаты • Пара серверов • Отказоустойчивая связность между собой с размером пакеты mtu=9000 • Отказоустойчивый выход в сеть • Операционная система с поддержкой файловой системы OCFS2
  • 14. Дисковое пространство • Создаем на каждом сервере раздел lvcreate --name=data --size= (полный объем свободного места в группе) vg0
  • 15. /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; } } • Конфигурируем DRBD
  • 16. Дисковое пространство • Инициализируем раздел на обоих серверах: # drbdadm create-md shared • Запускаем DRBD на обоих серверах: # service drbd start # chkconfig drbd on • На любом сервере # drbdadm invalidate shared • Ожидаем пока #service drbd status покажет завершение синхронизации • На обоих узлах # drbdadm primary shared
  • 17. Результат • Настроенная пара серверов с синхронизируемым дисковым пространством (блочным устройством) без файловой системы • На каждом сервере устройство доступно для чтения и записи
  • 18. Файловая система • Ставим нужные пакеты # 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
  • 19. Файловая система (продолжение) • Создаем файловую систему на любом сервере # 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
  • 20. Проверка • Перезагружаем любой сервер и убеждаемся, что все работает • Делаем, чтобы работало • Не забываем, что узлов 2
  • 21. Результат • Получили пару серверов с надежной файловой системой • В случае отказа одного из серверов все данные будут доступны • Можно переходить к виртуальным машинам
  • 22. Структура раздела /mnt/shared • /mnt/shared/ • /mnt/shared/data/ • /mnt/shared/data/image1.bin • … • /mnt/shared/xml/ • /mnt/shared/xml/vhost1.xml • …
  • 23. А дальше все просто! • Запускаем установку ОС # virt-install -n vhost1 -l http://mirror.yandex.ru/centos/6.5/os/x86_64/ -- vnc --disk path=/mnt/shared/data/iamge1-root.bin,size=200 –prompt • Ставим ОС • Сохраняем конфигурацию # virsh dumpxml vhost1 > /mnt/shared/xml/vhost1.xml
  • 24. А дальше все просто! • Живая миграция виртуальной машины # 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
  • 25. А как бы автоматизировать • Pacemaker/corosync • Не забываем про STONITH девайсы • Ставим на мониторинг • Периодически проверяем
  • 26. Отказоустойчивость сервиса • Оперативный запуск виртуальных машин – 1-15 минут в зависимости от сервиса • Наличие пассивного дублера – миграция IP адресов • Поддержка двух активных сервисов с автоматическим запуском по факту отказа
  • 27. Отказоустойчивые ip адреса и сервисы Решений много 1. HSRP – надежное аппаратное решение, требует наличия поддерживающего оборудования. Не знает ничего про другие сервисы, чем и ограничивается возможность применения. 2. carp/ucarp – просто, надежно. Не знает ничего про другие сервисы, чем и ограничивается возможность применения. 3. Heartbeat – фактически предок pacemaker/corosync. Конфигурировать сложно 4. Pacemaker/corosync – аналог heartbeat но проще настраивать.
  • 28. Отказоустойчивые ip адреса и сервисы Инструмент Управление сервисами Простота настройки Особенности HSRP Нет Зависит от конечного решения Требуется аппаратная поддержка UCARP Нет Просто heartbeat Да Сложно Может некорректно работать при высокой нагрузке на cистему pacemaker/corosync Да Средне Может некорректно работать при высокой нагрузке на cистему
  • 29. Ограничение решения • Виртуальные машины не могут быть смигрированы за пределы своей пары хостов • Операции ввода-вывода медленнее, чем при некластерной (например ext3) файловой системе или локальном блочном устройстве выделенном через LVM • На каждом хосте необходимо иметь достаточно памяти для размещения всех критичных виртуальных машин этой пары хостовых машин
  • 30. Типовые проблемы и решения Рассинхронизация DRBD после перезагрузки или аварийного сбоя • Не запускать виртуальные машины на хосте, на котором идет восстановление drbd до его завершения • Минимизировать операции ввода-вывода на неповрежденном хосте • При необходимости остановить синхронизацию и запустить ее в менее нагруженный интервал времени