15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
24.10.2024

Что такое кластеризация серверов? Архитектура, типы и реализация в реальных условиях

Кластеризация серверов — это практика объединения нескольких физических или виртуальных серверов, называемых узлами, для работы в качестве единой унифицированной системы. Эта архитектура обеспечивает распределение нагрузки, автоматическое переключение при отказе и горизонтальную масштабируемость, гарантируя доступность приложений даже при отказе отдельных аппаратных или программных компонентов. В правильно настроенном кластере ни один узел не является точкой отказа — это основополагающий принцип, отличающий кластерную инфраструктуру от автономных серверных развёртываний.

Для любой рабочей нагрузки, где простой напрямую влечёт потерю дохода, регуляторные риски или угрозу повреждения данных, кластеризация серверов не является опциональной — это базовое архитектурное требование.

Как работает кластеризация серверов на архитектурном уровне

В основе кластера лежат три взаимозависимых уровня: вычислительные узлы, общее или реплицированное хранилище и программное обеспечение управления кластером. Эти уровни должны проектироваться и настраиваться совместно; неправильная конфигурация любого из них подрывает гарантии, которые обеспечивают остальные.

Узлы

Каждый узел представляет собой полноценный сервер — физический или виртуальный — способный самостоятельно выполнять целевую рабочую нагрузку. Узлы взаимодействуют через выделенный частный межсоединительный канал (как правило, отдельный NIC или объединённая пара), используемый исключительно для сигналов пульса и внутреннего трафика кластера. Эта сеть отделена от публичной сети, обслуживающей запросы конечных пользователей.

Пульс — это жизненный ритм кластера. Узлы обмениваются сигналами с настраиваемыми интервалами (обычно каждые 1–2 секунды). Если узел пропускает заданное количество последовательных сигналов пульса, менеджер кластера объявляет его недоступным и инициирует переключение при отказе. Критическим граничным случаем здесь является сценарий разделённого мозга (split-brain): когда сама сеть пульса выходит из строя, оба узла могут считать другой недоступным и одновременно пытаться захватить владение общими ресурсами, что приводит к повреждению данных. Предотвращение split-brain требует механизма кворума — ресурса-арбитра, такого как выделенный диск кворума, сервер-свидетель или облачный сервис арбитража.

Общее и реплицированное хранилище

Архитектура хранилища существенно варьируется в зависимости от типа кластера:

  • Кластеры с общим диском используют устройство SAN (Storage Area Network) или NAS (Network-Attached Storage), которое все узлы монтируют одновременно. Менеджер кластера использует резервирования SCSI или распределённые менеджеры блокировок (DLM) для предотвращения параллельных записей, которые могут повредить данные.
  • Кластеры без общего хранилища (shared-nothing) реплицируют данные между узлами на уровне блоков или приложений (например, DRBD для Linux, группы доступности SQL Server Always On). Каждый узел владеет своим локальным хранилищем; репликация поддерживает их синхронизацию.
  • Гибридные архитектуры сочетают оба подхода, используя общее хранилище для основных данных и репликацию для аварийного восстановления на географически удалённой площадке.

Программное обеспечение управления кластером

Менеджер кластера отвечает за оркестрацию ресурсов, мониторинг работоспособности и автоматическое переключение при отказе. Широко применяемые решения включают:

  • Pacemaker + Corosync — де-факто стандарт на Linux (RHEL, CentOS, Ubuntu)
  • Windows Server Failover Clustering (WSFC) — встроенное решение для сред Windows Server
  • Kubernetes — кластеризация для контейнеров с планированием подов, самовосстановлением и обновлениями без простоя
  • VMware vSphere HA / vSAN — кластеризация на уровне гипервизора для виртуализированных рабочих нагрузок

