Прост failover за уебсайт (мониторинг + динамичен DNS)

В тази статия искам да покажа колко лесно и безплатно можете да създадете схема за failover за уебсайт (или всяка друга интернет услуга) на базата на мониторинг okerr и динамична DNS услуга. Тоест, в случай на всякакви проблеми с основния сайт (от проблеми с 'PHP Error' на страницата, до недостатъчно пространство или просто подозрително малко на брой поръчки в случай на интернет магазин), новите посетители ще бъдат пренасочени към втория (третия и т.н.) работещ сървър или на страница 'Извинете', където любезно ще им обяснят, че 'има проблем, вече сме запознати и работим по него, ще го оправим скоро' (а вие в този случай наистина ще сте вече запознати и ще можете да решавате проблема).

Да живееш с failover или без?

Докато не се случи някакъв проблем — няма особена разлика. Но когато се случи, без failover често се случва следното: опитвате се бързо да разберете каква е проблема, не успявате (бекъпите не се разгръщат, софтуерът по някаква причина не работи както се предполага, според документацията и др.), а времето ви е ограничено, сървърите-сайтове са паднали, клиентите звънят, всички са в нерви, опитвате да поправите нещата грубо и небрежно „на скотче”, после сякаш нагласите с костил и всичко продължава. Мислите, че на спокойствие трябва да разберете повече и да направите всичко красиво, но няма нищо по-постоянно от временното.

Сега, как се случва всичко това в красивия вариант с файловер:

  • Възниква грешка
  • Грешката се открива автоматично
  • Изпраща се уведомление
  • Превключва се на един от резервните сървъри
  • Спокойно и без паника се анализира проблемът, разрешава се и сървърът отново влиза в експлоатация.

Разбира се, в тази схема също могат да възникнат свои затруднения, но все пак, схемата е линейна, всеки етап тук е прост и най-важното — може да бъде тестван отделно, така че рискът от провал на схемата е много по-нисък, а всички действия могат да бъдат автоматизирани и изпълнени бързо (в отличие от задачата да откриете и коригирате неизвестна епична драма). Вашият самолет е кацнал в далечна страна, вие включвате телефона и виждате в телеграмата уведомление, че сървърът е паднал, но всичко е наред, резервният сървър е активиран, можете да продължите пътуването си, не е нужно да летите назад или да поправяте по SSH от най-близкото кафене с WiFi. Ще се разберете, когато е по-удобно.

Бъдещето вече е тук!

По-рано основният проблем, който правеше failover често неприемливо решение, беше сумата на разходите за него. Или трябваше да купите скъпи устройства (и да наемате още по-скъпи специалисти). Или да се опитвате да направите нещо сложно по ръководства (срещал съм дори вариант, при който два сървъра се свързват с нулев модем и обменят heartbeat, за да уведоми резервният сървър в нужния момент и да поеме управлението). Сега имаме по-прости и безплатни решения. Ако имате сайт с котки — нямате оправдание, ако все още не сте реализирали failover!

Освен това, за схемата failover е нужен и сървър (или може би не един), а по-рано това беше голям разход, сега можете да вземете VDS на символична цена.

Най-надеждният сайт с котки

За практическа илюстрация на решението с okerr + динамичен DNS, стартирахме своя сайт с котки cat.okerr.com. Мразим котки, затова почти няма да има такива там. Имаме три сайта, всеки от които изглежда по сходен начин (всички на един и същи шаблон), но с различни котета, за да е лесно да се различават, и всеки предоставя техническа информация, за да видите как работи failover. Страницата се обновява автоматично на всеки 1 минута, но винаги можете да натиснете reload в браузъра.

В техническата информация има редица “status=OK”. Понякога сървърите симулират проблеми и пишат status=ERR. Главният сървър “как да кажа пада” на 20 минута на всеки час (0:20, 1:20, 2:20,...). Резервният (backup) сървър на 40 минута. Последният сървър (“sorry”-сървър) работи винаги. На 0 минута на всеки час, основният и резервният сървър “възстановяват”.

Прост failover за уебсайт (мониторинг + динамичен DNS)

Ако отворите сайта и го оставите в раздела — ще видите, че той никога не пада (въпреки че всеки отделен сървър периодично симулира проблем), а в случай на проблем с сървъра, просто “бегнете” между активните сървъри. Ще се променят картинките, имената и адресите на сървърите и ролята им. Понякога можете да уловите момента, когато status=ERR (проблемът вече съществува, но цялата схема failover все още не е сработила), но следващото обновление ще ви покаже страницата от работещия сайт.

Failover на okerr + динамичен DNS

Нека видим как е устроено под капака. Задачата на файловера е адресът cat.okerr.com винаги да сочи към IP адреса на работещия сървър.
За всеки от сърверите, които държат нашия котосайт в okerr, има индикатор, който проверява състоянието му веднъж в минута.

Прост failover за уебсайт (мониторинг + динамичен DNS)

На този екран виждаме как сайтът cat.okerr.com се проверява от сървера alpha.okerr.com. Страницата трябва да съдържа status=OK, и както виждаме отгоре, статусът на индикатора в момента е OK. Когато сърверът “се повреди”, ще бъде ERR. (Това е само един пример за индикатор, okerr е мониторинг, затова можете да прикрепите всякакъв тип индикатор, например, да проверявате свободното място на диска, количество нови поръчки в базата и дори логически индикатори, например, през нощта ще имате едни критерии за грешка, а през деня - други).

В настройките на проекта създадохме схема за failover с тези индикатори:

Прост failover за уебсайт (мониторинг + динамичен DNS)

В схемата има три индикатора (три сървера), различни по приоритет. Главният сървер за сайта е charlie, ако той не работи (не е с “status=OK” или просто е недостъпен), следва bravo, а в последен случай - alpha. В дясната част на страницата се показва състоянието на DNS записа на различни сървъри.

За тези, които са забелязали, че се използва името cat.he.okerr.com: Използваме схема малко по-сложна. Вместо просто да променяме DNS записа cat.okerr.com, ние променяме cat.he.okerr.com (на доставчик на Dynamic DNS Hurricane Electric), а cat.okerr.com – това е CNAME (алиас), който не се променя и винаги указва на cat.he.okerr.com. Hurricane просто ни харесва повече като динамичен DNS, и той има ключове за управление на отделна запис (а не на цялата зона), което ни се струва по-безопасно. Можете също така да не указвате в okerr пароли-ключове за управление на целия домейн, а само за подподдомейна или записа.

От падение до вдигане

На стъпки, как работи тази схема:

  1. Става (симулира се) проблем на сървера
  2. Сензорът okerr проверява състоянието на всеки сървер веднъж в минута и докладва на главния сървер на проекта в okerr
  3. Индикаторът на съответния сървер променя състоянието си от OK на ERR
  4. При смяна на статуса на индикатора се пресмята failover, изчислява се кой адрес да се настрои (ако е необходимо. Например, ако работи основният сървер, а в същото време е умрял резервният - няма да има промени)
  5. Този адрес се съобщава на услугата dynamic dns. След завършване на този етап отдясно ще видите статус “synced”
  6. Много скоро (в рамките на секунди) записът ще стигне до DNS сърверите на вашия домейн (за котосайта това е ns1-ns5.he.net).
  7. От този момент нататък някои потребители вече ще се свързват с новия жив сървър. Но все още не всички DNS сървъри по света са обновили записите си, и някъде все още може да е кеширана старата информация. Може да видите как данните на публичните DNS сървъри "скокват", показвайки понякога новата, понякога старата стойност. Ако обновите страницата с настройки за failover, окерр сам ще поиска нови данни от DNS сървърите.
  8. След като данните се стабилизират, старата кеширана информация изчезва навсякъде — всички 100% от заявките преминават към новия сървър.

За да ускорите 7-ия етап (често най-дългия), TTL на динамичната DNS запис трябва да се зададе колкото може по-ниско. Обикновено услугите позволяват интервали от 90-120 секунди. Това е напълно разумен компромис.

Допълнително

Всичко това може да се настрои за вечер (ако вече имате дублиращ сървър). И окерр, и услугите за динамичен DNS са безплатни. За да получите повече проверки в окерр и по-кратък период на проверка, трябва да преминете обучение (от страницата на профила). След завършването веднага се повишава нивото (20 индикатора на час + 1 бърз, 10 минутен). А ако това не е достатъчно — пишете на support@okerr.com, вероятно ще може да бъде увеличено (досега винаги е имало такава възможност, никога не са отказвали, напротив, те самите предлагали). Просто първоначално не искам да обещавам на всички всичко, не съм сигурен, че ще стигнем капацитета да спазим обещанието. Но в момента потребителите са малко, така че няма проблеми с увеличението на лимитите.

Какво може да направи окерр изобщо — вижте на сайта презентацията. Всъщност, това е мониторинг (zabbix от облака), а файловерът е приятна допълнителна функция. Също така, можете без регистрация да влезете в демо версията от сайта.

При промяна на състоянието на индикатора — се изпраща уведомление на имейл или Telegram. (Погледнахме какво се случва и разбрахме, че, изглежда, telegram е най-надеждният месеенджър. Благодаря на РКН за стрес тест!) При правилна настройка на окерр, всяко уведомление е или сигнал "оставете всичко, трябва да се поправя!", или "отбой!". Няма да има излишни алерти от окерр (ако има — трябва да се настрои по друг начин). Например, за нашия котосайт, сървърът alpha е последният и никога не симулира грешка. Ако той падне — трябва да знаем. А останалите сървъри постоянно симулират грешки, затова, за да не получаваме алерти няколко пъти на час, тези индикатори имат статус "тих".

Има смисъл също да се направи сървър за извинения (на всяко най-евтино хостинг място), който или ще има вашата страница за извинения (в случай, че всички основни и резервни сървъри са извън строя) или ще пренасочи към страницата със статус на okerr (например нашата cp.okerr.com/status/okerr) или statuspage.io.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster