2008-09-30 4 views
2

Мне нужно запустить относительно большое количество виртуальных машин на относительно небольшом числе физических хостов. Каждая виртуальная машина не делает ничего - каждый должен только выполнить по существу одну базовую услугу сети - подумайте о SMTP или тому подобное. Кроме того, нагрузка на каждую из них будет очень легкой.Запуск многих виртуальных машин на одном хосте

К сожалению, цифры являются примерно 100 виртуальными машинами на 5 физических хостах. Каждый хост достаточно приличный - ядро ​​2 с 2 гигабайтами бара и 1 тб диском. Тем не менее, я знаю, что просто беру vmware-образ ubuntu и бросая на эту машину, не получаю меня где-нибудь около 100 экземпляров и будет чем-то ближе к 20.

Итак, есть ли надежда на это соотношение изображений к хостам? Кроме того, какая реализация виртуальной машины была бы наиболее подходящей для этой цели, то есть имела бы эффективное общее использование ресурсов? В основном мы используем vmware здесь, но если есть существенное преимущество в производительности, которое можно получить, переключившись на Xen или тому подобное, я уверен, что мы это рассмотрим.

Заранее спасибо за ваши идеи :)

Примечание: Мы закончили с использованием OpenVZ, и она работала достаточно хорошо. Параметры по умолчанию для шаблона ubuntu позволяют нам запускать около 40 экземпляров на машину.

ответ

6

есть три главных фронтов, чтобы сделать эти припадок:

  1. низкие накладные расходы. OpenVZ, Vserver, chroot, были бы идеальными, если это применимо. если вам действительно нужен каждый экземпляр, это настоящая виртуальная машина с собственным ядром, попробуйте KVM/Xen вместо VMWare. может быть менее зрелым, но у вас будет гораздо больше гибкости.

  2. меньшие гости. попробуйте Ubuntu JeOS или сверните свой собственный с помощью busybox

  3. делитесь как можно большим количеством гостей. попробуйте разделение одного R/O изображение со всеми ОС, а также смонтировать небольшой R/W изображение для каждого гостя на/вар,/дома,/и т.д., и т.д.

1

Если вы можете сгладить гостя достаточно, вы, вероятно, сможете это сделать, нет X, начались минимальные службы и т. Д. Посмотрите на slackware или ubuntu server. Xen кажется популярным среди веб-хостинга, поэтому, возможно, стоит посмотреть.

Использование ЦП будет зависеть от приложений, но вы можете захотеть купить еще один барабан!

+3

Я считаю, что мы можем пойти с любым производным Linux. Кроме gentoo. Я хочу, чтобы эти машины были настроены до конца века;) – Voltaire 2008-09-30 18:19:55

+0

О, чтобы проголосовать за комментарии – Cruachan 2009-02-26 10:14:07

0

Если вы делаете математику, вы получаете в среднем 100 МБ оперативной памяти для каждой машины. Это немного. Накладные расходы для виртуальной машины довольно большие, в каждом случае необходимо запустить полную ОС.