Каждое решение предоставляет различные примитивы для определения ресурсов, ограничений и политик переключения при отказе. Ресурс в Pacemaker, например, — это любой сервис, которым управляет кластер: IP-адрес, точка монтирования файловой системы, демон базы данных, — а ограничения определяют порядок и правила совместного размещения этих ресурсов.

Основные преимущества кластеризации серверов

Высокая доступность и автоматическое переключение при отказе

Основным стимулом для большинства кластерных развёртываний является высокая доступность (HA). При отказе узла менеджер кластера обнаруживает сбой по пропущенным сигналам пульса, затем перемещает затронутые ресурсы на работоспособный узел — этот процесс называется переключением при отказе (failover). Современное программное обеспечение кластера может выполнить это менее чем за 30 секунд для большинства рабочих нагрузок, хотя восстановление на уровне базы данных (аварийное восстановление, воспроизведение журнала) добавляет дополнительное время, зависящее от рабочей нагрузки.

Целевое время восстановления (RTO) и целевая точка восстановления (RPO) — два показателя, определяющих качество HA:

  • RTO — как долго сервис недоступен во время переключения при отказе
  • RPO — какой объём данных может быть потерян (измеряется во времени) при отказе основного узла до завершения репликации

Синхронная репликация обеспечивает RPO = 0, но вносит задержку записи, поскольку основной узел должен ждать подтверждения каждой записи от реплики. Асинхронная репликация снижает задержку, но допускает ненулевое RPO. Выбор между ними — бизнес-решение, а не сугубо техническое.

Балансировка нагрузки и горизонтальная масштабируемость

Кластеры с балансировкой нагрузки распределяют входящие запросы между узлами с использованием алгоритмов, таких как round-robin, наименьшее количество соединений, IP-хеш или взвешенное распределение. Сам балансировщик нагрузки — аппаратный (F5, Citrix ADC) или программный (HAProxy, NGINX, LVS) — располагается перед кластером и должен быть резервированным, чтобы не стать единой точкой отказа.

Горизонтальное масштабирование в кластере означает добавление узлов, а не модернизацию отдельного серверного оборудования (вертикальное масштабирование). Это экономически значимо: узлы на базе стандартного оборудования дешевле в расчёте на единицу вычислительной мощности, чем высококлассные монолитные серверы, а кластер абстрагирует базовое оборудование от приложения.

Отказоустойчивость и резервирование

Отказоустойчивость выходит за рамки резервирования узлов. Проектирование кластера производственного уровня учитывает:

  • Двойные блоки питания на каждом узле, подключённые к отдельным PDU и источникам бесперебойного питания
  • Резервные сетевые пути (объединение NIC или транкинг LACP к отдельным коммутаторам)
  • Многопутевой ввод-вывод (MPIO) для подключения к хранилищу, устраняющий единичные отказы HBA или кабелей
  • Географическое распределение по зонам доступности или центрам обработки данных для защиты от сбоев на уровне площадки

Игнорирование любого из этих уровней создаёт скрытые единые точки отказа, которые кластерное программное обеспечение не может компенсировать.

Упрощённое обслуживание без простоев

Одним из операционно недооценённых преимуществ является обслуживание без простоев. Узел может быть корректно эвакуирован — его ресурсы перенесены на соседние узлы — исправлен, перезагружен и возвращён в кластер без какого-либо прерывания сервиса. Это называется плановым переключением при отказе или живой миграцией в виртуализированных средах. Это превращает установку патчей ОС и замену оборудования из запланированных окон обслуживания в рутинные, неразрушительные операции.

Типы серверных кластеров

