SlideShare une entreprise Scribd logo
1  sur  36
Практический опыт
   использования решений
виртуализации в web-проектах
            Александр Чистяков
                  bOombate
       http://alexclear.livejournal.com
Докладчик?

•   Разработчик серверных приложений
•   Эксплуатационщик
•   DevOps
•   Архитектор серверных приложений
•   Просто хороший человек
Аудитория?

•   Разработчики серверных приложений
•   Эксплуатационщики
•   DevOps’ы
•   Архитекторы серверных приложений
•   Просто хорошие люди
Зачем нужна виртуализация?

• Возможность создания качественно разных
  окружений
• Возможность изоляции окружений
• Возможность консолидации серверов
• Слой абстракции между «голым железом» и
  платформой
• Возможность автоматического развертывания и
  миграции
Не будем усложнять

•   Windows-машины в Linux-окружении
•   Каждому разработчику – своя песочница
•   Один «железный» сервер на всех разработчиков
•   Возможность легко выполнить миграцию (апгрейд)
•   Возможность выполнить миграцию
    автоматически, возможность быстро развернуть еще
    одну ноду
Типы виртуализации
• Программная:
   – Эмуляция (Bochs, PearPC)
   – Динамическая трансляция (VMWare, VirtualBox)
   – Паравиртуализация (Xen)
• Аппаратная виртуализация
  (Xen, KVM, VirtualBox, Hyper-V, VMWare)
• Виртуализация уровня ОС:
   – LXC, OpenVZ, Virtuozzo
   – FreeBSD Jail
Какой тип нужен нам?

• А чего хотим добиться?
• Больше возможностей – меньше производительность:
  – Попробуйте поставить Debian на Bochs
• Аппаратная виртуализация для Windows на Linux
• Уровня ОС (контейнерная) – для гомогенных сред
  (одно ядро на все инстансы)
• Паравиртуализация
Аппаратная виртуализация

•   Xen и производные
•   KVM
•   VirtualBox
•   Hyper-V
•   VMWare Player
•   VMWare ESX
•   VMWare ESXi
Xen и производные

• Xen исторически первая Open Source система
  виртуализации, начинался как паравиртуализатор
• Отлично поддерживает ядро 2.6.18 и отлично
  поддерживался RedHat 5.x и производными
• Платный Citrix XenServer
• Между 3-ей и 4-й версией был большой
  перерыв, продукт перестал нормально
  поддерживаться многими дистрибутивами (отказ
  RedHat в пользу KVM)
Немного личного опыта

• Xen 3.X, CentOS 5.X
• Настройка через virt-manager тривиальна
  – Если вы не настраиваете паравиртуализацию с ядром вне
    образа диска
• “unaligned memory access” в логе на Dom0
  – Решение проблемы методом черных очков (помогло)
• Под большой нагрузкой не использовался
• Никаких проблем не доставлял
Паравиртуализация

• Ядро для DomU не такое, как для Dom0, поэтому
  вариантов гест-систем больше
• Можно располагать ядро вне файловой системы
  виртуального диска
• Виртуальные диски можно подключать прямо как
  логические, что упрощает разметку
• Amazon и другие так и делают
Что еще хорошего?

• Remus – механизм отказоустойчивости путем
  репликации системы в целом (в т.ч. состояния RAM)
• Xen + DRBD: http://www.drbd.org/users-guide/ch-
  xen.html
• Xen + DRBD + Heartbeat: http://old.nabble.com/DRBD-
  Xen-LVM2-Heartbeat-Ubuntu-Gutsy-HowTo-
  td17245190.html (я делал без LVM2 и без Ubuntu
  Gutsy, достаточно CentOS 6, например)
Семейство VMWare

• VMWare Player – невероятно интрузивное и неудобное
  решение (компилирует модули ядра, стартует какие-
  то сервисы и вообще ведет себя вызывающе)
• VMWare ESX, VMWare ESXi – не знаю, не пробовал, но
  если стоит ознакомиться, то дайте знать
