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