Тип кластераОсновная цельТипичная модель хранилищаРаспространённые варианты использования
Высокой доступности (HA)Минимизация простоев за счёт автоматического переключения при отказеОбщий SAN или синхронная репликацияБазы данных, ERP-системы, критические API
Балансировки нагрузкиРаспределение трафика, максимизация пропускной способностиБез состояния или с репликацией сессийВеб-серверы, граничные узлы CDN, API-шлюзы
Переключения при отказеРезервирование и аварийное восстановлениеАсинхронная репликацияСистемы финансовых транзакций, медицинские записи
Хранилища (например, Ceph, GlusterFS)Масштабируемый распределённый доступ к даннымРаспределённое объектное/блочное хранилищеХранилища данных, потоковое мультимедиа, большие данные
Вычислительный (HPC)Параллельная обработка тяжёлых рабочих нагрузокВысокоскоростная параллельная файловая система (Lustre, GPFS)Научное моделирование, обучение ML, рендеринг
Оркестрация контейнеровАвтоматическое планирование рабочих нагрузок и самовосстановлениеПостоянные тома через CSI-драйверыМикросервисы, CI/CD-конвейеры, SaaS-платформы

Кластеры высокой доступности

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

Кластеры балансировки нагрузки

Эти кластеры по своей природе являются активными-активными. Балансировщик нагрузки распределяет сессии между пулом серверов приложений. Сохранение сессий (sticky sessions) является распространённым требованием для приложений с состоянием: балансировщик нагрузки должен направлять запросы данного клиента на один и тот же серверный узел на протяжении всей сессии. Это создаёт неявную зависимость, которая усложняет удаление узлов и переключение при отказе, поэтому в современных архитектурах настоятельно предпочтительно проектирование приложений без состояния.

Кластеры переключения при отказе

Кластеры переключения при отказе ставят во главу угла скорость восстановления и целостность данных, а не чистую производительность. Они являются стандартной архитектурой для развёртываний SQL Server, Oracle RAC и SAP HANA. Ключевая инженерная задача — обеспечить наличие у целевого узла переключения согласованной актуальной копии всех данных в момент отказа, поэтому синхронная репликация и проектирование кворума в этих средах не подлежат обсуждению.

Кластеры хранилищ

Распределённые системы хранения, такие как Ceph, GlusterFS и MinIO, формируют собственный уровень кластера, независимый от вычислительного кластера над ними. Ceph, например, использует алгоритм CRUSH для распределения данных по OSD (демонам объектного хранилища) без центрального узкого места метаданных. Кластеры хранилищ обеспечивают бэкенд постоянных томов для рабочих нагрузок Kubernetes и уровень общего хранилища для вычислительных кластеров HA.

Вычислительные кластеры и HPC

Кластеры высокопроизводительных вычислений используют планировщики заданий (SLURM, PBS, LSF) для выделения узлов вычислительным задачам. Узлы соединены через InfiniBand или высокоскоростной Ethernet для поддержки низкозадержечной высокополосной коммуникации MPI (Message Passing Interface), необходимой параллельным научным рабочим нагрузкам. Для рабочих нагрузок с ускорением на GPU — обучение глубокого обучения, молекулярная динамика, вычислительная гидродинамика — инфраструктура GPU Hosting с межсоединениями NVLink или NVSwitch является актуальной архитектурой.

Практические соображения по реализации

Проектирование сети

Сеть кластера — это не единая сеть. Правильно спроектированный кластер имеет как минимум три отдельных сетевых сегмента:

  1. Публичная сеть — трафик, обращённый к клиентам
  2. Частный межсоединительный канал кластера — пульс и внутренняя коммуникация кластера
  3. Сеть хранилища — трафик iSCSI, NFS или Fibre Channel к бэкенду общего хранилища

Совмещение этих сетей на одном NIC или VLAN создаёт конкуренцию и порождает сценарии, при которых насыщение I/O хранилища нарушает сигналы пульса, вызывая ложные переключения при отказе.

Фенсинг и STONITH

STONITH (Shoot The Other Node In The Head — «застрелить другой узел в голову») — это механизм, с помощью которого кластер принудительно отключает или перезагружает узел, который, по его мнению, вышел из строя. Без фенсинга узел, ставший неотзывчивым, но не полностью мёртвым, может продолжать запись в общее хранилище, пока кластер уже выполнил переключение при отказе — это гарантированный путь к повреждению данных. Реализации STONITH включают управление питанием на основе IPMI/iDRAC, коммутацию PDU и принудительное отключение питания на уровне гипервизора. Любой кластер HA без работающей конфигурации фенсинга на самом деле не является кластером HA.

