splincodewd
@splincodewd
Developer

Как на одной linux-машине запустить несколько сервисов, но так, чтобы каждый сервис имел уникальный ip?

День добрый, у меня есть задача и ее постановка звучит так:
- есть машина с Ubuntu Server на борту
- на ней мы подняли Upsource, Youtrack, TeamCity, Gitlab

Но неудобство заключается в том, что нам во внутренней сетке приходится каждому разработчику заходить на один из ресурсов таким способом:

http://192.168.137.103:40002 - Upsource
..
http://192.168.137.103:40005 - Gitlab


Это крайне неудобно, потом я решил почитать на тему контейнеризации и попробовать Docker. Но для каждого контейнера Upsource, Youtrack, и тд, в поставке включалась своя java и каждый образ весил прилично и запускать такие контейнеры мне тоже не хотелось. Почему я хотел попробовать Docker, потому, что я так понял Docker поднимает внутреннюю сетку и все изолированные песочницы имеют уникальный IP и хотелось бы, чтобы можно было обращаться по каждому из этих IP на порт 80 каждого из запущенных сервисов.

Почему я хочу сделать так, чтобы у каждого сервиса был уникальный IP, чтобы можно было повесить на 80 порт как-то и тогда на DNS можно было бы прописать эти ip сервисов и имена, и уже заходить в локальной сети компании на:

http://upsource
..
http://gitlab


Что подскажете, как можно организовать такое?
  • Вопрос задан
  • 3060 просмотров
Решения вопроса 4
@mureevms
Поставьте фронтэндом nginx и повесьте на один IP адрес хоть сотню сервисов на 80 порту с доступом по доменному имени.
Ответ написан
Spetros
@Spetros
IT-шник
Можно банально назначить несколько IP сетевой карте и в конфигах сервисов прописать явную привязку.
Либо реализовать доступ по доменному имени через фронтэнд.
Ответ написан
Комментировать
@silverjoe
Настройте ДНС имена для каждого из сервисов + nginx
Этого достаточно
Ответ написан
Комментировать
@remzalp
Программер чего попало на чем попало
увлекаться докером пока рано для ваших потребностей.
mureevms сказал всё необходимое.
1. DNS сервер если есть - настроить, если нет - поднять
2. добавить DNS записи. указывающие на сервисы
3. Если все сервисы работают только под одним типом вебсервера - не проще там настроить virtual hosts?
https://httpd.apache.org/docs/current/vhosts/examp...
https://tomcat.apache.org/tomcat-8.0-doc/virtual-h...
https://nginx.ru/ru/docs/http/request_processing.html
4. Но проще с видимой стороны оставить только nginx. Классическая схема Nginx на фронтэнд. остальные за ним. причем слушают (Listen) 127.0.0.1:ПО_ВКУСУ

Для этого собственно и добавлялся заголовок Host в протокол HTTP...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
neuotq
@neuotq
Прокрастинация
Все правильно что вы хотели пойти оп пути с Докер, советую все же изначально потратить на него время, зато в будущем сэкономите с лихвой. То что каждая штука ставится со свой Java это мелочь, более того даже плюс, если в будущем у каждой из штук будут различные требования к ней.
Короче говоря, советую один раз заморочиться, поставить и настроить Docker, поднять все вам нужные сервисы, поднять так же докер Nginx, настроить там обработку ваших внутренних доменн имен чтобы ссылались нанужный сервис, а в локальной сети либо поднять свой ДНС, либо у каждого прописать в hosts соответсвие домена (например upsource) и айпишника вашей линкс машины. Ну а если она в интернете, то легче будет через поддомены сделать.
Короче говоря, путь с Докером на сегодняшний момент абсолютно верный и сэкономит вам в будущем огромное количество времени поддержки и развития ваших штук.
Ответ написан
Комментировать
fdroid
@fdroid
press any key
Почитайте мои вопросы Как настроить редирект на https при использовании mod_proxy? и Как перенаправить виртуальный хост на виртуальную машину? Возможно, что-нибудь будет полезно. В принципе, моё решение можно экстраполировать на вашу ситуацию, наверное. Ну и мысли вслух - на одной машине для каждого сервиса своя виртуалка, сеть у которых будет настроена мостом, т.е. будут в одной сети с остальными машинами, в т.ч. физическими. А дальше - мой вариант.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы