Что такое система балансировки нагрузки

advertisement
1. ТЕОРИТИЧЕСКИЕ СВЕДЕНИЯ
1.1.
Общие сведения о балансировки нагрузки
Распределение нагрузок, приходящихся на несколько серверов, позволяет
избежать ситуации, когда передаваемые по сети Web пакеты волной
обрушиваются на один сервер, в то время как другие просто простаивают.
Для простого распределения нагрузки между Web-серверами обычно
используется одна из функций DNS, а именно циклическая выборка (roundrobin feature), которая предусматривает возможность круговой передачи IPадреса любого Web-сервера. В результате, это позволяет добиться того, что
все Web-серверы становятся в одинаковой степени загружены трафиком.
Однако этот способ не очень эффективен в тех случаях, где возможность
аппаратных и программных компонентов Web-серверов неравнозначны. С
точки зрения процедуры циклической выборки службы DNS между этими
системами нет никакой разницы;
Относительно недавно поставщики наладили выпуск систем балансировки
нагрузки
-
программных
продуктов,
которые
выравнивают
нагрузку,
распределяя ее по нескольким серверам. Так же они позволяют повысить
отказоустойчивость Web-серверов: при отказе одной машины пакеты данных
направляют на другой сервер. Таким образом, сокращается время ожидания,
а число запросов, которые были необработанны, сводятся к минимуму.
Системы балансировки нагрузки можно применять как при наличии одного
Web-сайта, так и при работе с целым рядом узлов.
2.1. Что такое система балансировки нагрузки
Система
балансировки
нагрузки
Web-серверов
-
это
средство,
предназначенное для переадресации клиентских запросов на наименее
загруженный или наиболее подходящий Web-сервер из группы машин, на
которых хранятся зеркальные копии информационного ресурса. Клиент не
догадывается о том, что обращается к целой группе серверов: все они
представляются ему в виде одного виртуального сервера.
Обслуживая один Web-сайт и при этом имея два Web-сервера:
web1.rf.com
с
193.168.36.2.
ip-адресом
Представляя
193.168.36.1
какой-либо
и
сайт
web2.rf.com
с
ip-адресом
пользователям
Интернет,
система балансировки использует имя виртуального компьютера (например,
www.rf.com), а также виртуальный ip-адрес (193.168.35.10). Для того чтобы
связать имя виртуальной системы и соответствующий адрес с двумя Webсерверами, необходимо прописать имя системы и ее адрес на сервере DNS.
Система балансировки нагрузок постоянно контролирует нагрузки и степень
готовности каждого из Web-серверов. Когда на узел www.rf.com заходит
посетитель, его запрос посылается не на один из Web-серверов, а в систему
балансировки нагрузки. Эта система и принимает решение о том, на какой
сервер направить запрос. Анализируя запрос система руководствуется
такими параметрами, как загрузка каждого сервера, а также соблюдает
условия
и
правила,
составленные
администратором.
Затем
система
балансировки нагрузки направляет запрос пользователя соответствующему
Web-серверу.
Системы распределения нагрузки могут обеспечивать выравнивание
нагрузок не только одного, но и нескольких сайтов. Применение нескольких
сайтов позволяет размещать дублирующие серверы (зеркальные Webсерверы) расположенные ближе к посетителям сайта и сокращать задержки
при обмене информацией между сайтом и посетителями. Кроме того, при
наличии нескольких Web-сайтов появляется возможность равномерно
распределить нагрузку на них, а также обеспечивать высокую степень
готовности и отказоустойчивость в случае нарушений в работе сайта. При
наличии нескольких Web-сайтов, все системы балансировки нагрузок на всех
Web-сайтах имеют одно общее имя виртуальной системы, но разные адреса.
Первая система балансировки на первом сайте в Москве, которой присвоено
имя виртуальной главной машины www.rf.com с адресом 193.168.35.10. А
второй балансировщик на другом сайте в Париже, использующий то же
именем
виртуальной
главной
машины,
имеет
уже
другой
адрес
-
193.200.1.10. Связи всех систем балансировки с локальными Web-серверами
устанавливаются так же, как и в случае с одним сайтом. Наряду с
мониторингом
нагрузок
локальных
серверов
системы
балансировки
обмениваются с другими на других сайтах информацией о конфигурации и
загрузке; при этом проверяется и степень готовности сайта. В результате все
системы балансировки имеют в своем распоряжении общую картину
распределения нагрузок и готовности к работе различных узлов. При
наличии нескольких сайтов системы балансировки нагрузок очень часто
параллельно выполняют еще одну задачу: берут на себя роль серверов
DNS, обслуживающих имя виртуальной системы. Получив через DNS сигнал
от клиента, указавшего данное имя, система балансировки возвращает
клиенту VIP-адрес сайта, наиболее подходящего с учетом текущего уровня
нагрузки, степени удаленности от клиента и других параметров. Затем
клиент автоматически получает доступ к этому узлу.
Системы балансировки нагрузок можно разделить на следующие категории:
 аппаратные устройства,
 сетевые коммутаторы,
 программные решения.