Либо вы используете какой-либо действительно небольшой размер os (http://www.damnsmalllinux.org/?), И тратите время, чтобы снять его еще больше, или вы получите больше машин.

Машины, являющиеся такими дешевыми, я хотел бы перейти на 64-битную ОС с большим количеством бара.

0

VMWare имеет классный вариант, где вы можете «объединить» группу физических машин, и он автоматически переместит виртуальные машины на любое меньшее оборудование, не прерывая работу виртуальной машины.

Rather advertisey link.

0

Вы ограниченный в VMWare? Вы рассмотрели Operating system-level virtualization?. Вы получите больше виртуальных машин с меньшими затратами, учитывая, что каждая виртуальная машина может запускать одно и то же ядро.

+0

нет - Я не верю, что я ограничен vmware. Что бы ни получилось. – Voltaire 2008-09-30 18:27:57

+0

Собственно - им не уверен. У нас могут быть какие-то особые требования к каждому изображению, которые мешают нам делать что-то вроде запуска кучки FreeBSD. – Voltaire 2008-09-30 18:37:08

+0

Ну, если бы вы могли настроить одно ядро ​​Linux, поддерживающее все ваши различные приложения, то Virtuozo и OpenVZ могли бы упаковать намного больше виртуальных машин в один физический узел. Удачи! – 2008-09-30 20:54:19

0

Несколько мыслей ...

1- Как указывалось другими, арифметика память не работает, то вам нужно больше оперативной памяти.

2- В зависимости от службы вы можете найти предварительно настроенные виртуальные машины. Например, Astaro имеет установку виртуальной машины для бесплатного программного обеспечения брандмауэра. Вы также можете найти очень маленький дистрибутив linux, который вы можете адаптировать.

3- Может быть, я что-то упустил, но похоже, что Ubuntu уже довольно близко ... 20 экземпляров на машину на 5 машинах получают 100 экземпляров, которые вам нужны. Тем не менее, нет большого запаса для будущего роста ...

Позаботьтесь, удачи.

+0

больше похож на 4-5 изображений на хост, всего 20 изображений. – Voltaire 2008-09-30 18:38:14

5

Несколько проблем с этим ...

  1. Для сервера Vmware вам действительно нужно аппаратное обеспечение сервера, если это не только для тестирования.
  2. Пойдите с решением для виртуализации, которое является голым уровнем, таким как Xen Server, или VMware ESX или ESXi (бесплатно) или Hyper-V, который не является голым, но ближе к производительности.
  3. Для 20-1 вам потребуется больше оперативной памяти. Математика не складывается. Минимальным функциональным машинам требуется 512, если только это не полностью лишенный linux, который должен иметь не менее 256. 20x256 = 5gb + 5-10% накладных расходов. На самом деле это не произойдет.
  4. Для 20-1 вам понадобится больше процессора. Каждая машина будет иметь vCPU. общий на ядре 2 означает, что 10-1 на процессор. нехорошо. Мы запускаем почти 20 на двухъядерном процессоре Dell 1950, 16 ГБ. Прекрасно работает.
  5. Что бы вы ни выбрали, вы будете переназначать память. Не совсем уверен, какие из вас позволяют. Vmware будет, но будет показывать предупреждения.
  6. Я слышал, но у меня нет доказательств того, что XenServer будет предлагать преимущества производительности, но никто не претендует более чем на 10-20%.

Успехов

2

Вы бы лучше наутек VMware ESX/ESXi, так как у них есть функция слияния памяти. Он в основном использует одинаковые страницы памяти и использует их среди нескольких гостей, поэтому, если у вас работает много одинаковых гостей, вы сможете получить гораздо больше на своем хосте, чем на других виртуальных машинах.

Ознакомиться с «Прозрачным разделением страниц» в this blog entry и прокомментировать об этом here.

Очевидно, что вы все еще сдавливая 20 гостей на хозяин и только 2Gb RAM на каждый, но если вы удалите все посторонних услуг и приложения, а также построить 1 гость образом и клонировать его перед установкой специализированного приложения на каждом , вы можете просто уйти с ним, тем более, что ссылка VMware показывает 4Gb хост, на котором 40 гостей!

3

Вам действительно нужны 100 полнофункциональных операционных систем?

Почему бы не принять подход к использованию веб-серверов уже? Я имею в виду виртуальные веб-серверы/хосты.

Например, установите Apache HTTPD на один физический сервер, на котором размещено много виртуальных серверов, используя один файл конфигурации. Кроме того, вам потребуется настроить DNS и/или многие виртуальные сетевые интерфейсы (eth0: 0, eth0: 1, ..., eth0: n) с разными IP-адресами.

Это должно сработать, если вам действительно нужны только несколько служб, подверженных действию в мире, и нагрузка невелика.

1

Есть ли причина, по которой каждый экземпляр сетевой службы должен быть разделен на собственные виртуальные машины? Если вам не нужно изолировать пользователей друг от друга, но вам нужно изолировать процессы и трафик, вам, вероятно, будет лучше использовать только пять серверов как есть и запустить отдельные процессы для каждого экземпляра. Каждый экземпляр будет связан с отдельным виртуальным интерфейсом.

Например, настройте виртуальный интерфейс и назначьте ему IP-адрес. Создайте файл httpd.conf и/или файл sendmail.cf для экземпляра, который вы хотите создать. В файле конфигурации укажите, что демон должен быть привязан к виртуальному интерфейсу (и только к одному). Запустите демон.

Повторите для каждого экземпляра. У вас будет много запущенных процессов (сотни, если не тысячи), общая сумма из них будет использовать меньше памяти, чем десятки виртуальных машин. Кроме того, ваша ОС сможет обменивать неиспользуемых на диск.

3

Другая возможность - использовать легкий дистрибутив Linux, который может работать в очень малых объемах памяти. Что-то вроде DamnSmallLinux или вариации на DDWRT. Они могут работать всего в 16 Мбайт памяти, что позволяет вам запускать 20 или более на одной машине.

0

Я не знаю, возможно ли это, но как насчет запуска каждой службы в среде chroot? Возможно, вы могли бы сэкономить дисковое пространство, жестко связав необходимые файлы библиотеки, чтобы создать каждую файловую систему chroot.

0

Еще одна проблема с запуском каждой службы в своей собственной виртуальной машине заключается в том, что всем им будет свой собственный IP-адрес. 100 IP-адресов не могут быть проблемой во внутренней сети (например, настройка 172/8 или 10/8), но если они являются частью вашего класса A (предположим, что у вас много публики), вы закончите работу быстро.

И, как спросили другие, почему каждая служба должна быть собственной VM? Многие из них должны быть легко способны работать на одном хосте.

0

Если это что-то, что можно сделать на уровне приложения - я бы пошел без виртуализации. Вы можете легко запускать несколько экземпляров своего приложения на разных номерах портов, даже разные IP-адреса с IP-сглаживанием. Таким образом, вы можете легко запустить более 20 копий на каждом из своих ящиков. Черт, вы могли бы сделать все с половиной вашего оборудования.

Виртуализация - это не решение всего. :)

My 2c.

2

У меня есть одна машина quadcore с полным рабочим столом и 9 виртуальными машинами. так как это тестовая машина, я использую всех видов гостей. лучше всего использовать ram-сервер, например debian-kfreebsd, и крошечный базовый Linux. крошечный ядро ​​linux использует 10M RAM, ничего не делая. добавьте пару сервисов, и это может быть 32M, поэтому я могу запустить 32 vm в пределах 1 ГБ оперативной памяти! у вас есть 2 ГБ, поэтому можно сказать, что вы можете запускать 48 машин, включая гипервизор и накладные расходы (я использую kvm.), поэтому с 5 машинами мы будем до 240 машин: D

Я думаю, что я собираюсь попробовать что в одно мгновение: D

кстати.вы сказали, что у vm есть легкая нагрузка, поэтому я не рассчитывал на cpuload или diskload. и эти цифры имеют точно 0 избыточность.

-2

Облако литейное. Я ничего не знаю о виртуальных машинах по сравнению с кем-либо, кто, возможно, отправил ответ, но из того, что я понимаю, если у вас есть хост, виртуальная машина на этом хосте, а затем Cloud Foundry на этой виртуальной машине, вы можете легко создать базу Secondary VM и легко реплицировать и настраивать все ваши сервисы в пределах этого Вторичного набора VM при одновременном сохранении аппаратного обеспечения. Я не знаю, будет ли это работать точно, но из того, что я понимаю, это будет один из самых минимальных подходов, и это подход с двумя корпусами, который уменьшит возможный риск повреждения главной машины.