Основные технологические моменты.
Решения на основе дешевых компьютеров объединенных в единый кластер давно себя зарекомендовали на загруженных Web-сайтах. С точки зрения клиента вся эта группа машин выглядит как единый экземпляр сервера, они работают идентично одиночным серверам, но в дополнении к ним обеспечивают балансировку нагрузки и передачу управления при сбое.
Кластеризация дает следующие преимущества:
Балансировка запросов, равномерная или определяемая правилами
Отказоустойчивость к сбоям
«Линейное» увеличение производительности
Прозрачное обслуживание и замена узлов кластера
Кластеры бывают трех типов:
High availability-clusters – HA-clusters – кластеры высокой доступности – на основе общего дискового массива. Обычно используют SCSI RAID или SAN (в единицу времени только один из узлов может владеть этим массивом, и соответственно выполнять приложение, другие находится в вечном ожидании).
High Performance Computing Clusters – HPC-clusters – кластеры для обеспечения производительности вычислений. Создаются для распределения одной задачи на множество компьютеров.
Massive Parallel Processing Clusters – MPP-clusters – кластеры для обеспечения масштабируемости сервисов. Создаются для распределения множества однотипных задач на множество компьютеров. Данный тип кластера обычно используется для организации WEB – ферм и мы его рассмотрим более подробно.
Различают две основные разновидности типов кластеризации серверов в случае MPP-clusters:
«вертикальная» - это когда, например, запускают несколько web приложений на одном сервере, что бы максимально оптимизировать используемые ресурсы сервера,
«горизонтальная» - более традиционный подход – это определение клонов приложения на нескольких машин, сформировав для них единый образ системы.
Вполне разумно использование на узлах кластера еще и transparent-proxy или http-сервера в режиме web-акселератора, что позволит создать дополнительное «вертикальное» звено, для оптимизации нагрузки
Использование систем балансировки накладывает определенные обязанности на разработчиков – использование общего или реплицированного источника данных, общего хранилища файлов (NFS), общие для всех файлы настроек и т.д. т.п.
Для «горизонтальной» балансировки можно использовать несколько технологий и продуктов, работающих на различных сетевых уровнях по модели OSI:
сетевом – трансляция адресов с управлением к среде передачи (подмена MAC адреса)
транспортном – перенаправление TCP трафика (port-mapping, NAT)
прикладном – работа через web-акселераторы для оптимизации HTTP запросов (apache mod_accel,mod_bakhand,mod_proxy),lighttpd,nginx).
Отдельно надо сказать про технологию DNS Round Robin, когда сервер имен на каждый новый запрос на преобразование имени в IP отдает очередной адрес из введенного ранее пула. Эта технология неэффективна и может использоваться только в смешанном варианте с другими, так как каждый провайдер имеет в своем распоряжении кэширующие DNS сервера, которые сводят на НЕТ все плюсы.