Назад | Перейти на главную страницу

Перенаправление HTTP-запросов к виртуальным машинам за виртуальной сетью

Я пытаюсь настроить хост виртуальной машины (в настоящее время работает ubuntu + KVM), на котором будет размещено несколько виртуальных машин для разных приложений. Например, у нас есть вики, работающая на одной виртуальной машине, и веб-приложение, работающее на другой.

     Host
     /  \ 
    VM1 VM2

Внутри виртуальные машины находятся в собственной виртуальной сети со своими IP-адресами, однако внешне существует только один IP-адрес, который является IP-адресом хоста.

В нашей сети настроен домен, который указывает на IP-адрес хоста, и я могу настроить iprule для перенаправления трафика, предназначенного для хоста, непосредственно на одну из виртуальных машин. Однако, чтобы сделать обе виртуальные машины доступными для внешнего мира, мне нужно каким-то образом пересылать запросы на основе URL-адреса.

В идеале я бы хотел пересылать запросы по субдоменам, например.

http://vm1.host/ -> host -> VM1
http://vm2.host/ -> host -> VM2

но альтернативно по пути URL:

http://host/vm1 -> host -> VM1
http://host/vm2 -> host -> VM2

Я уже установил Apache на хост-машине. Какие правила пересылки / перенаправления / псевдонима / обратного проксирования мне понадобятся, чтобы такая настройка сети работала? Есть ли что-нибудь еще, необходимое для обработки поддоменов?

Вы обслуживаете какие-либо веб-страницы от самого Хоста? Если нет, и все веб-данные находятся на VM1 и VM2, то, вероятно, Apache на хосте - не лучшее решение. Скорее всего вам следует использовать что-то вроде haproxy или Кальмар на хосте для пересылки запросов к Apache, работающему на VM1 и 2

Я думаю, что использование Apache на хосте - это нормально. Это в основном та же ситуация, что и это сообщение serverfault, вам нужен какой-то обратный прокси.

У меня несколько похожая среда, в которой мне нужно пересылать данные с одного хоста на другой, поэтому я использую Apache mod_proxy. http://httpd.apache.org/docs/2.2/mod/mod_proxy.html Надеюсь, это поможет, вы также можете использовать виртуальный хост http://httpd.apache.org/docs/2.2/vhosts/