Кластеризация на уровне приложений vs. кластеризация на уровне инфраструктуры

Критическое различие, которое часто упускается из виду: кластеризация инфраструктуры (Pacemaker, WSFC) обеспечивает переключение при отказе на уровне узла, но приложение также должно быть спроектировано так, чтобы выдерживать внезапные перезапуски. Базы данных требуют аварийного восстановления; серверы приложений могут нуждаться в повторном установлении соединений с бэкендами; кэши могут быть холодными после переключения при отказе. Кластеризация на уровне приложений — такая как группы репликации баз данных, кластеры Elasticsearch или кластеры брокеров Kafka — обеспечивает согласованность данных и доступность на уровне данных, независимо от инфраструктуры под ней. Производственные среды, как правило, объединяют оба подхода: инфраструктурный HA для вычислительного уровня и репликацию на уровне приложений для уровня данных.

Задержка между узлами

При синхронной репликации задержка между узлами напрямую влияет на производительность записи. Синхронная фиксация требует одного цикла обмена с репликой перед подтверждением записи клиенту. При задержке между узлами 1 мс теоретическая максимальная пропускная способность синхронной записи составляет 1000 операций в секунду на поток — независимо от скорости локального диска. Именно поэтому географически распределённые синхронные кластеры нецелесообразны при расстоянии между площадками более ~100 км, и именно поэтому для межрегионального аварийного восстановления используется асинхронная репликация.

Когда кластеризация серверов является правильным выбором

Кластеризация серверов целесообразна, когда стоимость простоя или потери данных превышает стоимость кластерной инфраструктуры. Конкретные показатели:

  • Приложение имеет SLA, требующий доступности 99,9% или выше (менее 8,7 часов простоя в год)
  • Рабочая нагрузка не может прерываться для установки патчей, замены оборудования или изменения ёмкости
  • Паттерны трафика непредсказуемы или скачкообразны, требуя эластичного горизонтального масштабирования
  • Нормативные требования предписывают резервирование данных и возможность аудита (PCI-DSS, HIPAA, SOC 2)
  • Приложение обрабатывает финансовые транзакции, медицинские записи или коммуникации в реальном времени, где потеря данных влечёт юридические последствия

Для небольших рабочих нагрузок, не отвечающих этим критериям, хорошо настроенная среда VPS Hosting с автоматическими резервными копиями и мониторингом может обеспечить достаточную устойчивость при значительно меньших затратах.

Проблемы и распространённые режимы отказов

Стоимость и накладные расходы инфраструктуры

Минимально жизнеспособный кластер HA требует как минимум двух узлов, общего или реплицированного хранилища, резервной сети и лицензий на программное обеспечение управления кластером (где применимо). Для локальных развёртываний это, как правило, означает коэффициент увеличения стоимости в 3–5 раз по сравнению с развёртыванием на одном сервере. Облачная кластеризация с использованием управляемых сервисов (AWS RDS Multi-AZ, Azure SQL Managed Instance) переводит эти затраты в модель операционных расходов, но создаёт привязку к поставщику.

Сложность конфигурации и операционная экспертиза

Неправильная конфигурация кластера является одной из ведущих причин незапланированных простоев в корпоративных средах. Распространённые ошибки включают:

  • Фенсинг не настроен или не протестирован — кластер не может безопасно восстановиться после отказов узлов
  • Кворум настроен неправильно — сценарии split-brain повреждают общие данные
  • Зависимости ресурсов определены некорректно — сервисы запускаются в неправильном порядке после переключения при отказе, вызывая каскадные сбои
  • Сеть пульса на том же интерфейсе, что и производственный трафик — всплески хранилища или трафика вызывают ложные переключения при отказе

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

