Диплом: Разработка и апробация макетного варианта программно-аппаратного комплекса для обеспечения высокой доступности веб-приложений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
22
останутся работоспособными. Для защиты от проблем с электропитанием
или стихийных бедствий кластер может быть географически распределен по
нескольким дата-центрам.
Объединение серверов в кластер будет осуществляться на уровне
стандартизированных программных протоколов. Это позволяет использовать
уже существующие программные средства для создания программно-
аппаратного комплекса, не прибегая к разработке новых.
2.1.1 Общие требования
1. Уровень доступности веб-приложений должен быть в пределах от 99%,
до 99,9%.
2. Кластер должен быть организован на программном уровне с
применением свободного программного обеспечения.
3. Все используемое программное обеспечение должно быть совместимо
с архитектурой x86-64.
4. Кластер должен быть разработан на основе принципа горячего
резервирования.
2.1.2 Функциональные требования
1. Управление распределением нагрузки должно осуществляться
посредством приоритезации узлов в кластере и ограничения количества
одновременно устанавливаемых соединений с определенным узлом.
2. В конфигурации по умолчанию нагрузка должна распределяться между
кластерными узлами равномерно.
3. Кластер должен поддерживать веб-приложения, созданные на языках
PHP, Python, Perl и с помощью технологии ASP.
4. Должна быть предусмотрена возможность расширения прикладных
функций кластера, особенно в части обеспечения поддержки веб-
приложений, за счет установки дополнительных программных средств.
5. Кластер должен обеспечивать функционирование множества веб-
приложений одновременно.
23
6. Данные приложений должны размещаться на разделяемом логическом
диске, который подключен к каждому узлу с веб-сервером в режиме
чтение-запись.
7. Кластерная система управления базами данных должна поддерживать
реляционную модель данных, язык SQL в соответствии со стандартом
ISO/IEC 9075:2011, синхронную репликацию данных.
8. Все измененные данные, хранящиеся на разделяемом логическом диске
и в базах данных, должны синхронно тиражироваться между
партнерами по репликации.
9. Должна быть предусмотрено кэширование статических данных веб-
приложений.
10. Балансировщик нагрузки должен осуществлять периодический
контроль работоспособности веб-серверов, а в случае отказа одного из
них распределять нагрузку только между работающими серверами.
11. Кластерные узлы должны быть обеспечены возможностью
подключения к системам мониторинга по протоколам SNMP и Syslog.
2.1.3 Требования к надежности
1. Функционирование веб-приложений не должно прерываться при
отказах следующих видов:
отказ аппаратных компонентов в узле кластера;
отказ программного обеспечения в узле кластера;
отказ части каналов связи.
2. Веб-приложения должны функционировать, пока в кластере
функционирует минимум один балансировщик нагрузки, один веб-
сервер и один сервер баз данных.
3. Кластерные узлы должны автоматически перезапускаться после сбоев
питания.
4. Кластерные узлы должны быть обеспечены средствами
автоматического резервного копирования.
24
5. Резервное копирование данных должно выполняться на удаленные
системы, не прерывая работы веб-приложений.
6. Время восстановления работоспособности после полного отказа не
должно превышать 9 часов с момента обнаружения.
7. Аварийное переключение при отказах должно осуществляться для
клиента прозрачно.
8. Время аварийного переключения не должно быть заметно при работе с
веб-приложениями.
9. Разделяемый логический диск должен быть защищен от сбоев
программными средствами, и доступ к нему должен обеспечиваться
для каждого узла кластера независимо от работоспособности других
узлов.
10. Должна обеспечиваться возможность удаленного размещения узлов
кластера.
2.1.4 Требования к масштабируемости
1. В целях наращивания производительности и надежности должна быть
обеспечена возможность добавления в кластер новых серверов, не
прерывая работы веб-приложений.
2. Процессы модернизации аппаратного обеспечения и обновления
программного обеспечения серверов также не должны прерывать
работу веб-приложений.
3. Масштабирование должно быть осуществимо на уровне серверных
ролей: балансировщик нагрузки, веб-сервер, сервер баз данных.
4. Разделяемое хранилище данных должно быть расширяемым.
5. На серверах должны быть предусмотрены программные средства для
агрегирования сетевых соединений.
2.2 Программные средства реализации
По результатам исследования, проводимого компанией Coverity в 2013
году по заказу Министерства внутренней безопасности США, оказалось, что
25
качество продуктов с открытым исходным кодом впервые превысило
качество проприетарных продуктов, а эталоном качества среди продуктов с
открытым исходным кодом остается ядро Linux [19]. Для свободного
программного обеспечения общедоступность исходного кода является
обязательным условием. Пользователи свободного программного
обеспечения, согласно политике Фонда свободного программного
обеспечения, имеют права на его запуск в любых целях, на изучение его
работы и адаптацию под собственные нужды, на распространение его копий,
на улучшение его работы и публикацию внесенных изменений [20].
2.2.1 Операционная система CentOS
CentOS – свободно распространяемая операционная система, которая
основана на Red Hat Enterprise Linux. При разработке CentOS используется
исходный код коммерческого дистрибутива компании Red Hat с целью
создания очень близкого конечного продукта и в то же время
общедоступного. Данное обстоятельство также означает полную
совместимость с CentOS программного обеспечения, предназначенного для
Red Hat Enterprise Linux [23].
Срок поддержки каждой версии CentOS, как и Red Hat Enterprise Linux,
равен десяти годам. На данный момент последней версией является седьмая,
а ее поддержка будет осуществляться до июля 2024 года. Новая версия
CentOS выходит раз в два года и каждые шесть месяцев происходит ее
обновление для обеспечения поддержки новых аппаратных средств.
В CentOS, как в одном из наиболее популярных дистрибутивов, особый
акцент ставится на надежность и стабильность работы. Все программное
обеспечение, которое представлено в официальных репозиториях,
обновляется достаточно часто и только после прохождения
предварительного тестирования. Это сводит практически к минимуму
вероятность краха системы. Простота установки программ и их обновления в
CentOS обеспечивается за счет использования пакетного менеджера YUM и
возможности подключения дополнительных репозиториев. При
26
использовании CentOS практически не встречаются ситуации, когда для нее
невозможно найти какое-либо программное обеспечение, предназначенное
для операционных систем на базе Linux.
2.2.2 Средство резервирования узлов первого перехода Keepalived
Keepalived является реализацией протокола резервирования
маршрутизатора первого перехода для UNIX-подобных операционных
систем [24]. По замыслу разработчиков данное программное обеспечение
предполагалось использовать для избегания последствий отказов на
маршрутизаторах, которые являются шлюзами по умолчанию, но позднее
оно стало применяться еще как средство резервирования серверов,
обслуживающих сетевые приложения.
Keepalived позволяет нескольким узлам работать в группе, совместно
используя один виртуальный IP-адрес. Виртуальный IP-адрес
предоставляется клиентским компьютерам как адрес шлюза по умолчанию
или сервера, обслуживающего приложения. В основу Keepalived заложен
принцип холодного резервирования. В каждый момент времени только один
узел маршрутизирует трафик или отвечает на запросы, остальные узлы
ожидают его отказа. Если основной узел выходит из стоя, то его роль на себя
берет резервный, имеющий наивысший приоритет. Механизм приоритетов
позволяет административно определить порядок переключения между
узлами при отказах и обеспечить соответствующее перераспределение ролей
при восстановлении узлов с более высокими приоритетами.
2.2.3 Балансировщик нагрузки HAProxy
HAProxy – свободное, быстрое и надежное программное обеспечение,
которое осуществляет балансировку нагрузки для TCP- и HTTP-приложений
[25]. Приходящие на фронтальный сервер запросы могут быть распределены
на несколько обслуживающих серверов с применением следующих
алгоритмов:
27
roundrobin применяемый по умолчанию алгоритм, который
распределяет запросы между серверами циклически;
leastconn запрос посылается на сервер с наименьшим числом
активных соединений;
source запросы, приходящие с одного IP-адреса, будут всегда
посылаться на один и тот же сервер.
HAProxy обладает несколькими важными особенностями:
осуществляет периодическую проверку доступности обслуживающих
серверов;
позволяет приоритезировать серверы для управления распределением
запросов;
распределяет запросы только между доступными серверами;
позволяет проверять доступность серверов несколькими способами:
tcp-check, http-check, mysql-check.
Может быть подключен веб-интерфейс со статистикой работы
балансировщика, где отражены объемы проходящего трафика, состояние
очередей, количество активных и сброшенных соединений, доступность
обслуживающих серверов.
На практике HAProxy зарекомендовал себя как очень эффективный
балансировщик. Сервер с процессорами последнего поколения семейства
Xeon E5 и 10-гигабитным сетевым интерфейсом способен обработать поток в
40-60 ГБит/с, а 1 Гб оперативной памяти хватает для обслуживания около
тридцати тысяч сессий. HAProxy используется в ряде высоконагруженных
проектов, таких как Twitter, Instagram, GitHub, Stack Overflow.
2.2.4 Веб-сервер Apache
Apache является одним из самых популярных HTTP-серверов. По
статистике Netcraft в марте 2015 года он обслуживал 38% всех опрошенных
веб-сайтов, что составило около 337 миллионов сайтов [21]. Такую
28
популярность Apache заслужил за счет своей надежности, расширяемости,
кроссплатформенности и гибкости конфигурации.
Основные функции, такие как взаимодействие по протоколу HTTP,
обработка конфигурационных файлов и загрузка модулей расширения,
заложены в ядро Apache [26]. Ядро само по себе может работать без
использования дополнительных модулей, но возможности веб-сервера при
данной конфигурации будут весьма ограниченными. Дополнительные
модули применяются в основном для:
расширения функциональных возможностей;
модификации основного функционала или исправления ошибок;
обеспечения возможности использования языков программирования;
повышения безопасности.
Apache снабжен механизмом виртуальных хостов, который позволяет
обслуживать множество сайтов с помощью только одного IP-адреса. Для
каждого виртуального хоста можно задать собственные настройки ядра и
модулей, а так же настройки безопасности. Ряд дополнительных модулей
позволяет распределять между виртуальными хостами серверные ресурсы:
загрузку процессора, память, пропускную способность сетевой карты.
В Apache предусмотрены различные средства обеспечения
безопасности:
ограничение доступа к файлам с определенными типами и к
директориям;
ограничение доступа к файлам и директориям, а так же ко всему
серверу на основании IP-адреса;
авторизация пользователей при помощи HTTP-аутентификации и
digest-аутентификации;
шифрование соединений посредством SSL.
Все происходящие с Apache события регистрируются в
соответствующих журналах, степень подробности которых может быть
задана путем несложного конфигурирования. Журналы ведутся отдельно для
29
ошибок, отдельно для регистрации обращений к ресурсам и отдельно для
каждого виртуального хоста.
Разработку современных веб-приложений просто невозможно
представить без использования скриптовых языков программирования.
Самым популярным в данной сфере является язык PHP, так как он обладает
большим набором встроенных инструментов. Для того чтобы Apache мог
отправлять данные на обработку PHP-интерпретатору необходимо просто
подключить соответствующий дополнительный модуль.
2.2.5 Обратный прокси-сервер nginx
Nginx способен выполнять функции как обратного прокси-сервера, так
и HTTP-сервера [22]. Однако чаше всего он используется в качестве
кэширующего сервера, установленного перед более функциональными веб-
серверами, которые не предназначены для работы под большой нагрузкой.
Кэширование позволяет уменьшить нагрузку на веб-серверы и сократить
время загрузки веб-страниц. Принцип работы заключается в том, что nginx
отдает клиенту статический контент, например, изображения или тексты, а
более сложные запросы передает дальше на обработку. Согласно статистике
Netcraft nginx обслуживал или проксировал 21.22% самых нагруженных
сайтов в марте 2015 года [21].
2.2.6 Распределенная файловая система GlusterFS
GlusterFS представляет собой комплекс программного обеспечения,
который позволяет построить распределенное масштабируемое хранилище
данных под управлением параллельной сетевой файловой системы [27].
GlusterFS работает поверх существующих файловых систем и
разработан на основе клиент-серверной архитектуры. Сервер GlusterFS
предоставляет клиентам свое локальное хранилище данных в виде тома,
оставляя за ними право самостоятельно решать вопросы организации
хранения данных. Клиентское приложение GlusterFS по IP- или InfiniBand-
сети подключается к серверам и объединяет все доступные тома в один при
30
помощи системных модулей. Объединенный том монтируется на клиентском
компьютере с помощью технологии FUSE. Все клиенты, обращающиеся к
общему хранилищу, должны быть одинаково настроены для избегания
проблем с целостностью данных. Клиент-серверная архитектура GlusterFS
позволяет построить хранилище объемом до петабайта, при этом используя
аппаратные серверы средней производительности.
Высокая степень конфигурируемости GlusterFS достигается за счет
того, что большая часть функционала сосредоточена в модулях. Системные
модули обеспечивают:
синхронную репликацию данных между серверами;
распределение данных между серверами;
чередование порций данных между серверами;
использование опережающего чтения и запаздывающей записи;
защиту от сбоев и возможность восстановления данных;
балансировку нагрузки;
управление дисковыми квотами.
Преимущество GlusterFS над другими распределенными файловыми
системами для Linux-серверов состоит в том, что она обеспечивает высокий
уровень надежности хранения данных и при ее использовании не требуется
отдельный сервер для хранения метаданных.
2.2.7 Кластерная система управления базами данных Percona XtraDB
Cluster
Percona XtraDB Cluster – программный комплекс с открытым исходным
кодом, использующийся для обеспечения высокой доступности баз данных
[28]. Комплекс объединяет в себе три базовых компонента:
реляционная система управления базами данных Percona Server,
созданная на основе MySQL Server;
программное обеспечение для репликации баз данных от Galera
Cluster;
31
программное обеспечение Percona XtraBackup для неблокирующего
резервного копирования.
Percona Server является расширенной версией сервера баз данных
MySQL Server, в которой сделан упор на повышение производительности и
управляемости. В частности, улучшены механизмы работы с памятью,
система управления блокировками адаптирована для систем с большим
числом процессоров, расширены возможности для диагностики и анализа
собираемой статистики.
Главными особенностями Percona XtraDB Cluster являются:
поддержка синхронной репликации;
поддержка мульти-мастер репликации;
выполнение автоматической инициализации узла после сбоя.
В данном контексте под мульти-мастер репликацией понимается метод
репликации баз данных, который позволяет обновлять данные в базах
любому узлу в кластере. Таким образом, все узлы в кластере могут
обрабатывать как запросы на чтение, так и запросы на запись, в отличие от
репликации типа “ведущий-ведомый”.
Преимуществом Percona XtraDB Cluster над высокопроизводительными
и высоконадежными коммерческими решениями является то, что он
распространяется совершенно бесплатно и при этом сравним с ними по
характеристикам.
Выводы по главе 2
Комплексирование выбранных свободных программных продуктов
позволит создать систему, которая будет удовлетворять всем предъявленным
требованиям. Эта система позволит объединить несколько аппаратных
серверов в единую платформу, которая будет обладать высокой
отказоустойчивостью и будет способна обеспечить высокую доступность
критически важных веб-ориентированных приложений. Система может быть
развернута на большом числе аппаратных платформ, предлагаемых на

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран