рекомендуем:


Обеспечение доступности высоконагруженного сервера
21.12.12 23:37

Обеспечение доступности высоконагруженного internet-сервера корпоративного предприятия

А.А. Касьянов

В современных реалиях развития сети Internet, количества пользователей и количество Internet-сайтов становится необходимым позаботиться о доступности сайта компании, в периоды его высокой посещаемости.

Доступность означает возможность беспрепятственного доступа к веб-сайту на Internet-сервере компании в любое время и из любой точки мира.

Веб-сайт – комплекс, состоящий из статических файлов, Базы Данных и комплекса скриптов-программ, которые обрабатывают информацию из БД и подставляют ее в страницы веб-сайта. Все это хранится и обрабатывается на сервере, под управлением мощной программы веб-сервера (напр. Apache).

Веб-сайт компании является одним из основных источников информации о компании. И от его наполнения и доступности складывается мнение о компании. Можно ли доверять компании, сайт которой часто не открывается? Хоть компания и крупная, но невозможно узнать ни о продукции, ни об услугах. Даже контактный телефон найти становится проблематично.

Но что же делать, если компания следит за сайтом, платит огромные деньги за веб-сервер и его поддержание, но сайт все равно открывается очень медленно или вообще не открывается.

В этом случае основной проблемой становится невозможность веб-сервера обработать все запросы от посетителей, и, переходя порог, допустим в 30 человек одновременно подключившихся, веб-сервер начинает «захлебыватся» и работать очень медленно.

На этом этапе можно повысить доступность сайта с помощью программной оптимизации Internet-сервера.

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

Во вторых, необходимо принудительно отдавать статические файлы через отдельную программу веб-сервера (напр. Nginx). А так же с помощью nginx поставить всех посетителей в виртуальную параллельную очередь, к нескольким Apache-процессам. Этим мы увеличиваем скорость отдачи контента и оптимизируем количество соединений с БД.

После этой оптимизации статические файлы будут отдаваться проксирующим сервером, практически не загружая ресурсы сервера, несколько параллельных процессов Apache позволят сразу нескольким пользователям одновременную работу. Все «медленные» пользователи не будут загружать процессы Apache, так как nginx получит ответ от сервера и будет отдавать статическую (для него теперь) информацию от Apache, освободив процесс Apache.

Однако, если количество посещений будет только расти – только программной оптимизацией не обойтись. Следующим шагом будет аппаратная оптимизация.

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

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

Работа сервера в «облаке» представляет собой виртуальный сервер, который может автоматически масштабироваться по требованию.

Масштабирование может быть двух видов: горизонтальным и вертикальным.

Идея Горизонтального масштабирования – когда первый сервер «загружен» - сразу же включается копия этого сервера, и через специальный «балансировщик нагрузки» пользователей перенаправляют на новый сервер. Когда необходимость в дополнительном сервере отпадет – он выключается. Основной недостаток: необходимо настраивать и оптимизировать приложения сервера специально для такой работы.

Вертикальное масштабирование – это когда сбор статистики «загруженности» происходит на самом сервере, и при необходимости количество ресурсов просто добавляется «на лету», при спаде нагрузки количество ресурсов понижается. Основной недостаток: невозможно получить больше ресурсов, чем аппаратный сервер компании.

Использование «облаков» кроме обеспечения доступности, остаются еще и экономически эффективным средством содержания собственного Internet-сервера, в отличие от собственного парка серверов, так как в их основе лежит принцип «оплаты только по факту», т.е. в моменты когда посещаемость невелика – ресурсы сервера минимальны и тратятся минимальные средства.

Такая инфраструктура должна обеспечить доступность при любом количестве посещений Internet-сервера компании.