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

Как лучше всего создать несколько сайтов, совместно используемых на нескольких серверах в IIS 7?

В моей компании наш основной продукт основан на Интернете, и у каждого из наших клиентов есть собственный веб-сайт. Каждый клиент переходит на customer.domain.com, чтобы получить доступ к своему веб-сайту. В настоящее время в IIS у каждого клиента настроен собственный веб-сайт, и ему предоставляется 1 пул приложений для всех приложений на этом веб-сайте. Многие из наших клиентов используют ту же кодовую базу, но некоторые клиенты используют более новые версии (бета-тестеры).

Мы также используем балансировку нагрузки, чтобы каждый запрос мог попасть на любой из X-серверов.

Это самая идеальная установка? Одна из основных проблем заключается в том, что у нас есть только около 8 ГБ оперативной памяти на сервере, но также около 200 клиентов, поэтому для каждого пула приложений мы должны ограничить объем памяти, который он может использовать, до 300 МБ, чтобы мы не заканчивается память, но это также приводит к частой перезагрузке пула приложений.

Мы хотим масштабировать, а не увеличивать, но по мере того, как мы добавляем все больше и больше клиентов, у нас будет все меньше и меньше доступной оперативной памяти, или нам придется начать добавлять огромное количество оперативной памяти на серверы.

Если у вас аналогичная установка, как вы решили проблему?

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

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

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

Это будет в некоторой степени зависеть от вашей среды, в частности, от того, о каком количестве серверов мы говорим, являются ли серверы 64-битными и насколько стабильно приложение.

Я вижу три варианта:

  1. Продолжайте запускать все в изолированных пулах приложений, балансируйте на всех своих серверах и добавляйте больше оперативной памяти.
    Преимущества: Надежность.
    Недостатки: Стоимость (но в наши дни баран становится довольно дешевым).
  2. Объединитесь в меньшее количество пулов приложений, сбалансируйте все свои серверы и не добавляйте дополнительную оперативную память. Преимущества: Без дополнительных затрат.
    Недостатки: если у приложения есть проблемы со стабильностью, объединение 200 клиентов в 2 или 3 пула приложений является потенциальным рецептом катастрофы. Если ваш балансировщик нагрузки может правильно определить доступность приложения и применить изменение состояния ко всем URL-адресам, этот риск можно снизить. Кроме того, если эти машины 32-разрядные, запуск более 100 клиентов в одном пуле приложений может привести к опасному приближению к пределам памяти процесса.
  3. Продолжайте запускать все в изолированных пулах приложений, разделите свою ферму на субфермы, т.е. вместо 6 серверов, обслуживающих 200 клиентов, у вас есть 2 группы по 3 сервера, каждая из которых обслуживает 100 клиентов, чтобы снизить нагрузку на память и не добавлять дополнительную оперативную память.
    Преимущества: надежность, отсутствие дополнительных затрат (если у вас достаточно серверов!).
    Недостатки: если у вас нет как минимум 4 серверов, это будет дорогой / непривлекательный вариант. Кроме того, вы вводите новые проблемы, такие как необходимость отслеживать, какие конкретные клиенты активно используются, и балансировать их между несколькими фермами.

Самое простое решение - сначала переместить ваши бета-сайты на собственный набор серверов, а во-вторых, изучить способы разбить текущих пользователей на группы.

Все клиенты 1, 2, 3, 4 переходят на сервер a, b, c. Все клиенты 5, 6, 7, 8 переходят на сервер d, e, f.

и так далее, таким образом у вас будет избыточность, а нагрузка ваших клиентов будет сбалансирована.

если вы хотите еще более детально изучить визуализацию, используя что-то вроде vmware esx Таким образом, у вас есть 3 сервера в кластере, а затем вы создаете столько веб-серверов, сколько вам нужно, вы даже можете пойти так далеко, чтобы создать выделенный виртуальный сервер для каждого клиента, но это скорее масштабирование для масштабирования решения