15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
24.10.2024

Какво е сървърно клъстериране? Архитектура, видове и реално приложение

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

За всяко натоварване, при което престоят се превръща директно в загуба на приходи, регулаторна изложеност или риск от повреда на данни, клъстерирането на сървъри не е по избор — то е основното архитектурно изискване.

Как работи клъстерирането на сървъри на архитектурно ниво

В основата си клъстерът е изграден върху три взаимозависими слоя: изчислителни възли, споделено или репликирано хранилище и софтуер за управление на клъстера. Тези слоеве трябва да бъдат проектирани и настроени заедно; неправилна конфигурация в който и да е от тях подкопава гаранциите, които останалите се опитват да осигурят.

Възли

Всеки възел е пълноценен сървър — физически или виртуален — способен да изпълнява целевото натоварване самостоятелно. Възлите комуникират чрез специализирана частна връзка (обикновено отделен NIC или свързана двойка), използвана изключително за сигнали за пулс и вътрешен клъстерен трафик. Тази мрежа е различна от публично достъпната мрежа, която обслужва заявките на крайните потребители.

Пулсът е сърцебиенето на клъстера. Възлите обменят сигнали на конфигурируеми интервали (обикновено на всеки 1–2 секунди). Ако даден възел пропусне определен брой последователни пулсове, мениджърът на клъстера го обявява за неактивен и инициира превключване при отказ. Критичен граничен случай тук е сценарият с разделен мозък: когато самата мрежа за пулс се повреди, и двата възела могат да смятат, че другият е неактивен, и едновременно да се опитат да поемат собствеността върху споделените ресурси, причинявайки повреда на данните. Предотвратяването на разделен мозък изисква механизъм за кворум — ресурс за разрешаване на спорове, като специализиран диск за кворум, сървър-свидетел или базирана в облак услуга за арбитраж.

Споделено и репликирано хранилище

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

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

Софтуер за управление на клъстера

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

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

Всяко решение предоставя различни примитиви за дефиниране на ресурси, ограничения и политики за превключване при отказ. Ресурс в Pacemaker, например, е всяка услуга, управлявана от клъстера — IP адрес, монтиране на файлова система, демон на база данни — а ограниченията дефинират правилата за ред и колокация на тези ресурси.

Основни предимства на клъстерирането на сървъри

Висока наличност и автоматично превключване при отказ

Основният двигател за повечето клъстерни разгръщания е високата наличност (HA). Когато даден възел се повреди, мениджърът на клъстера открива повредата чрез пропуснати пулсове, след което премества засегнатите ресурси към оцелял възел — процес, наречен превключване при отказ. Съвременният клъстерен софтуер може да завърши това за по-малко от 30 секунди за повечето натоварвания, въпреки че възстановяването на ниво база данни (аварийно възстановяване, повторно изпълнение на журнала) добавя допълнително време, което зависи от натоварването.

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

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

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

Балансиране на натоварването и хоризонтална мащабируемост

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

Хоризонталното мащабиране в клъстер означава добавяне на възли, а не надграждане на отделен сървърен хардуер (вертикално мащабиране). Това е икономически значимо: стандартните хардуерни възли са по-евтини на единица изчислителна мощност от висококласните монолитни сървъри, а клъстерът абстрахира основния хардуер от приложението.

Толерантност към грешки и резервираност

Толерантността към грешки надхвърля резервираността на възлите. Проектирането на клъстер от производствен клас отчита:

  • Двойни захранвания на всеки възел, свързани към отделни PDU и UPS единици
  • Резервни мрежови пътища (NIC обвързване или LACP транкинг към отделни комутатори)
  • Multipath I/O (MPIO) за свързаност на хранилището, елиминиращ единични повреди на HBA или кабел
  • Географско разпределение в зони за наличност или центрове за данни за защита срещу повреди на ниво обект

Пренебрегването на някой от тези слоеве създава скрити единични точки на отказ, за които клъстерният софтуер не може да компенсира.

Опростена поддръжка с поетапно обновяване

Едно оперативно подценявано предимство е поддръжката без престой. Даден възел може да бъде плавно евакуиран — ресурсите му мигрирани към партньорски възли — закърпен, рестартиран и върнат в клъстера без никакво прекъсване на услугата. Това се нарича планирано превключване при отказ или живо мигриране във виртуализирани среди. То превръща закърпването на операционната система и подмяната на хардуера от планирани прозорци за поддръжка в рутинни, ненарушаващи операции.

Видове сървърни клъстери

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

Клъстери с висока наличност

HA клъстерите са най-разпространеното корпоративно разгръщане. Двувъзлов активно-пасивен HA клъстер изпълнява натоварването на основния възел, докато вторичният възел остава в режим на готовност, непрекъснато синхронизиран. Вариантът активно-активен изпълнява натоварването на всички възли едновременно, което увеличава пропускателната способност, но изисква приложението да поддържа едновременен многовъзлов достъп — не всички бази данни или унаследени приложения го правят.

Клъстери за балансиране на натоварването

Тези клъстери са по своята същност активно-активни. Балансьорът на натоварването разпределя сесиите между пул от сървъри за приложения. Постоянството на сесиите (sticky сесии) е често срещано изискване за приложения със състояние: балансьорът на натоварването трябва да насочва заявките на даден клиент към същия бекенд възел по време на цялата сесия. Това създава имплицитна зависимост, която усложнява премахването на възли и превключването при отказ, поради което проектирането на приложения без състояние е силно предпочитано в съвременните архитектури.

Клъстери за превключване при отказ

Клъстерите за превключване при отказ дават приоритет на скоростта на възстановяване и целостта на данните пред чистата производителност. Те са стандартната архитектура за разгръщания на SQL Server, Oracle RAC и SAP HANA. Ключовото инженерно предизвикателство е да се гарантира, че целевият възел за превключване при отказ разполага с последователно, актуално копие на всички данни в момента на повредата — поради което синхронната репликация и проектирането на кворума са задължителни в тези среди.

Клъстери за хранилище

Разпределените системи за хранилище като Ceph, GlusterFS и MinIO формират собствен клъстерен слой, независим от изчислителния клъстер над тях. Ceph, например, използва алгоритъм CRUSH за разпределяне на данни между OSD (Object Storage Daemons) без централно метаданни тясно място. Клъстерите за хранилище осигуряват бекенда за постоянни томове за натоварванията на 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.

Клъстериране на ниво приложение срещу клъстериране на ниво инфраструктура

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

Латентност между възлите

При синхронна репликация латентността между възлите пряко влияе върху производителността при запис. Синхронното потвърждение изисква обиколка до репликата преди потвърждаване на записа към клиента. При латентност от 1ms между възлите, теоретичният максимален синхронен пропуск при запис е 1 000 операции в секунда на нишка — независимо от скоростта на локалния диск. Поради това географски разпределените синхронни клъстери са непрактични при разстояния над ~100 км между обектите, и поради това асинхронната репликация се използва за аварийно възстановяване между региони.

Кога клъстерирането на сървъри е правилният избор

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

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

За по-малки натоварвания, които не отговарят на тези критерии, добре конфигурирана среда за VPS Hosting с автоматизирани резервни копия и наблюдение може да осигури достатъчна устойчивост при малка част от разходите.

Предизвикателства и чести режими на отказ

Разходи и инфраструктурни разходи

Минималният жизнеспособен HA клъстер изисква поне два възела, споделено или репликирано хранилище, резервна мрежа и лицензиране на софтуер за управление на клъстера (където е приложимо). За разгръщания на място, това обикновено означава мултипликатор на разходите от 3x до 5x спрямо разгръщане с единичен сървър. Базираното в облак клъстериране с управлявани услуги (AWS RDS Multi-AZ, Azure SQL Managed Instance) прехвърля тези разходи към модел на оперативни разходи, но въвежда обвързаност с доставчик.

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

Неправилната конфигурация на клъстера е една от водещите причини за непланирани прекъсвания в корпоративните среди. Честите грешки включват:

  • Ограждането не е конфигурирано или тествано — клъстерът не може безопасно да се възстанови от повреди на възли
  • Кворумът е неправилно конфигуриран — сценариите с разделен мозък повреждат споделените данни
  • Зависимостите на ресурсите са дефинирани неправилно — услугите стартират в грешен ред след превключване при отказ, причинявайки каскадни повреди
  • Мрежата за пулс е на същия интерфейс като производствения трафик — пиковете в хранилището или трафика предизвикват фалшиви превключвания при отказ

Текущото управление на клъстера изисква инженери, които разбират както клъстерния софтуер, така и приложенията, които той защитава. Това е отделен набор от умения от общата системна администрация.

Тесни места в хранилището

Споделеното хранилище е често срещано тясно място за производителност в 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 Control Panels предлагат набор от опции, подходящи за различни оперативни модели.

SSL терминирането в клъстерирана уеб среда заслужава специално внимание: балансьорът на натоварването обикновено обработва TLS терминирането, декриптирайки трафика преди разпределянето му към бекенд възлите по вътрешната мрежа. Това изисква SSL сертификатите да бъдат осигурени и подновявани на нивото на балансьора на натоварването, а не на отделните възли за приложения — честа неправилна конфигурация, която причинява грешки в сертификата след превключване при отказ на възел.

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

Използвайте тази матрица, за да определите подходящата клъстерна архитектура за дадено натоварване:

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

Практически контролен списък с ключови изводи

Преди разгръщане на сървърен клъстер, проверете всяко от следните:

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

Често задавани въпроси

Какъв е минималният брой възли, необходими за сървърен клъстер?

Технически, два възела са достатъчни за активно-пасивен HA клъстер. Въпреки това, двувъзловият клъстер изисква свидетел за кворум (трети ресурс за разрешаване на спорове), за да предотврати разделен мозък. За активно-активни клъстери за балансиране на натоварването, три възела са практическият минимум за поддържане на резервираност при премахване на един възел за поддръжка.

Какво е разделен мозък в сървърен клъстер и защо е опасен?

Разделен мозък възниква, когато вътрешната комуникационна мрежа на клъстера се повреди, карайки възлите да загубят контакт помежду си. Всеки възел заключава, че другият се е повредил, и се опитва едновременно да поеме собствеността върху споделените ресурси. Ако и двата възела записват едновременно в едно и също споделено хранилище без координация, резултатът е повреда на данните. Механизмите за кворум и ограждането STONITH са двете защити срещу разделен мозък.

Как се различава клъстерирането на сървъри от виртуализацията на сървъри?

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

Може ли клъстерирането на сървъри да елиминира всички престои?

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

Каква е разликата между HA клъстер и настройка за аварийно възстановяване (DR)?

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

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало