Я ищу способ распределить вычислительные задания (в основном, растеризацию) между несколькими простаивающими машинами в сети. На серверах сейчас работает Debian 6.
Большая часть работы, которую необходимо выполнить, - это стандартная работа из командной строки с некоторым рендерингом GhostScript. Поскольку рендеринг может занять очень много времени только с одним процессором, я хотел бы разделить работу на множество более мелких частей и попросить простаивающие машины в сети помочь в работе.
Вот примерный рабочий процесс:
Я знаю о планировщиках вакансий, но, поскольку это новая территория для меня, я даже не знаю, какие поисковые запросы использовать в Google.
Итак, я был бы признателен за любые указатели и предложения. Было бы идеально иметь децентрализованную структуру, чтобы избежать единой точки отказа для всех машин.
Я не уверен, если OpenSSI помог бы вам, но это сразу пришло мне в голову. Он объединяет несколько серверов как единый образ системы, который с точки зрения администратора представляет собой всего лишь один сервер. Думайте об этом как о SMP-сервере, но обязательно имеющем несколько ядер на одном сервере, а вместо этого на нескольких серверах.
OpenSSI может автоматически распределять нагрузку между кластером и запускать вновь запущенные процессы на наименее загруженном узле (или самом быстром узле). Он также может автоматически переносить текущие запущенные процессы с одного узла на другой, если считает это полезным. Конечно, все это также можно сделать вручную с помощью утилит командной строки.
Если вам не нужен такой подход на уровне ядра к вашей проблеме или OpenSSI не работает для вас иначе, есть Крутящий момент который выполняет это планирование на уровне приложения.