Webmasterpro.com.ua - первый украинский сайт о поисковых системах. Оптимизация сайта в поисковиках, поисковая раскрутка. Хостинг

Реклама на сайте

WebmasterPro рекомендует:
Платная оптимизация
Создание сайтов
Обмен ссылками
 
Общение на WebmasterPro
Яндекс, Рамблер, Апорт
Google и другие
Общие вопросы поисковых систем
Продвижение сайта
Покритикуем Ваш сайт?
HTML, CSS, JavaScript
Вопросы хостинга
Хостинг
Платный хостинг
Бесплатный хостинг

Регистрация доменов

Статьи
Яндекс
Google
Все поисковые системы
Баннерная реклама
Общие вопросы рекламы
Реклама в интернет
Маркетинг в интернет
Website management
Email-маркетинг
Почтовые рассылки
Спам и борьба с ним
Разработка сайта
Веб-дизайн
Usability
Каскадные таблицы стилей
HTML
Базы данных
Таблицы
MySQL
CGI
xDSL
Партнерские программы
Электронная коммерция
Выбор хостинга
Доменные имена
Провайдеры
Сервера
А также
Каталог сайтов
Партнерские программы
Платный хостинг
Регистрация доменов
Платный хостинг


 Хотите, чтобы Ваш сайт покритиковали? - добро пожаловать на форум WebmasterPro!

Чем примечателен форум? Здесь Вы можете:
- обсудить вопросы продвижения сайта в поисковых системах: разделы Яндекс... и Google...;
- позволить другим покритиковать Ваш сайт - раздел критика сайтов;
- найти или предложить работу для вебмастера, а также обсудить потенциал бизнеса в интернет
- просто поговорить с хорошими людьми :-)

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

Дата публикации: 16/07/2003
Категория: Веб-сервера
Версия для печати

Автор - Александр Качанов сайт Webmascon

Оставляя в стороне все "за" и "против" использования многомашинной системы (или как ее еще называют - 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 не требуется много времени и сил.



Статьи по теме:

  страницы: 1


WebmasterPro.com.ua - интернет-маркетинг и реклама. Поисковые системы. Хостинг, партнерские программы, разработка сайта

 

Новости, статьи и пресс-релизы присылайте на news@webmasterpro.com.ua 
При перепечатке материалов ссылка на WebmasterPro обязательна

Rambler's Top100

Rating@Mail.ru


Copyright © 1999-2003 webmaster@webmasterpro.com.ua
Система публикаций Sanitarium WebLoG