Системы балансировки на базе аппаратного устройства можно
рассматривать как некоторую абстракцию - "черный ящик"; обычно данная
система, работающая под управлением UNIX или фирменной операционной
системе машина с процессором Intel, на которой предустановленна
разработанная поставщиком система балансировки нагрузки. Данные
системы соответствуют спецификации Plug and Play (PnP), что позволяет
облегчить работу администраторов данных узлов.
Для создания систем балансировки на основе сетевых коммутаторов
используются коммутаторы второго и третьего уровня. В отличие от
аппаратных
решений
дополнительных
эти
системы
устройств,
по
не
предусматривают
средствам
которых
установки
Web-серверы
подключаются к коммутатору.
При
использовании
программных
продуктов
для
распределения
нагрузки в ряде Web-серверов, то можно обойтись без изменений
имеющихся
сетевых
средств
и
оборудования.
Программные
пакеты
устанавливаются на существующих Web-серверах или на специальных
серверах выравнивания нагрузки.
3.1 Sticky sessions
Sticky-sessions – один из методов распределения нагрузки, или
отказоустойчивости за счёт избыточности количества серверов, с помощью
прокси.
Реализация системы балансировки Sticky sessions
Для построения системы Sticky sessions необходимо взять 3 реальных
сервера(в данном случае это будет 3-и виртуальных машины, созданные в
среде виртуализации Oracle VirtualBox). Каждая виртуальная машина имеет
512мб оперативной памяти и одноядерный виртуальный процессор.
Установив на все виртуальные машины ОС Ubuntu server 13.1.1 требуется
создать виртуальную сеть, назначить ip-адреса с 192.168.56.10 по
192.168.56.12. Пусть, машина с адресом 192.168.56.10 – будет выделена под
HTTP-сервер. На нее необходимо установить HTTP-сервер NGINX. На
оставшиеся машины необходимо установить web-сервер Apache2, в корне которого
расположена страница index.php с кодом:
<?php phpinfo(); ?>
Этот код отдаст информацию об установленном модуле php, используя это язык
программирования для формирования страницы. Это создаст типичную нагрузку на webсервер.
Рассмотрим настройки NGINX. Его конфигурационная директория находится по адресу
/etc/nginx/sites-available/. В данной директории хранятся файлы виртуальных хостов, но
интерес, в данном случае, представляет только один файл – default, в котором
объявляется стандартный виртуальны хост. В данном файле следует добавить запись:
upstream backend{
server 192.168.56.11 weight=5;
server 192.168.56.12 weight=5;
}
И изменить запись
location / { … }
На
location / {
proxy_pass http://backend;
}
Нагрузочное тестирование системы балансировки нагрузки
Теперь перейдем к нагрузочному тестированию нашей системы. Для этого используем
jmeter.
Jmeter – это довольно наглядный тест для анализа работы различных серверов,
работающих на UPD и TCP протоколах. Сделаем простейший нагрузочный тест. Это даст
нам возможность создать видимость работы пользователя на сервере, тем самым
усложнив серверу задачу, так как он должен будет периодически обновлять отдаваемые
данные, очищая кеш.
И так, в нашем распоряжении web-сервер на виртуальной машине, который может
выдержать одновременно 250-300 подключений. Запустим Jmeter и проверим это. Режим
запуска – 300 потоков(пользователей), каждый из которых пошлет 50 разнообразных
запросов.
На графике зеленым обозначено кол-во запросов в минуту.
Синим обозначено среднее время обработки запросов.
Красным – среднее отклонение от среднего времени обработки, а фиолетовым - время, больше
которого было большинство запросов. Данный параметр интересно рассматривать на сайтах с
различным контентом, наблюдая скачки, при переходе на мультимедийные данные.
Среднее время отклика (Average) растет, а скорость обработки (Throughput) не меняется. Это значит,
что где-то на сервере операции становятся в очередь, и производительности не хватает, чтобы
обслужить все запросы.
Download