Обзоры
Балансировка нагрузки — технология создания «пуленепробиваемых» сайтов
0

Балансировка нагрузки — технология создания «пуленепробиваемых» сайтов

     Хотим мы этого или нет, но Internet и intranet играют все большую роль в развитии бизнеса, во многом определяя его успех или неудачи. По данным IDC, сегодня в Соединенных Штатах более 10 млн. человек делают покупки с помощью Internet или пользуются ее услугами в режиме on-line. Прогноз предсказывает, что это число увеличится до 47 млн. к 2002 г. Вне всякого сомнения, что данная тенденция носит глобальный характер. И заказчику нет дела до того, почему он получает ответ неоперативно или вообще не может "достучаться" до вашего Web-сервера. Он просто поищет нужный ему товар на сайте другого производителя и может к вам никогда не возвратиться. Очевидно, бизнес, который стремится получить максимальную отдачу от сделанных инвестиций, должен так проектировать свои Web-серверы, чтобы обеспечить масштабируемость, производительность и постоянную доступность сайтов.

     И требования бизнеса не остаются без ответа. Чуть ли не ежедневно (фигурально, конечно) появляются технологии и продукты, предназначенные для того, чтобы обеспечить доступ к информации 24 часа в день, 365 дней в году. Наиболее перспективной из новых разработок, нацеленных на решение этой проблемы, считается технология распределения, или балансировки нагрузки, а точнее, IP Load Balancing (IPLB). Однако необходимо отдавать себе отчет в том, что Web-сервер является лишь одним из компонентов системы доставки информации. И если пропускная способность каналов низка, то никакая модернизация серверов не поможет.

     Не следует пытаться извлечь прямой смысл из термина "IP Load Balancing". IPLB-продукты не предоставляют какую-либо сверхфункциональность для IP-сетей. Этот термин возник после опубликования в журнале "PC Magazine" в феврале 1997 г. результата тестирования продуктов ряда компаний и с тех пор стал де-факто индустриальным стандартом при описании устройств, которые перехватывают IP-пакеты и распределяют нагрузку между серверами пула, имеющими для внешнего мира общий логический адрес. Однако хотя основное функциональное назначение IPLB-устройств (load balancer) заключается в сохранении постоянной доступности сайта, его "сопутствующие" возможности позволяют обеспечить характеристики, пожалуй, не менее важные, а именно: масштабируемость, надежность, автоматическое обнаружение ошибок и восстановление после сбойных ситуаций.

     Как концепция балансировка нагрузки не является новой. Ее более примитивный вариант традиционно выполнялся сервером системы доменных имен (Domain Name System — DNS). При этом для каждого запроса осуществлялось циклическое отображение IP-адресов серверов пула на имя хоста (URL). Безусловно, все серверы пула должны были иметь идентичные данные.

     Это решение создает ряд проблем. Во-первых, оно не обеспечивает стопроцентной доступности, поскольку отсутствует механизм, определяющий статус TCP-соединения, сервера или приложения. Поэтому, если сервер неисправен, ему все равно направляются запросы и клиент будет получать сообщение "сервер недоступен". Если отказавший сервер изымается из пула, администратор должен вручную скорректировать список IP-адресов, удалив адрес неисправного сервера.

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

     Разнообразие решений

     Технология распределения нагрузки реализуется в двух основных формах: как аппаратная или как программное решение. В свою очередь, аппаратные решения могут базироваться либо на ПК, либо непосредственно на сетевых устройствах — коммутаторах или маршрутизаторах.

     ПК-базированные решения представляют собой, по сути, отдельные устройства, поставляемые с соответствующим пакетом ПО. Иногда производитель устанавливает в него две сетевые карты, создавая тем самым мост и обеспечивая некоторые функции маршрутизатора. Первым таким коммерческим устройством был LocalDirector, выпущенный компанией Cisco в 1996 г. Поскольку это продукт широко известного производителя сетевого оборудования, он не только стимулировал конкурентов, но и послужил неким шаблоном для серии устройств этого класса. В качестве примера можно привести BIG/ip компании F5 Labs. К недостаткам таких решений относятся их относительно высокая стоимость и большая, чем для других аппаратных решений, вероятность отказов.

     Коммутаторы в дополнение к своим непосредственным функциям могут быть наделены некоторым "интеллектом", который позволяет им выполнять балансировку нагрузки. Такой подход используют, к примеру, компании Alteon Networks, Arrowpoint и HolonTech. Однако данная архитектура имеет некоторые ограничения. Все хорошо, пока коммутатор функционирует на уровне 2 или даже 3. Но если для принятия решений о распределении нагрузки требуется информация более высоких уровней, то должен открываться и обрабатываться каждый пакет. Многие оппоненты аргументируют тем, что традиционные коммутаторы не оборудуются процессором достаточной мощности, чтобы обслуживать большое количество процессов без значительной потери производительности.

     Однако наиболее полнофункциональные аппаратные решения могут быть получены с помощью маршрутизаторов, традиционно обладающих достаточно мощными вычислительными возможностями. Балансировка нагрузки является для маршрутизатора сопутствующей, а не конкурирующей функцией. К тому же маршрутизаторы отличаются высокой надежностью. Примерами такого решения служат Web Server Director компании RND Networks и Load Manager компании HydraWeb Technologies.

     Чисто программные решения характерны тем, что ПО распределения нагрузки устанавливается непосредственно на серверы пула. Разработчики данных продуктов обычно предлагают балансировку в качестве одного из сервисов, предоставляемых мощным пакетом управления Web-сайтом. Эти пакеты обладают очень богатым набором функций, позволяя Web-серверу работать в сложном многоярусном окружении. Теоретически стоимость таких систем ниже аппаратных, а производительность может быть даже выше, так как трафик не должен проходить через дополнительные устройства. Чисто программные решения проблемы балансировки нагрузки предоставляют компании Bright Tiger и Resonate. Кстати, Microsoft и здесь не осталась в стороне — она включит балансировку нагрузки в Windows NT 2000 Load Balancing Service.

     Дополнительные возможности

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

     Одной из таких функций является возможность инкрементного наращивания серверного пула. Сетевые администраторы могут выбрать два подхода для масштабирования системы. Первый заключается в наращивании вычислительной мощности каждого из серверов, второй, инкрементный, — в увеличении количества серверов в пуле. Использование устройств балансировки нагрузки позволяет динамически добавлять или удалять ресурсы, причем этот процесс является полностью прозрачным для конечного пользователя. Более того, он может выполняться в гетерогенной среде, объединяющей разные операционные системы и аппаратные платформы.

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

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

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

     Технология балансировки нагрузки нашла достаточно сильную поддержку у многих производителей сетевого и программного обеспечения. Примерно за 2,5 года рынок этих продуктов превысил 150 млн. долл. Не исключено, что балансировка нагрузки войдет в число тех технологий, которые сохранят приемлемую работоспособность IP-сетей на время, необходимое для принятия радикальных решений.
     

     Как это работает

     Устройство балансировки нагрузки устанавливается между Internet и Web-сервером (пулом серверов). Обычно оно соединяется с маршрутизатором Internet и локальной сетью предприятия с помощью двух отдельных сетевых сегментов ( в типичных случаях это Ethernet). Для связи с маршрутизатором используется виртуальный IP-адрес, который маскирует индивидуальные адреса серверов. Поэтому извне "виден" только виртуальный адрес. Устройству известны все уникальные адреса серверов, и каждый входящий пакет маршрутизируется в соответствии с установленными правилами.

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


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: