Чи часто у вас бувають ситуації, коли ламається обладнання: виходить із ладу сервер, мережеве обладнання, СЗД? Як результат, не працюють сервіси, бази даних, додатки. Несправність одного з елементів обладнання може навіть призвести до проблем в роботі всієї ІТ-інфраструктури. Така неприємна ситуація може статися з будь-якою компанією, якою б великою вона не була, і навіть такі відомі корпорації як Microsoft, Amazon не виняток.
Для того, щоб будь-яка система безперебійно функціонувала, вона повинна відповідати таким характеристикам як відмовостійкість (fault tolerant), стабільність (stability) та надійність (reliability). Також, не менш важливою є і висока доступність системи.
Дуже часто висока доступність не враховується при побудові та розгортанні інфраструктури, мереж, додатків. Причиною цього може бути непоінформованість фахівців, незнання того, як проектуються високодоступні системи, або ж компанія не планує виділяти додатковий бюджет і витрачатися на побудову повноцінної надмірної системи.
В статті ми розповімо, що таке висока доступність і чому її варто враховувати під час проектування систем та інфраструктури.
Що таке висока доступність?
Висока доступність (high availability, скорочено англ. HA) – це здатність системи працювати безперервно без збоїв протягом заданого періоду часу.
Інформаційні технології (ІТ) використовують для позначення високої доступності стандартний показник «п’ять дев’яток», що означає, що система має бути доступною 99,999% часу протягом року.
Підвищена працездатність систем дуже важлива для тих галузей, де системи мають бути доступними та функціональними у будь-який час, тому що від їхньої справності може залежати робота компанії або виробництва.
Системи з високою доступністю насамперед використовують при проектуванні систем управління для авіації та збройних сил, систем охорони здоров’я, і дуже часто для промисловості та у банківській сфері.
Високодоступні системи ретельно проектуються та тестуються перед введенням в експлуатацію. При плануванні кожної з таких систем підбираються компоненти, що відповідають вимогам стандарту доступності. Одними із таких складових компонентів, що забезпечують системам високу доступність, є підтримка резервного копіювання даних, а також аварійне переключення.
Як забезпечується висока доступність?
Балансування навантаження
Балансування навантаження (load balancing) – один з найважливіших та необхідних компонентів, що забезпечує високу доступність систем.
За допомогою розподілювача навантаження робочі навантаження автоматично розподіляються за відповідними системними ресурсами. Коли до системи надходить запит, розподілювач вирішує який ресурс найкраще впорається з поставленим завданням та зможе опрацювати даний запит. Для уникнення перевантаження ресурсів використовують одночасно кілька розподілювачів.
Розглянемо балансування навантаження на прикладі серверів.
Для досягнення високої доступності сервери в системах поєднують у кластери, що мають багаторівневу архітектуру. Кожен із серверів у кластері здатний впоратися з робочим навантаженням, якщо з якоїсь причини один із серверів, що є в кластері, вийде з ладу. Таким чином досягається надмірність, при якій збільшується та покращується працездатність системи. Також забезпечується відпрацювання відмови – у разі збою відбувається перемикання основного сервера на резервний, що у результаті виконуватиме функції основного сервера.
Єдина точка відмови
Для досягнення високої доступності дуже важливим є усунення єдиних точок відмови (SPOF – single point of failure).
Єдина точка відмови – це компонент, несправність чи недоступність якого може призвести до переривання роботи або повної відмови всієї системи. Відбувається так звана «каскадна відмова», один непрацюючий компонент призводить до відключення всіх залежних від нього компонентів.
Кожен компонент, що підтримує функціональність вашої інфраструктури і не має надмірності, вважається єдиною точкою відмови. Для усунення єдиних точок відмови кожен рівень вашої інфраструктури має бути надмірним.
Якщо на два ідентичні дублюючі один одного веб-сервери, що підключені до розподілювача навантаження, надходить трафік, цей трафік буде порівну розподілений між веб-серверами. Якщо один із серверів вийде з ладу, то розподілювач перенаправить весь трафік на працездатний сервер. Рівень сервера в даній ситуації не є єдиною точкою відмови, так як при поломці сервера є розподілювач навантаження, що здатний виявити збій і своєчасно зможе переключитися на другий сервер, що підстрахує, який зможе виконати поставлені завдання.
А от розподілювач навантаження і буде точкою відмови. Якщо він відключиться, то обидва сервери перестануть працювати. Можна налаштувати додатковий розподілювач, але і він стане ще однією точкою відмови, і тоді все одно має бути компонент, що буде проводити моніторинг обох розподілювачів.
Моніторинг
Надмірність сама собою не може гарантувати високу доступність. Повинен існувати механізм для виявлення збоїв та вжиття заходів у ситуації, коли один із компонентів стає недоступним.
Для відстеження збоїв можна використовувати підхід зверху вниз: компоненти верхнього рівня (наприклад, розподілювач навантаження) будуть відповідальними за моніторинг нижнього рівня (серверів). Такий підхід має і свій недолік: в такому випадку верхній рівень не буде відслідковуватись, тому що якщо створити службу виявлення збоїв для верхнього рівня, то вона стане ще однією точкою відмови.
Згідно з таким сценарієм необхідно використовувати розподілений підхід. Декілька резервних компонентів повинні бути з’єднані разом у кластер, де кожен з них повинен бути здатним виявляти збої та відновлюватися.
Про моніторинг ІТ-інфраструктури читайте у статті «Ефективний моніторинг IT-інфраструктури – що і як моніторити»
Ще одним способом моніторингу працездатності систем та активних баз даних є health monitor. Цей інструмент може попередити адміністратора бази даних (DBA) про потенційні проблеми у працездатності системи.
Моніторинг працездатності ІТ-інфраструктури дозволяє завчасно виявити проблеми, які можуть призвести до збоїв в роботі обладнання або до зниження продуктивності систем, що дозволяє уникнути цих проблем, перш ніж вони призведуть до несправності всієї інфраструктури.
Відмовостійкість
Для високої доступності відмовостійкість так само важлива, як і аварійне відновлення. Відмовостійкість – це здатність системи витримувати навантаження і зберігати свою працездатність при відмові одного або кількох компонентів. Відмовостійка система вимагає резервування, щоб мінімізувати збої в роботі.
Для досягнення резервування ІТ-організації повинні дотримуватися стратегії N+1, N+2, 2N або 2N+1.
В даних формулах N позначає наявний компонент, що здатний впоратися з піковим навантаженням. Для резервування в системі повинен бути ще один або кілька таких же компонентів N+1, N+2 для підтримки працездатності системи, якщо один із компонентів вийде з ладу. 2N або 2N+1 означають, що має бути два основних компонента і один додатковий. Ці стратегії гарантують, що для критично важливих компонентів буде хоча б одна резервна копія.
Аварійне відновлення
Аварійне відновлення (DR, disaster recovery) – включає набір політик і процедур, що дозволяють відновити систему після будь-якого збою, стихійного лиха або техногенної катастрофи.
Як же пов’язані між собою висока доступність та аварійне відновлення?
Висока доступність та аварійне відновлення мають одне й те саме завдання: підтримка працездатності систем у робочому стані, з основною відмінністю в тому, що висока доступність призначена для вирішення проблем під час роботи системи, а аварійне відновлення – для вирішення проблем після того, як система дасть збій.
Незалежно від того, наскільки високодоступною є система, завжди повинен бути складений план аварійного відновлення (disaster recovery plan) на випадок непередбачених ситуацій, таких як поломка, кібератака та інших інцидентів.
Такий план повинен складатися з чітко прописаних правил поведінки у разі виходу з ладу будь-якого компонента або всієї інфраструктури, а також ретельно підібраних програмних рішень щодо резервного копіювання та відновлення даних.
Впровадження високої доступності у вашу ІТ-інфраструктуру – це ваш внесок у забезпечення надійності та продуктивності всіх компонентів та систем. Враховуючи високу доступність при проектуванні та побудові інфраструктури, ви зможете уникнути багатьох проблем: уникнути збоїв у роботі обладнання та звести до мінімуму час простоїв, забезпечити безперервність роботи всіх служб, сервісів та додатків.