1 / 36

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

Практический опыт использования решений виртуализации в web- проектах. Александр Чистяков bOombate http://alexclear.livejournal.com. Докладчик ?. Разработчик серверных приложений Эксплуатационщик DevOps Архитектор серверных приложений Просто хороший человек. Аудитория ?.

mura
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • VMWareESXi

  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. Семейство WMWare • VMWare Player – невероятно интрузивное и неудобное решение (компилирует модули ядра, стартует какие-то сервисы и вообще ведет себя вызывающе) • VMWare ESX, VMWareESXi– не знаю, не пробовал, но если стоит ознакомиться, то дайте знать

  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. CoWFSes • 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 практически мертва • ZFSon Linux у многих в продакшне уже сейчас • В том числе, и у меня, но на некритичных участках • BTRFS можно пытаться использовать для OpenVZи LXC уже сейчас

  34. Выводы • На вкус и цвет все решения виртуализации разные • Есть и такие, которые хорошо работают под нагрузкой • При правильном использовании виртуализация может приносить большую пользу • А при неправильном доставлять большую головную боль • Универсального решения, по-прежнему, нет • Но есть наборы граничных условий, определящих применимость того или иного варианта

  35. Вопросы?

  36. Спасибо за внимание! • С вами был Александр Чистяков • http://alexclear.livejournal.com • alexclear@gmail.com • http://github.com/alexclear

More Related