-
Мой первый вопрос: я часто читаю о людях, использующих несколько выделенных серверов, для запуска своих сайтов и обработки запросов от пользователей. Но как они это делают? Я имею в виду, что когда я ввожу доменное имя, DNS разрешает карты, относящиеся к IP-адресу, но после этого я теряюсь.. есть какая-то архитектура ведущего/ведомого там, чтобы загружать баланс входящих запросов среди (потенциально) сотен серверы?
-
Если это так, как разные серверы обмениваются данными (например, база данных)? Будут ли они подключены к одному и тому же жесткому диску?
Как несколько серверов работают синхронно для веб-приложений?
Ответ 1
ultramonkey даст вам хорошее описание того, как загрузить баланс на многих серверах, поэтому вы видите 1 IP-адрес, но соединение перенаправляется на один из многих серверов (с включенным отказоустойчивостью).
Если у вас нет ваших веб-серверов, использующих одно и то же хранилище (общее хранилище может быть сложным, вы должны использовать GFS или база данных), тогда вы должны включить липкий сеансов, которые сообщают маршрутизатору, что каждый клиент будет выбирать сервер для связи в первый раз и поддерживать его с этим сервером. Это менее отказоустойчиво (но в Интернете вам просто нужно обновить сломанное соединение для начала), но гораздо проще архитектор (и быстрее, поскольку каждый веб-сервер может оставаться независимым)
Другой проблемой, которая вам нужна в действительно отказоустойчивой ситуации, является поиск физических серверов далеко друг от друга, что приводит к проблемам с производительностью для большинства проектов совместного использования (т.е. вы не можете поместить все свои серверы в SAN, если они 're в разных странах), заключается в использовании подхода нескольких серверов, используя одно DNS-имя и регулярно реплицируя данные между ними. Балансировка нагрузки DNS, возможно, самый простой способ использования нескольких веб-серверов как единого веб-сайта.
В этих случаях БД часто может представлять собой единую базу данных, с которой все серверы общаются или могут совместно использоваться, используя кластеризацию или чаще регистрируя журнал, чтобы убедиться, что у вас есть резервная копия, готовая к работе в сети, если первичный сбой. Лог-доставка более распространена для серверов резервного копирования, чем расположенных далеко.
Ответ 2
1) Вы можете использовать NLB (балансировка сетевой нагрузки) - он будет использовать один и тот же IP-адрес для всех серверов фермы http://en.wikipedia.org/wiki/Network_Load_Balancing_Services http://technet.microsoft.com/en-us/library/cc759510.aspx
2) SQL-кластеризация для БД и общее хранилище файлов для данных без отношения http://www.sql-server-performance.com/articles/clustering/clustering_intro_p1.aspx