Как несколько серверов синхронизируются для веб-приложения?

StackOverflow https://stackoverflow.com/questions/906539

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top