На сегодняшний день известно несколько способов создания распределенных веб-серверов, состоящих из нескольких компьютеров. Все они имеют свои преимущества и недостатки. Так, например, метод кругового DNS дешев и прост в эксплуатации, но имеет слишком малый набор функциональных возможностей. Аппаратные распределители нагрузки гораздо лучше, однако стоят они достаточно дорого. А сегодня мы поговорим об оставшихся двух способах: специальном программном обеспечении и его использовании как в отрыве, так и совместно с отдельными устройствами.
Вообще-то, для каждой операционной системы, использующейся на веб-серверах, существуют собственные программные распределители нагрузки. Так, например, для разных версий Windows предназначен продукт Windows Load Balancing Service от компании Microsoft. Хотя, если честно, все подобное программное обеспечение достаточно похоже друг на друга. По крайней мере, принцип действия этих утилит практически одинаков. Программный распределитель нагрузки устанавливается на каждый компьютер, входящий в состав сервера. Он состоит из двух частей. Первую можно назвать прикладной. Она отвечает за сбор данных о состоянии компьютера, реализует систему управления для администратора и так далее. Вторая часть — это фильтр. Он встраивается между стеком TCP/IP и драйвером сетевой карты. Именно этот фильтр определяет, какой из компьютеров будет обрабатывать тот или иной запрос, поступивший на сервер.
Программные распределители нагрузки — один из способов создания сервера, состоящего из нескольких ПККроме того, в большинстве случаев на все компьютеры в составе распределенного сервера устанавливаются дополнительные сетевые карты, посредством которых они связываются между собой. По этому каналу идет весь «внутренний» обмен служебными данными между машинами. Таким образом, распределенный веб-сервер представляет собой целый кластер из компьютеров, имеющих единый IP-адрес, но различные идентификаторы.
Схема работа программного распределителя нагрузки |
Главным преимуществом программных распределителей является высокая скорость работы и отсутствие сокращения пропускного канала, как, например, в случае использования специальных устройств. Причина этого вполне понятна. Программы не изменяют запросы, а всего лишь отсеивают с помощью фильтра ненужные, что, естественно, занимает гораздо меньше времени. Впрочем, недостатков у них тоже достаточно. Главные из них мы разберем ниже. Пока же стоит отметить только тот факт, что подавляющее большинство программных распределителей нагрузки может работать на серверах, в состав которых входит не более 32 машин.
Балансировка
Балансировка является самым «сильным» местом программных распределителейБалансировка является самым «сильным» местом программных распределителей. Во-первых, администратор может установить весовой коэффициент для каждого компьютера, входящего в состав распределенного веб-сервера. Таким образом, грамотно переложив большую часть нагрузки на более мощные машины, можно легко добиться максимальной эффективности использования системных ресурсов каждого компьютера.
Кроме того, нужно учитывать, что программные распределители устанавливаются прямо на компьютерах сервера. Это значит, что они могут постоянно и эффективно отслеживать их состояние и загруженность системных ресурсов — процессора, оперативной памяти и других. У администратора есть возможность задавать правила работы фильтра. В них можно указать, например, максимально допустимый уровень загрузки процессора, при котором данный компьютер продолжает принимать запросы. Если эта граница окажется пересеченной, ПК «отказывается» от новых данных, обрабатывая старые.
Таким образом, работу фильтра можно представить следующим образом. Первоначально он распределяет запросы между компьютерами в соответствии с их весовыми коэффициентами. Так продолжается до тех пор, пока состояние одной из машин не выходит за границы правил, заданных администратором. После этого новые запросы, предназначенные для этого компьютера, делятся между остальными. Это очень эффективная схема работы.
Отказоустойчивость
В программных распределителях реализован специальный механизм для обеспечения постоянной проверки работоспособности компьютеров. Он заключается в том, что каждая из этих машин периодически (обычно один раз в секунду) генерирует специальное сообщение и отправляет ее по «служебной» сети. Называется это сообщение «пульсом» (heartbeat). Если какой-то из компьютеров промолчал в течение пяти «ударов», то он считается «умершим».
При этом начинается процесс сведения (convergence). Он заключается в том, что распределитель оценивает работающие в составе сервера компьютеры и вырабатывает новый алгоритм разделения запросов. То же самое происходит, если в кластере появляется новый компьютер. Кстати, процесс сведения занимает 10-20 секунд. И в течение этого времени распределенный сервер перестает отвечать на запросы. И хотя десяток секунд является весьма небольшим интервалом, для некоторых систем электронной коммерции и он может оказаться очень неприятным.
Администрирование
Администрирование программного распределителя нагрузки нельзя назвать легким деломПроблему администрирования можно разделить на две части — установку и первичную настройку распределенного сервера, а также текущие работы. Первая из них является настоящим испытанием для любого специалиста. Во-первых, нужно проложить «служебную» сеть, установить дополнительные сетевые карты и хаб, протянуть кабели и настроить соответствующее программное обеспечение. В принципе, это не представляет собой особых сложностей, но отнимает много времени и требует дополнительного места в помещении. Во-вторых, для использования программного распределителя нужно установить его на каждый компьютер в составе распределенного сервера и настроить соответствующим образом. Причем установки для разных ПК будут отличаться друг от друга из-за различных идентификаторов и весовых коэффициентов.
Текущее администрирование программного распределителя нагрузки, наоборот, очень удобно. Его можно осуществлять с любого из компьютеров, входящих в состав сервера, или вообще удаленно с отдельного ПК, подключенного к «служебной» сети. Таким образом, единственной более-менее сложной работой для администратора является настройка и установка нового компьютера в случае появления такой необходимости.
Смешанная схема распределения нагрузки
В смешанной схеме используются и аппаратный, и программный распределители нагрузки
Суть этой схемы заключается в одновременном использовании аппаратного и программного распределителей нагрузки. При этом ни один из них и не «подозревает» о наличии другого. Главным преимуществом смешанной схемы является возможность создания сервера из очень большого числа компьютеров. Мы уже знаем, что максимальным числом ПК, которые могут обслуживать аппаратные распределители нагрузки, является 256. Для программ этот параметр равняется 32. Перемножив эти числа, мы получаем значение 8192. Именно таково максимальное число компьютеров, которые могут входить в состав веб-сервера при использовании смешанной схемы распределения нагрузки.
Другим преимуществом такого решения является то, что оно позволяет располагать компьютеры, входящие в состав сервера, не в одном месте, а разбросать их по разным помещениям, городам и даже странам. Это, во-первых, позволяет увеличить скорость передачи данных для пользователей из разных концов земного шара, обращающихся к одному серверу. А во-вторых, является надежной защитой от всевозможных стихийных бедствий — от аварий в системе электропитания и пожаров до наводнений и ураганов. Кроме того, по сложности администрирования смешанная схема практически ничем не отличается от использования программных распределителей.
Правда, есть у рассматриваемой технологии и два недостатка. Во-первых, как мы уже говорили, аппаратные распределители зачастую являются самым узким местом в канале передачи данных. А во-вторых, стоимость установки и текущего администрирования смешанной схемы распределения нагрузки очень велика. Правда, если учесть, что нужда в таких системах может возникнуть только у крупных корпораций и самых популярных систем электронной коммерции, то становится понятно, что этот недостаток можно, в принципе, не учитывать.
Ссылки по теме
- Веб-сервер: распределенный или многопроцессорный?
- Распределенный сервер и круговой DNS
- Преимущества и недостатки аппаратных распределителей нагрузки
Статья получена: hostinfo.ru