SlideShare uma empresa Scribd logo
1 de 30
Отказоустойчивый 
микрокластер своими 
руками 
Виталий Гаврилов
Суть доклада 
• Построение отказоустойчивой «фермы» 
• Блочные устройства с высоким уровнем 
доступности и актуальности 
• «Живая» миграция виртуальных машин 
внутри «фермы» 
• «Отказоустойчивые» ip сервисы на базе 
corosync/pacemaker или carp/ucarp
Типовые решения 
• Полноценный кластер – дорого, 
сложно, тяжело поддерживать
Типовые решения 
• Некластеризованные 
виртуальные/реальные 
сервера с 
синхронизацией данных 
«по необходимости» 
либо «по расписанию» с 
дублированием – 
избыточные ресурсы, 
дополнительные 
расходы на 
синхронизацию
Цель доклада 
Отказоустойчивый 
микрокластер 
«собранный» из 
попарно соединенных 
физических серверов. 
Бюджетно и надежно.
Схема сетевой линковки
Схема сетевой линковки
Операционная система 
Операционная система – Oracle Linux 
• Бесплатная поддержка (обновления) 
• Единый репозиторий как для 
коммерческих так и для платных 
условий поддержки 
• Продолжительный период поддержки
Разбивка диска 
• /boot/ - 200 Mb 
• SWAP – от 0.5 до 2.0 от объема RAM 
• Остальное под LVM (группа vg0) 
– / - 10Gb (volume_name = root) 
– Остальное не распределяем 
/boot 
data 
swap 
root
Конфигурация сетевых интерфейсов (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 
• Конфигурируем 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; 
} 
}
Дисковое пространство 
• Инициализируем раздел на обоих серверах 
# 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 Да Сложно 
Может некорректно работать при 
высокой нагрузке на систему 
pacemaker/corosync Да Средне 
Может некорректно работать при 
высокой нагрузке на систему
Ограничение решения 
• Виртуальные машины не могут быть 
смигрированы за пределы своей пары хостов 
• Операции ввода-вывода медленнее чем при 
некластерной (например ext3) файловой 
системе или локальном блочном устройстве 
выделенном через LVM 
• На каждом хосте необходимо иметь 
достаточно памяти для размещения всех 
критичных виртуальных машин этой пары 
хостовых машин
Типовые проблемы и решения 
• Рассинхронизация DRBD после 
перезагрузки или аварийного сбоя 
Не запускать виртуальные машины на 
хосте. На котором идет восстановление 
drbd до его завершения. 
Минимизирвоать операции ввода- 
вывода на неповрежденном хосте. При 
необходимости остановить 
синхронизацию и запустиьт ее в менее 
нагруженный интервал времени.
Вопросы

Mais conteúdo relacionado

Mais procurados

Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Ontico
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Ontico
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?
Anton Zhbankov
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 

Mais procurados (20)

Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
 

Semelhante a Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)

Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
DataCore case studies
DataCore case studies DataCore case studies
DataCore case studies
korn_aaf
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
Alex Chistyakov
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Ontico
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
DEPO Computers
 

Semelhante a Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо) (20)

Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
 
GRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network InitiativeGRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network Initiative
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
DataCore case studies
DataCore case studies DataCore case studies
DataCore case studies
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
 
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностейПакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStack
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
 
Linux Terminal Server Project
 Linux Terminal Server Project Linux Terminal Server Project
Linux Terminal Server Project
 
linux and freebsd monitoring
linux and freebsd monitoringlinux and freebsd monitoring
linux and freebsd monitoring
 

Mais de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)

  • 1. Отказоустойчивый микрокластер своими руками Виталий Гаврилов
  • 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
  • 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 • Конфигурируем 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. Результат • Получили пару серверов с надежной файловой системой при этом в случае отказа одного из серверов все данные будут доступны • Можно переходить к виртуальным машинам
  • 21. Структура раздела /mnt/shared • /mnt/shared/ • /mnt/shared/data/ • /mnt/shared/data/image1.bin • … • /mnt/shared/xml/ • /mnt/shared/xml/vhost1.xml • …
  • 22. А дальше все просто! • Запускаем установку ОС • # 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
  • 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 до его завершения. Минимизирвоать операции ввода- вывода на неповрежденном хосте. При необходимости остановить синхронизацию и запустиьт ее в менее нагруженный интервал времени.