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

Обслуживайте веб-сайты с нескольких серверов за одним IP

У меня конфигурация сети, как показано ниже. А Windows Server 2012 R2 ящик с публичным IP, с несколькими CentOS 7 за ним стоят веб-серверы. Каждый CentOS box - это веб-сервер для нескольких сайтов. Ящики CentOS работают Apache 2.4 и PHP 5.5.

Записи DNS для всех сайтов указывают на общедоступный IP-адрес Win Server (1.2.3.4).

У меня вопрос: Как мне наиболее эффективно обслуживать сайты из CentOS коробки до конечных пользователей?

Я смотрел на IIS обратные прокси. Вот мое текущее (супер-неуклюжее) решение:

Это работает, но кажется ужасным взломом. В идеале я бы не хотел переписывать URL-адреса. я просто хочу сказать foo.com? Отправьте этот запрос на 192.168.1.2. thing.com? отправить это в 192.168.1.3. Для меня это звучит как DNS, но, очевидно, я не могу просто сказать пользователю перейти на какой-то внутренний IP-адрес. Может мне вообще нужен прямой прокси? Я не могу просто переадресовать порт 80 из-за необходимости разделять запросы между несколькими серверами.

Мне кажется, что эта проблема должна была быть решена раньше, но я не могу ее понять. (Я действительно разработчик, а не системный администратор). Помощь будет очень признательна!

Я сбросил Win Server для Linux и использовал HAProxy

Чтобы избавить всех, кто найдет это, от прочтения всех комментариев, я в конечном итоге сбросил Windows Server и использовал Linux с HAProxy. HAProxy может пересылать запросы без повторной записи URL-адресов.

Я еще не нашел хорошего решение для Windows, но я думаю, что это приемлемо:

Перепишите все URL-адреса, добавив порт, поэтому:

Затем на Windows Server:

Это непроверенный.

Я никогда не играл напрямую с функциями IIS ARR, но согласно его документы похоже, что он может сделать то, что вам нужно:

Более эффективно распределять нагрузки между серверами для максимального использования ресурсов

Маршрутизация запросов приложений IIS предлагает администраторам возможность создавать эффективные правила маршрутизации на основе URL-адреса, заголовков HTTP и переменных сервера, чтобы определять наиболее подходящий сервер веб-приложений для каждого запроса. ARR принимает решения о маршрутизации запросов на уровне приложения и может использоваться в сочетании с аппаратными балансировщиками нагрузки или балансировкой сетевой нагрузки Windows в качестве дополнительного уровня контроля над HTTP-запросами. Кроме того, ARR позволяет поставщикам услуг размещения направлять запросы от клиентов на определенные серверы веб-приложений в ферме серверов, создавая связь между клиентом и сервером.

Тем не менее, я не знаю, действительно ли это сработает и даже насколько хорошо. Я бы подумал, возможно, вам лучше потратить время на настройку коробки с Linux и использование HAProxy или какой-либо другой балансировщик нагрузки / обратный прокси Linux (Nginx, Apache с mod_proxy).

Фактически, вы могли бы сделать это и в Windows, используя Apache с mod_proxy.

В любом случае, я точно знаю, что HAProxy может делать именно то, что вы хотите, поскольку это то, для чего он предназначен.

Если у вас установлена ​​маршрутизация запросов приложений (ARR), вы должны увидеть новый элемент «Фермы серверов» в диспетчере IIS.

Вы можете создать ферму серверов с одним сервером 192.168.1.2.

После этого вы можете добавить правило обратного прокси (правило перезаписи) для foo.com и направить его на ферму серверов, созданную на первом шаге.

Видеть http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/ для получения дополнительной информации

Вы можете переопределить DNS с помощью файла hosts Windows (c: \ windows \ system32 \ drivers \ etc \ hosts) и добавить строку:

192.168.1.2 foo.com

Теперь ваш Windows-сервер будет связываться с 192.168.1.2 для foo.com, даже если foo.com имеет другой IP-адрес в DNS.

Поэтому, если системы в Интернете связываются с foo.com, они будут искать foo.com с помощью DNS и подключаться к вашему компьютеру с Windows. Теперь, если у вас есть «перенаправление» (терминология Microsoft, я предпочитаю «правило обратного прокси») на foo.com в качестве правила перенаправления, ваше окно Windows будет искать «foo.com» с помощью файла hosts и подключаться к вашему внутреннему серверу.