Схемы распределения нагрузки во многомашинной системе и круговой DNS

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

Еще глубже

/

Сайт на нескольких серверах


Схемы распределения нагрузки во многомашинной системе и круговой DNS 

Еще по теме:
  wwjd.ru - христианская поисковая система
  Не гонят при нагрузке
  Борьба оптимизаторов и поисковых систем
  Доменная зона ORG попрощалась с DNS
  Информация о SEO – оптимизаци под поисковые системы.
  SEO для начинающих: роботы поисковых систем – это люди
  Различие между оптимизацией под поисковые системы (SEO) и поисковым маркетингом (SEM)
  Доменная зона ORG попрощалась с DNS

Оставляя в стороне все "за" и "против" использования многомашинной системы (или как ее еще называют - server farm), давайте зададимся вопросом: "поскольку в Интернете каждому IP-адресу соответствует одна машина, каким же образом можно распределять нагрузку между несколькими машинами так, чтобы они извне выглядели как один единственный web-сайт?"

При конфигурации с одной машиной, на все HTTP-запросы всегда отвечает одна и та же машина. В конфигурации с несколькими машинами все схемы распределения нагрузки между ними используют маршрутизацию (routing), при которой каждый последующий HTTP-запрос передается на (потенциально) другую машину.

Существует несколько распространенных подходов в организации распределения нагрузки. Это:

- круговой DNS, когда для распределения нагрузки используется DNS-сервер

- аппаратное распределение нагрузки, когда используется прибор, схожий по своим функциям с маршрутизатором

- программное распределение нагрузки. Например программа "TCP/IP Network Load Balancing" от Microsoft.

- смешанные схемы, когда используется комбинация аппаратных и программных средств

Круговой DNS

Круговой DNS - это самый простой способ перенаправления HTTP-запросов на несколько серверов. Как вы знаете, любой DNS-сервер хранит пару "имя хоста/IP-адрес" для каждой машины в определенном домене. Этот список выглядит примерно так:

wrox.com                xxx.xxx.xxx.2
www.wrox.com    xxx.xxx.xxx.3

Помимо этого любому имени можно назначить несколько IP-адресов. В результате чего список будет выглядеть так:

wrox.com                xxx.xxx.xxx.2
www.wrox.com    xxx.xxx.xxx.3
www.wrox.com    xxx.xxx.xxx.4
www.wrox.com    xxx.xxx.xxx.5
www.wrox.com    xxx.xxx.xxx.6

DNS-сервер будет по кругу проходить по всем записям в таблице и отдавать на каждый новый запрос следующий IP-адрес. Так, на первый запрос DNS-сервер выдаст адрес "xxx.xxx.xxx.3", на второй - "xxx.xxx.xxx.4", а на третий - "xxx.xxx.xxx.4" и так далее. В результате все запросы будут поровну разделены между всеми web-серверами.

Балансировка

На первый взгляд это решение кажется неплохим и очень дешевым. Однако балансировка нагрузки здесь заключается лишь в том, что каждый из серверов получит равное количество запросов. Это подразумевает, что у каждого сервера в наличие имеется одинаковый объем ресурсов (вполне реальное предположение), и что им для выполнения всех операций необходимо одинаковое количество этих ресурсов (гораздо менее реальное предположение). В этом решении совершенно не учитывается, насколько сильно загружен процессор той или иной машины. Хоть в определенной степени мы здесь и добиваемся распределения нагрузки, этот способ чрезвычайно неэффективен для серьезных приложений.

Представим себе сцепку из двух серверов:

Например использование процессора на сервере А уже достигло пика в 100% из-за характера выполняемого HTTP-запроса. В это же время сервер В загружен, скажем, лишь на 10-15%. Схема кругового DNS по-прежнему будет направлять половину всех запросов на сервер А, который уже и так перегружен. Это не только неэффективно, но и приводит к тому, что пользователи будут нажимать кнопку "Refresh" снова и снова, видя что ваш сайт медленно отвечает, а значит, что они будут генерировать все больше и больше запросов. Продолжаться это будет до тех пор, пока пользователь не получит сообщение веселенькое "Server too busy".

Отказоустойчивость

Кроме того, эта схема не как не поможет в случае выхода какой-либо из машин из строя. Обратимся опять к примеру выше. Если сервер А выработает свой ресурс и "свалится", половина HTTP-запросов все равно будет перенаправляться на уже недоступную машину. В результате пользователь получит еще более веселенькое сообщение "Server Unavailable".

Многие DNS-сервера кэшируют у себя таблицы соответствий. Кэширование таблиц DNS может привести к тому, что схема кругового DNS вообще теряет всякий смысл. Так как локальный DNS-сервер клиента запишет у себя только одно соответствие "доменное имя/IP-адрес", все клиенты этого локального DNS-сервера будут все время обращаться на один и тот же IP-адрес. С течением времени нагрузка на те машины, что были запущены раньше, будет увеличиваться до тех пор, пока они не "упадут".

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

Всякую машину нужно остановить на профилактику, но для этого потребуется внести изменения в таблицу DNS, а изменения в таблице DNS распространяются крайне медленно. Обновление во всей сети может произойти лишь через несколько дней. А это значит, что до этих пор вы не можете выключить машину, не повлияв на работу web-сайта.

Кроме того, при такой схеме у вас возникнут проблемы:

- с Java-апплетами, так как Java-апплеты в принципе могут общаться только с той машиной, с которой они были загружены.
- с SSL-соединениями
- с поддержкой сессий

Список можно продолжить.

Администрирование

С точки зрения администратора же эта схема идеальна. Для ее работы не требуется дополнительное оборудование и переустройство сети и серверов. На внесение изменений в таблицу DNS не требуется много времени и сил.


Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua, htpp://www.webmascon.com/
  Яндекс деньги (yandex money) достоинства и недостатки системы
  Улучшение положения в поисковых системах: недоразумения относительно рейтинга страниц Google
Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).
Еще по теме:
  Способы улучшения позиций в поисковых системах
  Построение системы ссылок для SEO
  Зону .ORG переключат на протокол DNSSEC
  Позиции в поисковых системах, улучшите их
  Каталоги и поисковые системы – сравнительный анализ.
  В системе интернет-адресации ликвидирована важная ошибка
  Положительные стороны системы по имени CUNIC
  Почему доменные имена высшего уровня означают лучшую индексацию поисковыми системами
  Вебсайты, доменные имена, и серверы имен (Что такое DNS?)...
  Электронная платежная система Alertpay
  система интернет денег Liberty Reserve
  система электронных денег E-gold
  Создание чата, как увеличивается нагрузка на сервер

© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100