Узкие места хранилища

Общее хранилище является распространённым узким местом производительности в кластерах HA. Все узлы конкурируют за пропускную способность I/O к одному и тому же бэкенду хранилища. Плохо спроектированные кластеры хранилищ становятся ограничивающим фактором для всей системы. Решения включают многоуровневое хранилище (NVMe для горячих данных, вращающиеся диски для холодных), кэширование чтения на узлах и распределённые архитектуры хранилищ, устраняющие единственный контроллер хранилища.

Для рабочих нагрузок, требующих максимальной производительности I/O и полного контроля над оборудованием, Dedicated Servers с локальным NVMe-хранилищем и аппаратным RAID обеспечивают прочную основу для построения оптимизированных под хранилище узлов кластера.

Архитектура кластера для сред веб-хостинга

Кластеры, обращённые к вебу, имеют специфический архитектурный паттерн, заслуживающий отдельного детального описания:

[Client Requests]
        |
[Load Balancer Layer] (HAProxy / NGINX / cloud LB — active-active pair)
        |
[Application Server Layer] (Node 1, Node 2, Node N — stateless)
        |
[Database Layer] (Primary + Replica — HA cluster with automatic failover)
        |
[Shared Storage / Object Storage] (Ceph, NFS, S3-compatible)

Каждый уровень независимо масштабируется и резервируется. Серверы приложений не имеют состояния — состояние сессии хранится в общем кластере Redis или Memcached, а не на локальном узле. Такой дизайн означает, что любой узел приложения может быть удалён или добавлен без влияния на активные сессии.

Для команд, управляющих веб-инфраструктурой в масштабе, среды VPS с cPanel предоставляют управляемую панель управления, упрощающую задачи, смежные с кластеризацией, такие как управление DNS, выпуск SSL и конфигурация нескольких доменов. Для команд, предпочитающих детальный контроль над своим стеком кластеризации, Панели управления VPS предлагают ряд вариантов, подходящих для различных операционных моделей.

Завершение SSL в кластеризованной веб-среде заслуживает особого внимания: балансировщик нагрузки, как правило, обрабатывает завершение TLS, расшифровывая трафик перед его распределением по серверным узлам через внутреннюю сеть. Это требует, чтобы SSL-сертификаты выпускались и обновлялись на уровне балансировщика нагрузки, а не на отдельных узлах приложений — распространённая неправильная конфигурация, вызывающая ошибки сертификатов после переключения узла при отказе.

Матрица технических решений

Используйте эту матрицу для определения подходящей архитектуры кластера для данной рабочей нагрузки:

ТребованиеРекомендуемая архитектураКлючевая технология
RPO = 0, RTO < 30 сАктивный-пассивный HA, синхронная репликацияPacemaker + DRBD, WSFC + Always On
RPO > 0 допустимо, межрегиональное DRАктивный-пассивный, асинхронная репликацияMySQL Group Replication, потоковая передача PostgreSQL
Высокая пропускная способность чтения, умеренная записьАктивный-активный с репликами чтенияHAProxy + реплики чтения PostgreSQL
Веб-уровень без состояния, переменный трафикКластер балансировки нагрузки, автомасштабированиеNGINX, Kubernetes HPA
Хранение данных петабайтного масштабаРаспределённый кластер хранилищCeph, GlusterFS, MinIO
Параллельные вычисления с ускорением GPUHPC-кластер с высокоскоростным межсоединениемSLURM + InfiniBand + CUDA
Контейнерные рабочие нагрузки, микросервисыКластер оркестрации контейнеровKubernetes, Nomad

Практический контрольный список ключевых выводов

