Простите меня, если я использую любой из этих терминов неправильно.
Мне интересно, есть ли какое-нибудь программное обеспечение, которое позволило бы моим двум "соединить" два компьютера вместе так, чтобы приложение, не знающее кластера, могло использовать их объединенные вычислительные ресурсы? Под «кластером без ведома» я подразумеваю приложение, которое не предназначено для совместной работы нескольких служб. Насколько я понимаю, кластеризация обеспечивается конкретным приложением благодаря его архитектуре, так что обмен сообщениями с несколькими экземплярами приложения координирует совместное использование работы. Вместо этого я ищу что-то, что позволяет кластеризовать на уровне ОС или виртуализации, чтобы любое приложение можно было по существу кластеризовать.
В противном случае меня также интересует следующий сценарий: у нас есть 3 разных приложения, которые мы назовем A, B и C. У нас есть 2 одноядерных компьютера. В любой момент времени можно сказать, что любая комбинация этих приложений будет загружать процессор. В случаях, когда только 2 из этих приложений очень активны, переместите одно из них на другой сервер. В двух словах, своего рода динамическая автоматическая перетасовка загрузки приложения.
Я слышал о виртуальных машинах, которые можно переносить на физические машины во время работы, но мне интересно, можно ли это сделать автоматически в ответ на активность ЦП приложения или виртуальной машины?
Вы можете виртуализировать весь образ ОС и запускать свои приложения в этих различных виртуализированных ОС, а также перемещать эти ОС в соответствии с вашими нагрузками. Это модель ESX / Virtualization. Вероятно, это можно проследить до ОС мэйнфреймов IBM, где они виртуализировали машину вместо того, чтобы создавать операционную систему, которая могла бы запускать несколько программ одновременно.
Миграция оборудования на оборудование не очень быстрая, и вы собираетесь сжечь много накладных расходов на такие вещи, как память ОС на каждом виртуальном экземпляре.
Другой вариант - использовать что-то, что представляет один образ ОС для клиентских программ, но фактически работает на множестве компьютеров одновременно. Пример этой модели: Mosix. Mosix расширяет Linux таким образом, что в некоторых ситуациях работающая программа может быть перемещена с одного устройства на другое. Сама программа этого не понимает (точно так же, как ее обычно не волнует, перемещается ли она с одного процессора на другой на обычном компьютере с двумя процессорами). С этим будут некоторые накладные расходы, но, возможно, на это стоит обратить внимание.
Если вы устанавливаете каждое приложение на другую виртуальную машину, то да, его можно переносить в реальном времени с использованием любой данной технологии виртуальных машин корпоративного уровня.
кластеризация для некластеризованного программного обеспечения возможна, если вы ищете отказоустойчивые кластеры. Либо используйте виртуальную машину и, если хост умирает, перенесите виртуальную машину на другой хост, либо используйте программное обеспечение, такое как XOsoft WANsync, NeverFail, DoubleTake и т. Д.
совместное использование ресурсов немного сложнее, и программное обеспечение, как правило, должно учитывать кластер, более того - оно должно работать в кластерах с балансировкой нагрузки, а не только при аварийном переключении.
Поскольку MOSIX, похоже, ассоциируется с MPI, кажется уместным упомянуть, что существовала конкурирующая технология под названием PVM (параллельная виртуальная машина). Может быть полезно изучить, существует ли какая-либо ОС для кластеризации типа MOSIX, разработанная также на основе PVM. Я использовал PVM для параллельного выполнения задач C ++, используя несколько серверов Linux в качестве одного кластерного HW. Например, выполнение SQL-запросов к огромным строкам СУБД может быть разделено на разделы.
Помимо обеспечения интерфейса передачи сообщений, PVM делает сетевое взаимодействие прозрачным и поддерживает гибкие параллельные вычисления в гетерогенных кластерных системах.
Если вы используете HW коммутаторов Myrinet, можно использовать оптимизированную версию PVM; видеть http://www.huaxiaspace.net/research/wed930.pdf.
Я видел несколько слайдов, подразумевающих, что Mosix может использоваться с технологией MPI или PVM, но не уверен.