В моей компании наш основной продукт основан на Интернете, и у каждого из наших клиентов есть собственный веб-сайт. Каждый клиент переходит на customer.domain.com, чтобы получить доступ к своему веб-сайту. В настоящее время в IIS у каждого клиента настроен собственный веб-сайт, и ему предоставляется 1 пул приложений для всех приложений на этом веб-сайте. Многие из наших клиентов используют ту же кодовую базу, но некоторые клиенты используют более новые версии (бета-тестеры).
Мы также используем балансировку нагрузки, чтобы каждый запрос мог попасть на любой из X-серверов.
Это самая идеальная установка? Одна из основных проблем заключается в том, что у нас есть только около 8 ГБ оперативной памяти на сервере, но также около 200 клиентов, поэтому для каждого пула приложений мы должны ограничить объем памяти, который он может использовать, до 300 МБ, чтобы мы не заканчивается память, но это также приводит к частой перезагрузке пула приложений.
Мы хотим масштабировать, а не увеличивать, но по мере того, как мы добавляем все больше и больше клиентов, у нас будет все меньше и меньше доступной оперативной памяти, или нам придется начать добавлять огромное количество оперативной памяти на серверы.
Если у вас аналогичная установка, как вы решили проблему?
У нас есть несколько разных сайтов, настроенных на одном компьютере под разными доменными именами для разных клиентов. Мы запускаем их из одной папки и единого пула приложений, поскольку все они имеют общую базу кода.
Для клиентов, которые хотят взглянуть на бета-код, у нас также есть настройка промежуточного сайта, на которую они могут войти и посмотреть (если для них были созданы учетные записи на этом сайте) с другим набором FQDN. Таким образом, мы получаем два веб-сайта и два пула приложений.
По сути, все, что вам нужно сделать, это настроить IIS для прослушивания нескольких IP-адресов с настройкой сертификатов для каждого из них по мере необходимости. Таким образом, данные кэшируются только один раз.
Это будет в некоторой степени зависеть от вашей среды, в частности, от того, о каком количестве серверов мы говорим, являются ли серверы 64-битными и насколько стабильно приложение.
Я вижу три варианта:
Самое простое решение - сначала переместить ваши бета-сайты на собственный набор серверов, а во-вторых, изучить способы разбить текущих пользователей на группы.
Все клиенты 1, 2, 3, 4 переходят на сервер a, b, c. Все клиенты 5, 6, 7, 8 переходят на сервер d, e, f.
и так далее, таким образом у вас будет избыточность, а нагрузка ваших клиентов будет сбалансирована.
если вы хотите еще более детально изучить визуализацию, используя что-то вроде vmware esx Таким образом, у вас есть 3 сервера в кластере, а затем вы создаете столько веб-серверов, сколько вам нужно, вы даже можете пойти так далеко, чтобы создать выделенный виртуальный сервер для каждого клиента, но это скорее масштабирование для масштабирования решения