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

Веб-сервер настроен для балансировки нагрузки и пересылки

Мы работаем над сетевым сервисом, в котором все функции нашего программного обеспечения доступны через внутренний веб-сервер. Клиенты компании подключаются к нему через браузер, выполняют свои задачи, выходят из системы, работа сделана.

Но этот внутренний веб-сервер представляет собой довольно простое программное обеспечение, или, как сказать, не такое настраиваемое, не очень гибкое, оно будет делать свое собственное дело, которое обслуживает потребности клиента, и это более или менее сделано. Или поймите лучше: не поддерживает балансировку нагрузки, SSL или что-то еще, что потребовалось бы надежной веб-службе.

Итак, было принято важное решение: нам нужно «спрятать» этот внутренний компонент в локальной сети и поставить промышленный веб-сервер, обращенный к Интернету, чтобы иметь возможность доступа к нашей службе (которая каким-то образом будет общаться с внутренними пользователями). домашний сервер). А поскольку вычисления, выполняемые этим внутренним компонентом, занимают довольно много времени, мы хотели бы, чтобы как минимум два (по состоянию на декабрь 2015 г.) из них работали в локальной сети, были полностью невидимы для внешней сети и как-то разделяли работать между ними.

Теперь возникает проблема. Все мы в той или иной степени являемся программистами баз данных или алгоритмов, мы почти ничего не знаем о том, как настроить (правильно) веб-сервер (нет, у нас нет бюджета, чтобы нанять кого-либо, кто бы это делал, но мы готовы изучить необходимые шаги), теперь как сделать "провода сетевой" части.

Вот "требования": платформой для промышленного веб-сервера будет Linux (мы думали об использовании apacher, однако, пожалуйста, предложите здесь все, что вы сочтете важным, зная требования), внутренние компоненты также работают на Linux. .

Будет 3 компьютера (пока). Один с выходом в Интернет с общедоступным IP-адресом будет размещать веб-сервер. Мы планируем установить SSL и получить сертификат, чтобы иметь к нему интерфейс https (по крайней мере, это правильно?).

Сервер на этом компьютере должен будет разговаривать с двумя другими компьютерами, на которых размещены два внутренних веб-сервера (если я правильно помню, это называется пересылкой), и желательно выбрать тот, который не занят работой по запросу клиентов. (если я прав, это балансировка нагрузки).

Немного технологической информации:

Запросы, с которыми работают домашние компьютеры, формируются следующим образом:

В GET запросы приходят как:

https://somecompanysoftware.com/SOME_LONG_REQUEST_STRING_WITH_SOME_DATA_IN_IT

и отображается соответствующая веб-страница (из данных в URL-адресе), но также есть POST запросы, например:

https://somecompanysoftware.com/SOME_LONG_REQUEST_STRING_WITH_SOME_OTHER_DATA_IN_IT

и есть POST данные в запросе (например, клиент загружает картинку и т. д.)

и, конечно, отображается веб-страница, соответствующая данным URL.

Очень важно, чтобы веб-сервер, подключенный к Интернету (apache), подключался к локальным веб-серверам с соответствующим URL-адресом, а также передавал необходимые данные POST для дальнейшего использования.

Я также читал, что веб-сервер apacahe имеет возможность разрешить пользователю создавать модули, поэтому мы думали создать модуль, который по запросу из Интернета будет создавать «локальный» запрос к одному из внутренних веб-сайтов. серверы, отправьте данные и дождитесь ответа, который затем будет отправлен обратно в браузер.

Вопрос: мне просто интересно, есть ли способ сделать это проще (чем писать новый модуль apache) или это единственный способ.

Я бы обязательно установил 2 сервера apache с сервером haproxy из них. В зависимости от полученного сертификата, имени хоста или подстановочного знака, вы можете решить, хотите ли вы, чтобы у вашего сервера Apache также был сертификат или нет.

Другими словами. Если вы получаете сертификат имени хоста, вы используете этот сертификат на hproxy, который затем также разрывает соединение SSL. Затем вы можете передавать трафик на серверы Apache в виде открытого текста.

С другой стороны, если вы получите групповой сертификат, вы можете использовать его как на сервере haproxy, так и на сервере apache.

Просто кричите, если вам нужна помощь с настройкой haproxy.

Кобус

Вы хотите, чтобы общедоступный сервер работал как кэширующий обратный прокси-сервер? Вы можете настроить Apache (и большинство веб-серверов) для этого, но вы можете подумать о Squid:

http://wiki.squid-cache.org/SquidFaq/ReverseProxy