TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #5624 2.86K
Отказоустойчивость или высокая доступность?

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

Почему? Потому что «как вы лодку назовете, так она и поплывет». Начнем с понятия «отказоустойчивость». В русском языке он не допускает двойного толкования и обозначает устойчивость системы к отказу части ее компонентов.

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

Примером отказоустойчивой системы можно считать RAID (кроме RAID 0), который сохраняет работоспособность, несмотря на ухудшение характеристик для уровней с четностью, при выходе из строя заданного числа дисков.

При этом сам отказ происходит без видимых последствий для системы и пользователя. На том же RAID1 (зеркало) вы можете вообще не заметить выход из строя одного из дисков.

Теперь вернемся к кластеризации. Является ли кластер отказоустойчивым? Если говорить о современной кластеризации, когда мы говорим о виртуальных средах – то нет. Но то же самое касается и классической кластеризации приложений.

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

При этом все сетевые подключения принимает именно конкретная нода и именно в ее оперативной памяти находится обрабатываемая экземпляром сервиса информация.

Что будет при отказе этой ноды? Все открытые сеансы будут закрыты, вся несохраненная информация в оперативной памяти потеряна, все незафиксированные транзакции будут в последствии откачены.

Так о какой отказоустойчивости идет речь? Понятно, что отказоустойчивостью в классическом ее понимании тут и не пахнет. Все дело в неправильном и неудачном переводе термина «failover», в английском языке, в отличие от русского, имеющего несколько значений.

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

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

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

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

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

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

В связи с чем сегодня употребление термина «failover» считается нежелательным, как и русскоязычного «отказоустойчивый». Для того, чтобы избежать путаницы рекомендуется использовать термин «high availability» или «высокая доступность» по-русски.

Этот термин не вызывает неоправданных ожиданий и абсолютно верно отражает основную характеристику системы – доступность. Потому что даже при отказе одного или нескольких узлов ваши сервисы будут в течении короткого времени восстановлены и снова окажутся доступны для пользователей.
  • 👍 51
More from @interface31
  1. Oct 2, 2026Без лишнего шума и пыли вышла Aspia 3.0. Ключевые изменения в выжимке ниже: 1️⃣ Архитектур…
  2. Oct 2, 2026Post #6826
  3. Oct 1, 2026V2V миграция при помощи Vinchin Backup & Recovery Виртуализация сегодня – норма жизни, даж…
  4. Oct 1, 2026Post #6822
  5. Oct 1, 2026Проблема, как и статья не новая, но регулярно возникают вопросы. Не включается сетевое обн…
  6. Oct 1, 2026Post #6820
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →