Несколько виртуальных процессоров или несколько идентичных виртуальных машин, что лучше?
Я планирую обновить один из наших серверов, 8-ядерный сервер, на котором установлен VMware Server 2. Виртуальные машины, на которых он работает, - это, в основном, веб-серверы, серверы файлов и серверы электронной почты; в частности, на нем работают три веб-сервера, 2 почтовых / файловых сервера и несколько серверов Jabber/XMPP.
Когда мы изначально настраивали эту машину, у нас были два веб-сервера, настроенные с двумя виртуальными ЦП. У нас были очень серьезные проблемы с производительностью. В то время мы работали только на 3 виртуальных машинах с 5 виртуальными ЦП. Мы также использовали VMware Server 1 и RAID1. Сейчас мы обновили RAID10, и я бы никогда не подумал о меньшем!:-)
На новом сервере будет установлен VMware ESXi вместо VMware Server. Мы рассматриваем либо другую 8-ядерную машину с более быстрыми процессорами, либо 16- или 32-ядерный сервер. Я хочу убедиться, что я избегаю проблем, которые у нас были раньше.
Поскольку раньше у меня были такие проблемы с несколькими виртуальными ЦП, я планировал заменить виртуальную машину основного веб-сервера несколькими идентичными виртуальными машинами веб-сервера (2–4), каждая с одним виртуальным ЦП, обслуживая содержимое из общего ресурса NFS, и поместить их в загрузку. сбалансированная конфигурация Так что я бы в основном заменил одну ВМ как минимум на 4: 2 виртуальных машины небольшого веб-сервера, ВМ файлового сервера и ВМ с балансировкой нагрузки. Мой план здесь двоякий: во-первых, я могу избежать любых многочисленных обращений к vCPU, которые я видел ранее, и, во-вторых, я могу порождать новые виртуальные машины веб-сервера для обработки увеличенной нагрузки.
Обратите внимание, что я понимаю, что не получаю всех преимуществ от балансировки нагрузки, потому что у меня все еще есть единственная точка отказа.
Это хороший план или он не нужен? Может ли VMware ESXi обрабатывать несколько виртуальных ЦП лучше, чем VMware Server 1 три года назад? Что будет работать лучше: одна большая виртуальная машина веб-сервера с 2–4 виртуальными ЦП или 4 виртуальных машины с одним виртуальным ЦП в конфигурации с балансировкой нагрузки?
2 ответа
Может ли VMware ESXi обрабатывать несколько виртуальных ЦП лучше, чем VMware Server 1 три года назад?
Да, это полностью отдельные линейки продуктов, и ESXi может очень хорошо справляться с несколькими виртуальными ЦП. Сейчас я запускаю ферму vmware с 5 узлами, на каждой коробке которой расположено несколько машин, каждый с 1, 2, а в некоторых случаях и 4 процессорами по мере необходимости, и это действительно очень хорошо работает.
Что будет работать лучше: одна большая виртуальная машина веб-сервера с 2–4 виртуальными ЦП или 4 виртуальных машины с одним виртуальным ЦП в конфигурации с балансировкой нагрузки?
Это не вопрос VMWare, а вопрос тестирования приложений / веб-сайтов. VMWare (или любая другая современная виртуальная машина без железа) может работать в любом случае - может быть дорого иметь множество виртуальных ЦП, подключенных к одному гостю, но это может быть компенсировано затратами на ресурсы при работе нескольких гостей и проблемами с производительностью (или В этом случае ваше веб-приложение может реализовать более распределенный подход.
Что касается последнего вопроса, то это действительно вопрос тестирования и архитектурных предпочтений, а не единственно верного способа, но мое общее мнение состоит в том, что если вы можете легко распределить приложение по нескольким виртуальным машинам, лучше создать несколько небольших виртуальных машин. чем один большой. Предоставляет вам больше гибкости и повышает производительность в долгосрочной перспективе, так как вы можете изменить положение дел, если это необходимо. Другими словами, масштабирование наружу, а не вверх
С физическими машинами я думаю, что мы думаем о том, чтобы масштабировать вверх, вкладывая как можно больше в один "экземпляр" ОС, чтобы получить максимальную выгоду от стоимости лицензии и аппаратного обеспечения, но с виртуальными машинами эти уравнения немного меняются - если вы может получить более одного экземпляра виртуальной ОС по цене лицензии, тогда это может изменить способ проектирования инфраструктуры вашего сервера.
редактировать
http://blog.peacon.co.uk/understanding-the-vcpu/ - статья, упомянутая Иэйном при обсуждении этого вопроса в чате, в которой подробно объясняется, почему важно учитывать распределение vCPU при создании виртуальных машин.
Я могу решить этот вопрос несколькими способами, но начну с горизонтального и вертикального масштабирования.
Горизонтальное масштабирование
Pros
- Может масштабироваться очень большой
- Может масштабироваться между хостами (т.е. кластером VMware)
- Отказоустойчивой
- Низкий / Нет простоя во время обслуживания
Cons
- Больше накладных расходов от виртуальных машин и балансировщиков нагрузки
- Больше обслуживания / управления (например, исправления, сертификаты SSL)
- Больше управления версиями веб-сайтов на разных веб-серверах
- Дополнительное тестирование и разработка могут потребоваться для веб-сайта за балансировщиком нагрузки
- Лицензирование?
Вертикальное масштабирование
Pros
- Легче масштабируется (просто добавьте другой vCPU или два, или больше памяти)
- Только один веб-сервер для управления, лицензии и т. Д.
Cons
- Время простоя при обслуживании / модернизации
- Слишком большое масштабирование может вызвать проблемы с производительностью в виртуальной машине.
- По-настоящему не масштабируется.
Итак, у обоих есть свои преимущества и недостатки, и я большой поклонник горизонтального масштабирования, но вот что я бы порекомендовал вам:
- Масштабировать вертикально до определенной точки (я доберусь до этой определенной точки через минуту).
- Сделайте свою домашнюю работу о том, что это будет стоить времени и денег, чтобы идти горизонтально.
- Дайте себе достаточно времени, чтобы протестировать решение для горизонтального масштабирования.
- Когда вы достигли точки, когда пришло время масштабировать по горизонтали, вы можете уменьшить свой вертикально масштабированный сервер, сделать несколько клонов, отбросить их за уже настроенный балансировщик нагрузки и смотреть, как он качается.
Итак, что это за точка вертикального масштабирования?
Это зависит от вашего оборудования.
Начиная с ESX 2.x VMware многое сделал для планирования vCPU, и есть больше возможностей для вертикального роста. Сколько на самом деле зависит от процессоров, которые вы получаете.
В настоящее время для определения размеров виртуальных машин требуется понимание NUMA (неравномерного доступа к памяти. По сути, вы не хотите, чтобы виртуальная машина была больше, чем ваш узел NUMA процессоров. Вот несколько ссылок, которые помогут вам в этой области:
http://frankdenneman.nl/2010/02/sizing-vms-and-numa-nodes/
http://frankdenneman.nl/2010/09/esx-4-1-numa-scheduling/
http://frankdenneman.nl/2011/01/amd-magny-cours-and-esx/
Полагаю, я подведу итог, сказав, что процессор никогда не был для меня проблемой, если только вы не переподписываете процессор на своем хосте. Вместо этого память, как правило, является виновником. Раздувание / замена памяти - очень заметная проблема с производительностью.
Удачи!