Несколько виртуальных процессоров или несколько идентичных виртуальных машин, что лучше?

Я планирую обновить один из наших серверов, 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

  • Время простоя при обслуживании / модернизации
  • Слишком большое масштабирование может вызвать проблемы с производительностью в виртуальной машине.
  • По-настоящему не масштабируется.

Итак, у обоих есть свои преимущества и недостатки, и я большой поклонник горизонтального масштабирования, но вот что я бы порекомендовал вам:

  1. Масштабировать вертикально до определенной точки (я доберусь до этой определенной точки через минуту).
  2. Сделайте свою домашнюю работу о том, что это будет стоить времени и денег, чтобы идти горизонтально.
  3. Дайте себе достаточно времени, чтобы протестировать решение для горизонтального масштабирования.
  4. Когда вы достигли точки, когда пришло время масштабировать по горизонтали, вы можете уменьшить свой вертикально масштабированный сервер, сделать несколько клонов, отбросить их за уже настроенный балансировщик нагрузки и смотреть, как он качается.

Итак, что это за точка вертикального масштабирования?

Это зависит от вашего оборудования.

Начиная с 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/

Полагаю, я подведу итог, сказав, что процессор никогда не был для меня проблемой, если только вы не переподписываете процессор на своем хосте. Вместо этого память, как правило, является виновником. Раздувание / замена памяти - очень заметная проблема с производительностью.

Удачи!

Другие вопросы по тегам