Как синхронизируются несколько серверов для веб-приложения? - PullRequest
14 голосов
/ 25 мая 2009
  1. Мой первый вопрос: я часто читаю о людях, использующих несколько выделенных серверов для запуска своих веб-сайтов и обработки запросов от пользователей. Но как именно они это делают? Я имею в виду, что когда я ввожу доменное имя, DNS разрешает сопоставление этого с IP-адресом, но после этого я теряюсь ... существует ли какая-то архитектура типа «ведущий / ведомый» для балансировки нагрузки входящих запросов среди (потенциально) сотен серверы

  2. Если это так, как различные серверы обмениваются данными (например, база данных)? Будут ли они подключены к одному жесткому диску?

Ответы [ 2 ]

7 голосов
/ 25 мая 2009

ultramonkey даст вам хорошее описание балансировки нагрузки на многих серверах, поэтому вы видите 1 IP-адрес, но соединение маршрутизируется на один из многих серверов (с учетом отказоустойчивости).

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

Другая проблема, которая может понадобиться вам в действительно отказоустойчивой ситуации, заключается в расположении физических серверов далеко друг от друга, что вызывает проблемы с производительностью для большинства проектов совместного использования (т. Е. Вы не можете поместить все свои серверы в сеть SAN, если они Находится в разных странах), заключается в использовании подхода с несколькими серверами, с использованием одного DNS-имени и регулярной репликации данных между ними. Балансировка нагрузки DNS , возможно, самый простой способ использования нескольких веб-серверов в качестве одного веб-сайта.

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

4 голосов
/ 25 мая 2009

1) Вы можете использовать NLB (Network Load Balancing) - он будет использовать один и тот же 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 / статьи / кластеризация / clustering_intro_p1.aspx

...