VirtualBox

• При определенной сноровке можно заставить его
  работать в headless режиме
• А можно просто взять Vagrant (http://vagrantup.com)
  и сделать все с его помощью
• Нужно только иметь в виду, что VirtualBox
  виртуализирует диск таким образом, что при вызове
  fsync() не происходит ничего
   – Некоторые приложения могут пострадать
Hyper-V
• Всего один график из Munin (в системе за это время не
  поменялось ничего, кроме апдейтов ядра):




• Все еще хотите что-то хостить под Hyper-V? Удачи!
KVM

• Производится подразделением RedHat
• Используется как базовая система виртуализации в
  CentOS 6
• Довольно давно код принят в ядро Linux
• Виртуальные машины управляются через libvirtd
• Хорошие новости на этом закончились
• Да ты просто не умеешь ее готовить!
Как готовить KVM

• Для сетевой подсистемы всегда выбирайте bridge с
  реальным устройством, а не виртуальный ethernet
• Для дисковой подсистемы лучше всего взять raw flat
  image либо block device целиком
• Кэш диска выставьте в none для block device
  – Или в writeback для image, если вы смелый человек
• Очень хорошо иметь RAID-контроллер с батарейкой
Как готовить KVM – тюнинг ядра
• Слева – host, справа - guest:




• kernel .... nohz=off highres=off
• Видел один раз на Хетцнере
Все это не избавит вас от

• [ 839.921196] INFO: task apache2:2444 blocked for more than 120
   seconds.
   [ 839.921562] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
disables this message.
• Выглядит страшновато (к этому сообщению еще
  прилагается стекртрейс)
• У одного европейского «облачного хостера» раз в
  неделю отказывал виртуальный диск в инстансе
• Что же делать?
Виртуализация уровня ОС?

• Ядро одно и то же:
  – Файловая система разделяется между инстансами
  – Свободная память разделяется между всеми инстансами
• Звучит заманчиво, потери производительности
  должны быть очень небольшими
• Linux:
  – OpenVZ
  – LXC
OpenVZ

• Не входит в официальное ядро
  – Те же проблемы, что у Xen – есть только под stable ядра
• Давно на рынке
  – Очень стабильно
• Ориентировано на массовый хостинг
  – Ограничения по умолчанию установлены довольно жестко
Личный опыт

• Работает отлично при любых нагрузках
   – 4 млн. хитов в день в контейнере с apache2
• Надо только следить за /proc/user_beancounters
• Есть тонкости при работе с IPsec
• Хотите использовать Ubuntu 12.04 LTS в контейнере?
  Good luck! (но это проблемы Canonical, а не ваши?)
LXC

• Входит в официальное ядро
  – Нужны достаточно свежие ядра, в «серверных»
    дистрибутивах их пока нет
• Пользовательская база пока довольно мала
  – Про стабильность на следующем слайде
• Ориентировано на всех
  – Конфигурация стандартизована и не вызывает удивления у
    новичков, ограничения по умолчанию гораздо мягче
LXC – личный опыт

• Первые дни все работало прекрасно
• Потом стали пропадать вещи:
  – ping есть, а git pull сделать нельзя
  – Иногда icmp ответы о том, что пакет очень велик
  – Роутинг до всех узлов есть, а до mxs.mail.ru нет
• Что-то крепко сломано в сетевой подсистеме
  – Писал в рассылку разработчиков, но письмо даже не прошло
    модерацию
  – Нет проблем, мигрируем на OpenVZ
А как роутить?

• Если ситуация позволяет – static routes на подсети
  виртуальных машин на каждом хосте
• Если нет – IPsec туннели между хост-машинами с
  роутингом подсетей виртуальных машин
• IPsec:
   – Я использую racoon/setkey
   – iperf показывает 100Mbit/s, для моих задач достаточно
IPsec и OpenVZ

• Просто так не заработает, нужно тюнить параметры
  ядра на guest-машине (!)
• /etc/sysctl.conf:
      net.ipv4.conf.venet0.disable_policy=1
      net.ipv4.conf.venet0.disable_xfrm=1
А как бэкапить?

• Общий принцип:
  – Сделать снэпшот
  – Переписать снэпшот в другое место
• Еще можно бэкапить guest-машину как обычную
• Снэпшоты:
  – Уровня системы виртуализации
  – Уровня блочного устройства
  – Уровня файловой системы
Снэпшоты

• Уровня системы виртуализации
  – Я лично применял только в Hyper-V
• Уровня блочного устройства
  – Снэпшот LVM со всеми его плюсами и минусами
• Снэпшоты уровня FS:
  – Нужна CoW файловая система
  – Лишены недостатков LVM снэпшотов
  – Все было бы хорошо, но...
LVM

• Достоинства
  – Работают вне зависимости от типа вышележащей FS
• Недостатки
  – Необходимо не забывать предварительно оставлять
    свободное место на LVM volume group
  – Потеря производительности
  – Снэпшот может переполниться
  – При увеличении одновременного числа снэпшотов проблемы
    линейно растут
CoW FSes
• ZFS
  – Давно в продакшн
  – Лицензионно несовместима с ядром Linux
• BTRFS
  – Пока не доросла до «беты»
  – Нет fsck
  – Не рекомендуется к использованию на разделах с образами
    дисков виртуальных машин
• HAMMER
  – Кто-нибудь в зале о ней слышал?
ZFS и Linux
• ZFS-FUSE
   – Работает в userspace
   – Довольно стабильна
   – Pool version 21
• ZFS on Linux (http://zfsonlinux.org)
   – Модуль ядра
   – POSIX layer появился сравнительно недавно
   – Pool version 28
ZFS-FUSE vs ZFS on Linux
• ZFS-FUSE: -a 86400 -e 3600 -v 160 -m 512
• Найдите на графике момент перехода от ZFS-FUSE к
  ZFS on Linux:
Развитие ситуации
•   ZFS-FUSE практически мертва
•   ZFS on Linux у многих в продакшне уже сейчас
•   В том числе, и у меня, но на некритичных участках
•   BTRFS можно пытаться использовать для OpenVZ и
    LXC уже сейчас
Выводы
• На вкус и цвет все решения виртуализации разные
  – Есть и такие, которые хорошо работают под нагрузкой
• При правильном использовании виртуализация
  может приносить большую пользу
  – А при неправильном доставлять большую головную боль
• Универсального решения, по-прежнему, нет
  – Но есть наборы граничных условий, определящих
    применимость того или иного варианта
Вопросы?
•
•
•
•
•
•
Спасибо за внимание!
•   С вами был Александр Чистяков
•   http://alexclear.livejournal.com
•   alexclear@gmail.com
•   http://github.com/alexclear

Contenu connexe

Tendances

Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва it-people
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на DockerМихаил Бакулин
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокRoman_Lut
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013ru-fedora-moscow-2013
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Ontico
 
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипенияАрхитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипенияRoman_Lut
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемYandex
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Running Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VRunning Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VAndrey Beshkov
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerGonchik Tsymzhitov
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишеньAnton Ignatov
 
Яндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовЯндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовvashik
 
построение виртуальных стендов
построение виртуальных стендовпостроение виртуальных стендов
построение виртуальных стендовYandex
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
Виртуальные машины в жизни разработчика
Виртуальные машины в жизни разработчикаВиртуальные машины в жизни разработчика
Виртуальные машины в жизни разработчикаAnton Zadorozhniy
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 

Tendances (19)

Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
 
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипенияАрхитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Running Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-VRunning Linux and Unix on Hyper-V
Running Linux and Unix on Hyper-V
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в Docker
 
Попасть в мишень
Попасть в мишеньПопасть в мишень
Попасть в мишень
 
Яндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовЯндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендов
 
построение виртуальных стендов
построение виртуальных стендовпостроение виртуальных стендов
построение виртуальных стендов
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Виртуальные машины в жизни разработчика
Виртуальные машины в жизни разработчикаВиртуальные машины в жизни разработчика
Виртуальные машины в жизни разработчика
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 

Similaire à Практический опыт применения виртуализации для web-систем

Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентацияPavel Odintsov
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаYandex
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...Minsk Linux User Group
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Ontico
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Ontico
 
Что нового в NOVA Microhypervisor
Что нового в NOVA MicrohypervisorЧто нового в NOVA Microhypervisor
Что нового в NOVA MicrohypervisorYandex
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsNikita Lipsky
 
Jouravski kickstart1
Jouravski kickstart1Jouravski kickstart1
Jouravski kickstart1kuchinskaya
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaNikita Lipsky
 
Solaris OS
Solaris OSSolaris OS
Solaris OSSSA KPI
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidAndrew Sovtsov
 
Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями AnsibleITCrowd Almaty
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStackYandex
 

Similaire à Практический опыт применения виртуализации для web-систем (20)

Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентация
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостинга
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Cobbler
CobblerCobbler
Cobbler
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
 
Что нового в NOVA Microhypervisor
Что нового в NOVA MicrohypervisorЧто нового в NOVA Microhypervisor
Что нового в NOVA Microhypervisor
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
 
Jouravski kickstart1
Jouravski kickstart1Jouravski kickstart1
Jouravski kickstart1
 
01 linux-course
01 linux-course01 linux-course
01 linux-course
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на Java
 
Solaris OS
Solaris OSSolaris OS
Solaris OS
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
 
Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями Ansible
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStack
 

Plus de Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017Alex Chistyakov
 

Plus de Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 

Практический опыт применения виртуализации для web-систем

  • 1. Практический опыт использования решений виртуализации в web-проектах Александр Чистяков bOombate http://alexclear.livejournal.com
  • 2. Докладчик? • Разработчик серверных приложений • Эксплуатационщик • DevOps • Архитектор серверных приложений • Просто хороший человек
  • 3. Аудитория? • Разработчики серверных приложений • Эксплуатационщики • DevOps’ы • Архитекторы серверных приложений • Просто хорошие люди
  • 4. Зачем нужна виртуализация? • Возможность создания качественно разных окружений • Возможность изоляции окружений • Возможность консолидации серверов • Слой абстракции между «голым железом» и платформой • Возможность автоматического развертывания и миграции
  • 5. Не будем усложнять • Windows-машины в Linux-окружении • Каждому разработчику – своя песочница • Один «железный» сервер на всех разработчиков • Возможность легко выполнить миграцию (апгрейд) • Возможность выполнить миграцию автоматически, возможность быстро развернуть еще одну ноду
  • 6. Типы виртуализации • Программная: – Эмуляция (Bochs, PearPC) – Динамическая трансляция (VMWare, VirtualBox) – Паравиртуализация (Xen) • Аппаратная виртуализация (Xen, KVM, VirtualBox, Hyper-V, VMWare) • Виртуализация уровня ОС: – LXC, OpenVZ, Virtuozzo – FreeBSD Jail
  • 7. Какой тип нужен нам? • А чего хотим добиться? • Больше возможностей – меньше производительность: – Попробуйте поставить Debian на Bochs • Аппаратная виртуализация для Windows на Linux • Уровня ОС (контейнерная) – для гомогенных сред (одно ядро на все инстансы) • Паравиртуализация
  • 8. Аппаратная виртуализация • Xen и производные • KVM • VirtualBox • Hyper-V • VMWare Player • VMWare ESX • VMWare ESXi
  • 9. Xen и производные • Xen исторически первая Open Source система виртуализации, начинался как паравиртуализатор • Отлично поддерживает ядро 2.6.18 и отлично поддерживался RedHat 5.x и производными • Платный Citrix XenServer • Между 3-ей и 4-й версией был большой перерыв, продукт перестал нормально поддерживаться многими дистрибутивами (отказ RedHat в пользу KVM)
  • 10. Немного личного опыта • Xen 3.X, CentOS 5.X • Настройка через virt-manager тривиальна – Если вы не настраиваете паравиртуализацию с ядром вне образа диска • “unaligned memory access” в логе на Dom0 – Решение проблемы методом черных очков (помогло) • Под большой нагрузкой не использовался • Никаких проблем не доставлял
  • 11. Паравиртуализация • Ядро для DomU не такое, как для Dom0, поэтому вариантов гест-систем больше • Можно располагать ядро вне файловой системы виртуального диска • Виртуальные диски можно подключать прямо как логические, что упрощает разметку • Amazon и другие так и делают
  • 12. Что еще хорошего? • Remus – механизм отказоустойчивости путем репликации системы в целом (в т.ч. состояния RAM) • Xen + DRBD: http://www.drbd.org/users-guide/ch- xen.html • Xen + DRBD + Heartbeat: http://old.nabble.com/DRBD- Xen-LVM2-Heartbeat-Ubuntu-Gutsy-HowTo- td17245190.html (я делал без LVM2 и без Ubuntu Gutsy, достаточно CentOS 6, например)
  • 13. Семейство VMWare • VMWare Player – невероятно интрузивное и неудобное решение (компилирует модули ядра, стартует какие- то сервисы и вообще ведет себя вызывающе) • VMWare ESX, VMWare ESXi – не знаю, не пробовал, но если стоит ознакомиться, то дайте знать
  • 14. VirtualBox • При определенной сноровке можно заставить его работать в headless режиме • А можно просто взять Vagrant (http://vagrantup.com) и сделать все с его помощью • Нужно только иметь в виду, что VirtualBox виртуализирует диск таким образом, что при вызове fsync() не происходит ничего – Некоторые приложения могут пострадать
  • 15. Hyper-V • Всего один график из Munin (в системе за это время не поменялось ничего, кроме апдейтов ядра): • Все еще хотите что-то хостить под Hyper-V? Удачи!
  • 16. KVM • Производится подразделением RedHat • Используется как базовая система виртуализации в CentOS 6 • Довольно давно код принят в ядро Linux • Виртуальные машины управляются через libvirtd • Хорошие новости на этом закончились • Да ты просто не умеешь ее готовить!
  • 17. Как готовить KVM • Для сетевой подсистемы всегда выбирайте bridge с реальным устройством, а не виртуальный ethernet • Для дисковой подсистемы лучше всего взять raw flat image либо block device целиком • Кэш диска выставьте в none для block device – Или в writeback для image, если вы смелый человек • Очень хорошо иметь RAID-контроллер с батарейкой
  • 18. Как готовить KVM – тюнинг ядра • Слева – host, справа - guest: • kernel .... nohz=off highres=off • Видел один раз на Хетцнере
  • 19. Все это не избавит вас от • [ 839.921196] INFO: task apache2:2444 blocked for more than 120 seconds. [ 839.921562] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. • Выглядит страшновато (к этому сообщению еще прилагается стекртрейс) • У одного европейского «облачного хостера» раз в неделю отказывал виртуальный диск в инстансе • Что же делать?
  • 20. Виртуализация уровня ОС? • Ядро одно и то же: – Файловая система разделяется между инстансами – Свободная память разделяется между всеми инстансами • Звучит заманчиво, потери производительности должны быть очень небольшими • Linux: – OpenVZ – LXC
  • 21. OpenVZ • Не входит в официальное ядро – Те же проблемы, что у Xen – есть только под stable ядра • Давно на рынке – Очень стабильно • Ориентировано на массовый хостинг – Ограничения по умолчанию установлены довольно жестко
  • 22. Личный опыт • Работает отлично при любых нагрузках – 4 млн. хитов в день в контейнере с apache2 • Надо только следить за /proc/user_beancounters • Есть тонкости при работе с IPsec • Хотите использовать Ubuntu 12.04 LTS в контейнере? Good luck! (но это проблемы Canonical, а не ваши?)
  • 23. LXC • Входит в официальное ядро – Нужны достаточно свежие ядра, в «серверных» дистрибутивах их пока нет • Пользовательская база пока довольно мала – Про стабильность на следующем слайде • Ориентировано на всех – Конфигурация стандартизована и не вызывает удивления у новичков, ограничения по умолчанию гораздо мягче
  • 24. LXC – личный опыт • Первые дни все работало прекрасно • Потом стали пропадать вещи: – ping есть, а git pull сделать нельзя – Иногда icmp ответы о том, что пакет очень велик – Роутинг до всех узлов есть, а до mxs.mail.ru нет • Что-то крепко сломано в сетевой подсистеме – Писал в рассылку разработчиков, но письмо даже не прошло модерацию – Нет проблем, мигрируем на OpenVZ
  • 25. А как роутить? • Если ситуация позволяет – static routes на подсети виртуальных машин на каждом хосте • Если нет – IPsec туннели между хост-машинами с роутингом подсетей виртуальных машин • IPsec: – Я использую racoon/setkey – iperf показывает 100Mbit/s, для моих задач достаточно
  • 26. IPsec и OpenVZ • Просто так не заработает, нужно тюнить параметры ядра на guest-машине (!) • /etc/sysctl.conf: net.ipv4.conf.venet0.disable_policy=1 net.ipv4.conf.venet0.disable_xfrm=1
  • 27. А как бэкапить? • Общий принцип: – Сделать снэпшот – Переписать снэпшот в другое место • Еще можно бэкапить guest-машину как обычную • Снэпшоты: – Уровня системы виртуализации – Уровня блочного устройства – Уровня файловой системы
  • 28. Снэпшоты • Уровня системы виртуализации – Я лично применял только в Hyper-V • Уровня блочного устройства – Снэпшот LVM со всеми его плюсами и минусами • Снэпшоты уровня FS: – Нужна CoW файловая система – Лишены недостатков LVM снэпшотов – Все было бы хорошо, но...
  • 29. LVM • Достоинства – Работают вне зависимости от типа вышележащей FS • Недостатки – Необходимо не забывать предварительно оставлять свободное место на LVM volume group – Потеря производительности – Снэпшот может переполниться – При увеличении одновременного числа снэпшотов проблемы линейно растут
  • 30. CoW FSes • ZFS – Давно в продакшн – Лицензионно несовместима с ядром Linux • BTRFS – Пока не доросла до «беты» – Нет fsck – Не рекомендуется к использованию на разделах с образами дисков виртуальных машин • HAMMER – Кто-нибудь в зале о ней слышал?
  • 31. ZFS и Linux • ZFS-FUSE – Работает в userspace – Довольно стабильна – Pool version 21 • ZFS on Linux (http://zfsonlinux.org) – Модуль ядра – POSIX layer появился сравнительно недавно – Pool version 28
  • 32. ZFS-FUSE vs ZFS on Linux • ZFS-FUSE: -a 86400 -e 3600 -v 160 -m 512 • Найдите на графике момент перехода от ZFS-FUSE к ZFS on Linux:
  • 33. Развитие ситуации • ZFS-FUSE практически мертва • ZFS on Linux у многих в продакшне уже сейчас • В том числе, и у меня, но на некритичных участках • BTRFS можно пытаться использовать для OpenVZ и LXC уже сейчас
  • 34. Выводы • На вкус и цвет все решения виртуализации разные – Есть и такие, которые хорошо работают под нагрузкой • При правильном использовании виртуализация может приносить большую пользу – А при неправильном доставлять большую головную боль • Универсального решения, по-прежнему, нет – Но есть наборы граничных условий, определящих применимость того или иного варианта
  • 36. Спасибо за внимание! • С вами был Александр Чистяков • http://alexclear.livejournal.com • alexclear@gmail.com • http://github.com/alexclear