Рубрика:
БИТ. Бизнес & Информационные технологии /
Виртуализация
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ОКСАНА КУРЫШЕВА, инженер, RHCSA. Работает в НЦПР, участвует в проектах по виртуализации Red Hat
Виртуализация бизнес-критичных систем на базе RHEL6
Почти в каждой организации часть задач работает в виртуальной среде. Но когда речь заходит о критичных для бизнеса приложениях, обычно их предпочитают оставить работать «как есть», то есть «на чистом железе». Почему? Просто из соображений «а вдруг оно как-нибудь не так себя поведет» – всем хочется спать спокойно
Откуда берутся эти сомнения? Ведь сколько говорили, что приложение вообще не отличает виртуальную машину от физического сервера. В серьезных системах виртуализации разных вендоров есть механизмы обеспечения отказоустойчивости. Но нет – все равно виртуализировать критичные задачи как-то неуютно.
Если разобраться в причинах, то выясняется, что большинство сомнений вызваны в основном управлением ресурсами в виртуальных средах. Всегда ли критичная система в виртуальной среде получит нужные ей процессорное время, память, пропускную способность сети и диска? Что случится, если виртуальных машин много, и ресурсов хотят они все?
Навскидку совершенно неочевидно, насколько можно в такой ситуации гарантировать качество обслуживания (quality of service, QoS) для нагруженных критичных виртуальных машин.
Однако перенести в виртуальную среду, в том числе критичные и нагруженные системы, вполне реально. Это мы проверим на базе Red Hat Enterprise Linux 6 и входящего в его состав гипервизора KVM. Необходимый нам для решения задачи инструмент называется Cgroups [1, 3].
Он позволяет тонко управлять всеми основными ресурсами системы – процессорным временем, оперативной памятью, пропускной способностью дисков и сети. За счет этого становится возможным обеспечить необходимое качество обслуживания для критичных задач.
Модельный ночной кошмар системного администратора представлен на рис. 1.
Рисунок 1. Виртуальные машины на базе KVM. Результаты без использования Cgroups. Есть риск, что критичная задача не получит нужных ресурсов из-за пересечения со второстепенной
Существует критичная для бизнеса система, которая постоянно анализирует достаточно большие объемы данных и питает ими другие приложения. Если она работает медленно, начинается цепная реакция, и постепенно рушатся смежные системы.
Система развернута в виртуальной машине. Виртуальная машина постоянно обращается к диску, именно от скорости чтения данных в первую очередь зависит качество работы всей системы. Что случится, если виртуальная машина, в которой работает наша критичная система, случайно окажется на одном физическом сервере с другой виртуальной машиной, в которой работает система второстепенная, но ничуть не менее требовательная к диску?
Точный ответ зависит от многих нюансов, но скорее всего ничего хорошего не получится. На рис.1 показана ситуация, когда в какой-то момент второстепенная виртуальная машина начинает активно обращаться к диску, в результате чего производительность критичной системы заметно страдает. И страшен даже не сам факт, что она вообще уменьшается, а то, что она уменьшается непредсказуемо.
На рис. 2 показана та же система, что в первом примере, и под той же нагрузкой, но уже после настройки Cgroups. Видно, что теперь второстепенная виртуальная машина значительно ограничена в доступных ресурсах, ее активность не вызывает резкого падения производительности критичной системы.
Разумеется, данный пример весьма ограничен – в нем присутствует всего две машины и рассматривается только пропускная способность диска (частое «узкое место» и самый неочевидный в управлении ресурс).
Рисунок 2. Виртуальные машины на базе KVM. Результаты с использованием Cgroups. Тонкое управление ресурсами позволяет обеспечить необходимое качество обслуживания
Кроме того, для гибкого управления ресурсами в виртуальной системе большого масштаба необходимо учитывать, помимо Cgroups, и другие механизмы, такие как динамическое изменение объема оперативной памяти (ballooning) и возможность живой миграции виртуальных машин между физическими серверами для балансировки нагрузки.
Более полная картина, как Cgroups работают в сочетании с другими технологиями, будет рассмотрена в последующих статьях.
Тем не менее уже сейчас основных источников информации по настройке [2, 4, 5] должно вполне хватить для начала работы с Cgroups и для повторения приведенных результатов тестов.
Дополнительно стоит отметить, что Cgroups не специфичны именно для задач виртуализации и могут применяться для управления ресурсами любых групп процессов в системе.
- Cgroups в Википедии (на английском) – http://en.wikipedia.org/wiki/Cgroups.
- Полное руководство по управлению ресурсами с помощью Cgroups в RHEL6 (на английском) – http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide.
- Cgroups в документации ядра (на английском) – http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt.
- Краткая инструкция по началу работы с Cgroups (на русском) – http://www.ossportal.ru/technologies/kvm/blogs/422.
- Цикл статей о виртуализации на базе KVM и управлении ресурсами в ней (на русском) – http://www.ossportal.ru/technologies/kvm.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|