Можно ли распределить одну огромную виртуальную машину между несколькими физическими обычными серверами?

11

Можно ли разделить одну огромную виртуальную машину на несколько физических обычных серверов?

Вот наш вариант использования:

  • Нам нужно реализовать 32-процессорный сервер БД с 64 ГБ оперативной памяти.
  • У нас нет физического сервера такой мощности
  • У нас много серверов с меньшими ресурсами.

Есть ли технология или (лучше) продукт, который позволяет нам использовать эти серверы для создания виртуальной машины с необходимой мощностью? Скажем, можем ли мы объединить 8 физических 4-процессорных машин с 8 ГБ ОЗУ каждая в один 32-процессорный «логический блок» с 64 ГБ ОЗУ и настроить сервер Oracle, который использует всю эту емкость?

Перед публикацией этого вопроса мы читали похожие вопросы, но не нашли ответа.

Может быть, кто-то может дать нам подсказку сейчас?

user54614
источник
2
Это не ответ на ваш вопрос, но странно, что никто не советует смотреть на ограничения программного обеспечения. Если ваша компания разрабатывает приложения для бизнеса среднего бизнеса, мне кажется очевидным, что проблема заключается в ограничениях программного обеспечения, вероятно, архитектор и разработчики программного обеспечения не думали о базе данных с миллиардами записей или огромными временными таблицами или процедурами, подумайте об этом и создайте самотестирование и отчеты об ошибках для медленных запросов, потому что это способ решить проблему ... подумайте о пределе 3,3 ГБ в x86

Ответы:

7

Существует коммерческий продукт от ScaleMP под названием vSMP. Это позволяет объединять несколько систем x86 в один виртуальный экземпляр. Я никогда лично не пробовал это раньше, но я прошел через презентацию от них. Если я правильно помню, существуют определенные требования, чтобы это работало, и вам нужно получить дополнительное оборудование (Infiniband для быстрых межсоединений с малой задержкой). Это может стоить довольно копейки тоже!

ryanlim
источник
1
ScaleMP не эмулирует среду x86. Вы никогда не получите Windows или любую другую стандартную ОС x86 для работы в виртуальной среде. Вы. Поддерживаются только разные версии Linux, основанные на архитектуре типа SMP. И из этого типа архитектуры ... есть несколько вкусов. Даже бесплатные.
TheCompWiz
ОП не был конкретным в отношении других требований. Я только ответил, что я мог собрать из его / ее поста.
ryanlim
1
Это выглядит чертовски круто. Я подозреваю, что 32-ядерный процессор (возможно с 2x 16-ядерными чипами AMD) может быть дешевле, чем кластер с Infiniband, но мы идем. Это решение дает больше прав на хвастовство.
Том О'Коннор
9

Невозможно получить точно такую ​​же функциональность, как один 32-процессорный компьютер ... с несколькими отдельными серверами. Лучше всего взглянуть на кластеризацию или грид-компьютинг. Если все сделано правильно, вы можете получить сопоставимую производительность ... и более высокий уровень доступности. Многое из вашего вопроса также зависит от вашего типа "дБ". Microsoft SQL Server работает значительно иначе, чем MySQL или Oracle ... и масштабируемость также выполняется совершенно иначе.

В качестве альтернативы ... вы можете подумать о том, чтобы позволить кому-то сделать базу данных для вас ... например, использовать EC2 RDS ...

К сожалению, нет никакого способа объединить несколько физических серверов вместе, надеть на них vmware и получить уникальный сверхмощный виртуальный сервер.

TheCompWiz
источник
The Compomp, спасибо за ответ. Хорошо, если ответ зависит от моего типа базы данных, пусть это будет Oracle или Microsoft SQL Server. С этими исправлениями все еще невозможно? Да, мы знаем о EC2, но нам нужен именно Oracle или Microsoft SQL Server для тестирования проблем с программным продуктом, который мы поставляем для клиента ...
user54614
Кроме того, почему только vmware принять во внимание? Мы не против других гипервизоров ...
user54614
Возможность обхода нескольких серверов - ОГРОМНЫЙ кошмар логистики ... не говоря уже об отсутствии доступной пропускной способности между устройствами. Подумайте о том, насколько быстрым является процессор ... тогда все, что вам нужно будет сделать, это замедлит процесс ... то есть процессор -> шина -> PCI-мост -> сетевая карта -> кабель Ethernet -> сеть стек -> ... даже до того, как он достиг другого сервера? Вы не хотели бы ждать 1 секунду, чтобы иметь возможность добавить 1 + 1. Кластеры, как правило, могут делать это, потому что задачи назначаются в «Заданиях», и задание выдается вычислительному узлу, который выполняет все задачи в этом задании ...
TheCompWiz
... а затем отправляет ответы обратно на узел управления. Windows не делает. Не существует способа настроить виртуальную среду X86 (или X86_64), которая бы даже пыталась это сделать.
TheCompWiz
2
@ user54614 - Вы абсолютно не сможете повторить их сценарий, связав машины вместе. Я бы посоветовал поговорить с вашим клиентом и службой поддержки Oracle, чтобы точно определить и выявить проблемы.
Крис Торп
-1

«TheCompWiz» ответил на ваш вопрос с пользой.

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

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

Таким образом, ни один коммерческий поставщик гипервизора не допускает такой возможности. Это было опробовано в лаборатории. Никто не удосужился сделать из него продукт.

Чтобы еще раз подчеркнуть суть, посмотрите на кластеризацию для решения.

Джейк Ошинс
источник
Но что делать, если поставляемый нами программный продукт отлично работает для большинства клиентов, но не работает должным образом в среде огромного клиента, который запускает наше приложение на сервере Oracle с 32 процессорами и 64 ГБ ОЗУ. Мы хотим воспроизвести эту неудачу в нашей среде.
user54614
2
Я ничего не знаю о вашем программном обеспечении, но что происходит с 32 процессорами и 64 ГБ оперативной памяти, чего не происходит с 2 процессорами и 8 ГБ оперативной памяти? Если на этом уровне действительно что-то не так, то это проблема Oracle / OS / driver / IO / hardware.
gravyface
Вы никогда не получите гипервизор для обхода физических машин. Они по-прежнему ограничены физическим ядром машины. При этом ... Держу пари, вы могли бы построить архитектуру типа мэйнфреймов, похожую на архитектуру архаичных бегемотов давным-давно ... но вы никогда бы не запустили на ней ничего x86.
TheCompWiz
1
Ваш огромный клиент должен иметь второй экземпляр QA этого сервера базы данных монстра. Если у них этого нет, то это действительно их проблема. За 15 лет работы в сфере ИТ я никогда не видел, чтобы кто-либо из производителей программного обеспечения дублировал свою инфраструктуру (если только это не является частью контракта на обслуживание, в котором конкретно указывается это, а клиент платит за него). Особенно, когда эта инфраструктура эзотерична (хотя 32-ядерный 64-ГБ сервер может стоить от Dell около 22 тыс. Долл.).
rmalayter
Что насчет ScaleMP ( scalemp.com )?
user54614
-2

VMWare делает. Это называется DRS или Планировщик распределенных ресурсов. Позволяет объединить ресурсы 16 серверов. Затем вы можете распределить это общее количество в одной или нескольких виртуальных средах.

Рик Деттвайлер
источник
Нет, это совсем не то, что делает DRS. DRS позволяет одному компьютеру vMotion по всему кластеру равномерно загружаться между узлами хоста. Это никоим образом не дает доступ к нескольким хостам с одной виртуальной машины.
EEAA