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

Распределение нагрузки

Коммутатор запросов принимает TCP-запросы от пользователей и распределяет их между несколькими компьютерами, которые называются фермой. Узел фермы, получив запрос от коммутатора, обрабатывает его и отвечает пользователю самостоятельно. Для стороннего наблюдателя вся ферма выглядит как единый высокопроизводительный компьютер. Поскольку коммутатор работает на уровне TCP, он может распределять запросы всевозможных протоколов, в том числе и предназначенных для разных операционных систем. В результате состав фермы может быть различным как по производительности, так и по ОС.

Коммутатор xLswitch реализован на базе операционной системы Linux, функционирует поверх сетевой подсистемы ядра и поэтому не мешает маршрутизации и работе межсетевого экрана. Для повышения производительности специалистам из SWsoft пришлось разработать исправления к ядру Linux, которые позволяют избавиться от излишнего копирования информации из одного буфера в другой. Это так называемая технология zero copy, выполненная уже не на уровне сетевой библиотеки, а в самом ядре Linux. И хотя запрос может содержаться в нескольких последовательных IP-пакетах, но xLswitch корректно собирает из них информацию и распределяет по узлам фермы в зависимости от предписанной стратегии.

Алгоритмы распределения запросов

Коммутатор xLswitch работает на уровне TCP, но в комплекте поставки есть также модули, работающие на уровне приложений, — HTTP, FTP и telnet. Получение информации из протоколов различных уровней позволяет xLswitch использовать для распределения запросов несколько достаточно сложных алгоритмов. Самый простой из них — распределение по очереди: каждый следующий запрос передается на новый узел фермы. Данный алгоритм может быть усложнен с помощью введения весовых коэффициентов. Кроме того, xLswitch способен пересылать пакеты на узел, обрабатывающий в данный момент минимальное число запросов. В этом случае имеется также вариант, когда предпочтение отдается узлу с наибольшим приоритетом.

Впрочем, наиболее интересные возможности xLswitch получает при работе с протоколами уровня приложений — HTTP и FTP. Коммутатор разбирает эти протоколы и перераспределяет запросы в зависимости от типа запрашиваемой информации, имени пользователя, URL и даже по информационным файлам (cookies). В результате обслуживание клиентов может быть организовано по самым разнообразным схемам. Например, xLswitch способен распределять потоки по запрашиваемым типам данных, когда на нескольких компьютерах фермы хранятся HTML-странички, картинки, мультимедийные файлы и прочее. При этом xLswitch корректно отрабатывает ситуацию, когда в одном пакете содержатся запросы разных типов данных. Поскольку xLswitch разбирает идентификатор пользователя, можно разделить ферму на части по уровню обслуживания, направляя, скажем, коммерческих пользователей на более высокопроизводительные серверы. Продукт позволяет распределять запросы и по абсолютному пути URL, разделяя внешне единый Web-ресурс на несколько независимых фрагментов, например организуя таким образом обращения к отдельно стоящей базе данных.

Еще одной особенностью xLswitch является поддержка виртуальных сеансов HTTP (Session Persistence). Эта возможность пригодится в том случае, когда для Web-приложения важно, чтобы последующие обращения посетителя направлялись на один и тот же узел фермы. При включенном режиме виртуального сеанса первое обращение пользователя к Web-ресурсу пересылается на случайный узел, а все последующие запросы — на выбранный ранее. Коммутатор умеет узнавать посетителя по его IP-адресу или по метке cookies. У механизма есть определенные ограничения по времени, чтобы отделить один сеанс от другого.

Надежность

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

Конфигурирование оповещения в системе мониторинга

Этот механизм дает возможность вовремя заметить неисправность в системе, не останавливая при этом работу сервисов.

Конфигурация xLswitch позволяет использовать два коммутатора параллельно. Они обмениваются информацией, составляя независимые копии правил переадресации запросов. В режиме Active-Aсtive оба xLswitch работают быстрее, чем один. Как только один из коммутаторов выходит из строя, другой подхватывает его пользователей. Можно включить такой режим, при котором второй xLswitch будет работать в «горячем» резерве. Для взаимного тестирования и обмена сообщениями между копиями xLswitch существует постоянное взаимодействие. Таким способом можно построить высоконадежную и отказоустойчивую систему приема и распределения запросов.

