Я хочу разработать программную систему, которая включает в себя ряд серверов, которые общаются друг с другом по сети. Он должен быть основан на Linux (желательно Ubuntu). Для связи он должен использовать сокеты TCP/IP.
Прежде чем покупать оборудование для этого, я хотел бы протестировать свой дизайн и код с помощью виртуальных машин.
Поэтому мой фактический вопрос: существует ли система виртуальных машин на базе Linux, которая позволит вам запускать несколько (виртуальных) серверов и связывать их друг с другом?
Это действительно так :) Я уверен, что это можно сделать с помощью Xen или KVM, но самое простое, что я нашел (если я правильно понял ваш вопрос), — это VirtualBox от Oracle. Обычно для загрузки доступны две версии: версия с открытым исходным кодом, которая обычно находится в репозиториях большинства основных дистрибутивов. (например sudo aptitude install virtualbox
, ), или вы можете добавить немного более новую проприетарную версию с веб-сайта VirtualBox (есть репозиторий, который легко настроить).
Вам потребуется настроить параметры сети как на каждой виртуальной машине, так и на вашем ПК/ноутбуке. Это процесс, состоящий из нескольких шагов, но не слишком сложный.
Не повторяя того, что другие уже обрисовали в Интернете, вот ссылка на достойное руководство: http://technology.amis.nl/2014/01/27/a-short-guide-to-networking-in-virtual-box -с-оракул-линукс-внутри/
Новая альтернатива, которая, кажется, набирает обороты, — это Docker , который позволяет вам создать «рецепт» виртуальной машины (например, использовать эту ОС, установить эти пакеты и при загрузке запустить эту команду) и быстро запустить ее из команды линия.
Преимущество заключается в том, что это не полноценная виртуальная машина, а это означает, что вы по-прежнему можете обмениваться некоторыми общими файлами с хостом без особых хлопот, связывая гостевые пути с путями хоста. Каждый образ содержит ядро Linux и базовую ОС и работает независимо друг от друга: вы можете создать один образ и загружать его несколько раз одновременно, это обеспечит их изоляцию.
Его довольно просто настроить, и он не мешает остальной части вашей системы.
Чтобы соединить несколько контейнеров, в официальной документации есть хороший учебник: Связывание контейнеров вместе .
Я никак не связан с Docker, кроме как как пользователь.
Как указывает ber444 , Google Cloud Platform теперь поддерживает Docker ! Таким образом, вы можете без проблем перенести свои локальные тесты в облако.
NWS