Запуск множества виртуальных машин на одном хосте - PullRequest
2 голосов
/ 30 сентября 2008

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

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

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

Заранее благодарим за ваши идеи :) 1007 *

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

Ответы [ 16 ]

6 голосов
/ 30 сентября 2008

Есть три основных фронта, чтобы сделать их подходящими:

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

  2. маленьких гостей. попробуйте Ubuntu JeOS или покатайтесь самостоятельно с busybox

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

5 голосов
/ 30 сентября 2008

Пара проблем с этим ...

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

Удачи

3 голосов
/ 02 октября 2008

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

3 голосов
/ 02 октября 2008

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

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

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

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

2 голосов
/ 26 июня 2010

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

Я думаю, что попробую это через минуту: D

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

2 голосов
/ 30 сентября 2008

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

Проверьте немного о «Прозрачном общем доступе к страницам» в этой записи блога , и комментарии об этом здесь тоже.

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

1 голос
/ 02 октября 2008

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

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

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

1 голос
/ 30 сентября 2008

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

Загрузка процессора будет зависеть от приложений, но вы можете купить еще оперативной памяти!

0 голосов
/ 12 февраля 2016

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

0 голосов
/ 26 февраля 2009

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

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

Мой 2с.

...