Система не предусматривает лишь резервирование хранения информации пользовательских приложений, поэтому администраторам стоит позаботиться об этом самостоятельно. Есть два способа: использовать разделяемый RAID-массив или организовать распределенное хранилище. Первый вариант стандартный, надежный, но и более дорогой. Распределенное хранилище можно построить с помощью утилиты rsync, которая позволяет сравнивать «внутренности» двух файлов на разных машинах и синхронизировать по сети их содержание. Если запускать процедуру взаимного согласования содержания через определенные промежутки времени, то данные практически не будут теряться, поскольку при аварии одного узла фермы его данные сохранятся на других и останутся доступны пользователям.

Управление полосой пропускания

В инструмент управления xLswitch включен компонент по конфигурированию системы распределения полосы пропускания (traffic shaper). Он позволяет распределять полосы пропускания каналов между узлами фермы или приложениями. Эта система позволяет гарантировать доступ к критически важным приложениям или обеспечить необходимый уровень обслуживания в зависимости от типа передаваемой информации. Система управления пропускной способностью каналов xLswitch интегрирована с коммутатором сетевых запросов, что делает ее более гибкой в настройке.

Чтобы включить механизм распределения полосы пропускания, нужно определить классы приложений и задать их вес. Каждому классу обслуживания выделяется отдельный виртуальный канал (pipe). Всего с помощью системы управления пропускной способностью один реальный канал можно разделить на 256 виртуальных и с каждым связать до 256 классов приложений. Этот механизм используется для управления качеством обслуживания клиентов или приоритетами потоков информации, если задержка на обработку запроса для какого-нибудь приложения должна быть минимальной. Наличие в xLswitch средств управления пропускной способностью — ключевая особенность этого продукта; в других продуктах подобного класса она пока не реализована.

Поставка

Получить xLswitch пока можно только через Интернет в виде RPM-пакетов для дистрибутива ASPLinux (Red Hat). В комплект поставки входят и утилиты управления xLswitch. Контролируется его работа с помощью командной строки или графического приложения. В первом случае команды следует набирать на консоли компьютера, исполняющего роль xLswitch, а во втором управление можно организовать с любого компьютера корпоративной сети. Консоль позволяет администрировать несколько коммутаторов, используя для этого свой протокол. Впрочем, компания SWsoft опубликовала интерфейс управления с xLswitch, что позволяет пользователям разрабатывать собственные инструменты управления.

Продукт поставляется на коммерческой основе, стоимость зависит от количества компьютеров в ферме. Минимальная поставка: один сервер xLswitch и три узла фермы за 999 долл. С Web-сайта разработчиков можно получить пробную версию, которая имеет ограничение по количеству узлов и времени использования. Требования к аппаратуре скромные: минимум Pentium II 266 МГц и 64 Мбайт оперативной памяти. При этом SWsoft планирует выпуск бесплатных обновлений, расширяющих функциональность продукта. Компания ASPLinux собирается выпустить специализированный дистрибутив ASPLinux xLswitch Edition, куда будут включены все компоненты xLswitch.

Применение

Коммутаторы запросов можно использовать как в корпоративной сети, так и для предоставления информации и других сервисов внешним клиентам, поскольку и в том и в другом случае от производительности и надежной работы компьютерной системы зависит работоспособность всего предприятия. Собственно, сейчас уже несколько производителей выпустили аналогичные продукты. Есть свободно распространяемый пакет, который называется Linux Virtual Server (LVS). На рынке присутствует также другой коммерческий продукт — Resonate Central Dispatch, который по функциональности соответствует xLwsitch, но не имеет средств управления полосой пропускания. Есть также программно-аппаратное решение, предлагаемое компанией Cisco под названием Content Server Switch (Cisco CSS). Сравнение возможностей программных средств различных производителей приведено в таблице.

ОБ АВТОРЕ: Валерий Коржов — обозреватель еженедельника ComputerWorld, e-mail: oskar@osp.ru.

Сравнительные характеристики продуктов
xLswitch — SWsoft xLswitch 1.1, RSNT — Resonate Central Dispatch 4.0, LVS — Linux Virtual Server 0.9.6, TCS — TurboLinux TurboCluster 6.0, MSFT — Microsoft AppCenter Server 2000.