Перед развёртыванием серверного кластера проверьте каждый из следующих пунктов:

  • Кворум настроен с нечётным числом голосов или выделенным арбитром — никогда не развёртывайте двухузловой кластер без свидетеля кворума
  • Фенсинг (STONITH) протестирован путём физического отключения сетевого кабеля и подтверждения того, что кластер корректно изолирует узел и завершает переключение при отказе
  • Сети пульса и производственная сеть находятся на отдельных физических интерфейсах — никогда не совмещайте их
  • Многопутевой ввод-вывод хранилища (MPIO) настроен с как минимум двумя независимыми путями к общему хранилищу
  • Задержка репликации отслеживается с определёнными пороговыми значениями оповещений до нарушения RPO
  • Переключение при отказе протестировано под нагрузкой — кластер, который никогда не тестировался, не является кластером, это теория
  • Поведение приложения после переключения при отказе проверено — убедитесь, что приложение переподключается к новому основному узлу, очищает устаревшие соединения и корректно обслуживает трафик
  • События кластера записываются на центральный внешний сервер журналов — не в локальное хранилище узла, которое может быть недоступно во время диагностируемого сбоя
  • SSL-сертификаты выпускаются на уровне балансировщика нагрузки, а не на отдельных серверных узлах
  • Планирование ёмкости учитывает доступность N-1 узлов — кластер должен справляться с полной производственной нагрузкой при одном отключённом узле

Часто задаваемые вопросы

Каково минимальное количество узлов, необходимых для серверного кластера?

Технически двух узлов достаточно для кластера HA в режиме активный-пассивный. Однако двухузловой кластер требует свидетеля кворума (третьего ресурса-арбитра) для предотвращения split-brain. Для кластеров балансировки нагрузки в режиме активный-активный три узла являются практическим минимумом для поддержания резервирования при удалении одного узла на обслуживание.

Что такое split-brain в серверном кластере и почему это опасно?

Split-brain возникает, когда внутренняя коммуникационная сеть кластера выходит из строя, вызывая потерю связи между узлами. Каждый узел приходит к выводу, что другой вышел из строя, и пытается одновременно захватить владение общими ресурсами. Если оба узла одновременно записывают в одно и то же общее хранилище без координации, результатом является повреждение данных. Механизмы кворума и фенсинг STONITH — два средства защиты от split-brain.

Чем кластеризация серверов отличается от виртуализации серверов?

Виртуализация разделяет один физический сервер на несколько изолированных виртуальных машин. Кластеризация соединяет несколько серверов для работы как единой системы. Эти два подхода дополняют друг друга: виртуализированные серверы (VM) часто используются в качестве узлов кластера, а гипервизорные платформы, такие как VMware vSphere, включают собственные функции кластеризации HA, работающие на уровне VM, а не на уровне ОС или приложения.

Может ли кластеризация серверов устранить все простои?

Нет. Кластеризация значительно сокращает незапланированные простои за счёт автоматизации переключения при отказе, но не устраняет их полностью. Само переключение при отказе занимает время (от секунд до минут в зависимости от рабочей нагрузки и конфигурации кластера). Кроме того, ошибки в программном обеспечении кластера, одновременные отказы нескольких узлов и сценарии сетевого разделения могут вызывать простои, которые кластеризация не может предотвратить. Цель состоит в соответствии определённому SLA доступности, а не в достижении абсолютного нулевого простоя.

В чём разница между кластером HA и настройкой аварийного восстановления (DR)?

Кластер HA обеспечивает автоматическое, почти мгновенное переключение при отказе в пределах одной площадки или зоны доступности, как правило, с RPO = 0 и RTO, измеряемым секундами или минутами. Настройка DR реплицирует данные на географически удалённую площадку и требует ручного или полуавтоматического вмешательства для активации, с RTO, измеряемым минутами или часами, и ненулевым RPO из-за асинхронной репликации. Производственные среды, требующие как локальной устойчивости, так и географической избыточности, развёртывают кластеризацию HA внутри площадки и репликацию DR между площадками.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать