34
клиенту будут отправлены заголовки Set-Cookie с идентификаторами
обслуживающего веб-сервера, выбранного при помощи алгоритма leastconn,
и PHP-сессии, если таковая устанавливается. Этим обеспечивается обработка
запросов определенного клиента одним и тем же веб-сервером. Общее
количество открываемых одновременно соединений с веб-серверами
ограничено, при этом запросы, приходящие сверх установленной границы,
будут выстроены в очередь. Это позволяет избежать перегрузки веб-
серверов, так как время их ответа напрямую зависит от количества
одновременно обрабатываемых запросов. Также было ограничено количество
открываемых одним и тем же клиентом соединений для защиты от
проведения DDOS-атак на кластер.
Получив запрос от HAProxy, веб-сервер Apache обращается к
директориям с веб-страницами и файлами приложения для формирования
ответа. Эти директории располагаются на реплицируемом томе, который
подключен ко всем узлам кластера и обслуживается GlusterFS. Данное
обстоятельство позволяет веб-серверам на разных узлах работать с одними и
теми же данными, а любые изменения, сделанные на одном из узлов, сразу
будут распространены на весь кластер. В зависимости от типа запрошенной
веб-страницы сервер либо сразу передает ответ по цепочке назад, либо
вызывает PHP-интерпретатор и отсылает ответ после завершения обработки.
При обработке скрипта, скорее всего, будет осуществлено обращение к базе
данных, которая, как и данные веб-приложения, реплицируется между
узлами кластера. Схема последовательности обработки клиентский запросов
отображена в приложении А.
Если произойдет отказ одного из обслуживающих серверов, то
основной балансировщик просто перенаправит поступающие запросы на
рабочие серверы. Кластер будет оставаться работоспособным, пока
функционирует хотя бы один обслуживающий сервер и один балансировщик.