📋 Disaster Recovery Plan: Как правильно заваривать чай, когда горит серверная.
• В жизни любого проекта наступает катастрофа. Мы не можем заранее знать, что именно это будет - короткое замыкание в серверной, инженер, дропнувший центральную БД или нашествие бобров. Тем не менее, оно обязательно случится, причем по предельно идиотской причине.
• Кстати, насчет бобров - это не шутка. В Канаде они перегрызли кабель и оставили целый район без оптоволоконной связи. А в топе источника проблем для крупной телекоммуникационной компании Level 3 Communications вообще были белки.
• Короче, рано или поздно, кто-то обязательно что-то сломает, уронит, или зальет неверный конфиг в самый неподходящий момент. И вот тут появляется то, что отличает компании, которые успешно переживают фатальную аварию от тех, кто бегает кругами и пытается восстановить рассыпавшуюся инфраструктуру - DRP. Вот о том, как правильно написать Disaster Recovery Plan мы сегодня и поговорим:
➡️Читать статью [10 min].
#DevOps
🗺 DevOps Roadmap
• Держите крутой и актуальный roadmap для DevOps, который включает в себя необходимые ссылки на обучающие материалы для каждого шага на этом пути.
➡️https://github.com/milanm/DevOps-Roadmap
- GIT;
- Learn one programming language;
- Learn Linux & Scripting;
- Learn Networking & Security;
- Learn Server Management;
- Learn Containers;
- Learn Container Orchestration;
- Learn Infrastructure as a code;
- Learn CI/CD;
- Learn Monitoring & Observability;
- Learn one Cloud provider;
- Learn Software Engineering Practices;
- Additional resources;
- Tools;
- Books.
#DevOps
Ansible. Настройка серверов (в добавок к Terraform)
Вот тут я писал про Terraform и ДевОпс штучки
Мне надо было чтобы моя лямбда имела доступ к VPC (virtual private cloud), в котором у меня три сервера которые я описывал в прошлом посте, в лямбде у меня код, который должен запускать на этих серверах «jobs» (другой код, который долго выполняется), но еще, та же лямбда должна по внешнему API кое-что делать, а добавляя ее в VPC, у нее пропал доступ к интернету, чтобы это работало надо было поднастроить конфигурацию сети одного из серверов,
я добавил что мне надо из настроек в Terraform, и нажал применить, и смотрю пошли надписи
destroy
destroy
destroy (он удалил сервера и поднял новые с нужной конфигурацией), как только я увидел слово destroy я понял что мне придется повторить настройку серверов, немного расстроился так как успел там много что настроить
До этого: после «поднятия» серверов с помощью Терраформ, я сам подключался по ssh, на одном сервере настраивал vpn, на другом k3s, с аргосд (я пушу микросервисы проекта в гитхаб, там у меня гитхаб actions собирает новый докер образ, а аргосд его подтягивает и поднимает новый Pod), с базой PSQL и тд, первый раз это заняло пару дней с перерывами, чтобы все настроить как я хочу и тд., я как знал что пока deprecated инфру не буду удалять
Короче сервера настроить заново надо, уже все зная как я хочу, займет быстрее, но я видел где-то что-то про Ansible, пока изучал про Terraform типа часто используют вместе,
И теперь я знаю для чего 🤓
Ansible тоже опенсорсная тула которая подключается к серверам по ssh, и также по декларативным файлам их настраивает, то есть Terraform поднимает всю инфру (условно железяки), а Ansible ставит всю «программную часть», в том числе vpn tunnel настраивает, который я так бережно настраивал,
Итого, в течение дня я подготовил все конфиги которые мне надо и запушил в свой гитхаб в репо, продублировав на свои облака)
Теперь у меня вся инфра и полностью настроенные сервера моего проекта, в файлах, могу удалять и создавать за минуты с нуля, а не за часы 😀 это прикольно, IaC (Infrastructure as Code) как он есть)
и самое главное могу себе представить сколько экономят времени ДевОпс инженеры с помощью таких прекрасных тулов ворочая огромные облака корпораций
#девопс | @andreyposnov
Terraform и другие ДевОпс штучки
DevOps - development + operations (разработка + эксплуатация)
В некоторых вакансиях я видел это слово, погуглив понимал что-то про девопс, вот за пару дней разобрался и внедрил к себе в проект
Это инструмент IaC (Infrastructure as Code), инфраструктура как код, это когда ты пишешь свою инфру в файлах, и она применяется где то в облаке, например в моем случае мне надо было три сервера 2 маленьких и 1 побольше, а есть компании и проекты у которых серверов и разных компонентов систем очень много, и тогда следить за всем через GUI (Graphical User Interface) становится очень сложно, потому что у серверов могут быть разные настройки, в том числе «тонкие».
А так например используя терраформ, вся инфраструктура расписана в .tf файлах декларативным языком, как например в докерфайлах, там указаны какие сервера нужны, каких размеров и тд, спецификации берут от провайдеров типа AWS (Amazon web services), GCP (Google Cloud Platform), Microsoft Azure и др., вместе с серверами там указывается и провайдер где разворачивать, таким образом можно легко мигрировать из облака в облако или простым копированием создавать новые окружения типа дев, стейдж, прод и тд.
Или например где то открыть какой-то порт или применить политику, чем лазить по ui искать, зашел в файлик добавил и нажал применить.
В итоге у меня три инстанса на ЕС2 (три сервера в облаке Амазон), на которых стоит легковесная версия Kubernetes (k3s), они являются нодами, одна мастер, а вторая воркер, на мастере у меня postgresql, а на воркерах поднимаются поды моего приложения (долгие джобы).
А третий сервер у меня для vpn туннеля, чтобы эти инстансы и база были закрыты от интернета.
Вот все эти настройки, порты, правила тоже хранятся в terraform. Ну и потом поставил еще на мастер prometheus и grafana чтобы все мониторить.
Кто-то может подумать зачем мне на проекте такая сложная инфра когда можно было бы все упростить, ведь я один на проекте и еще не так много пользователей, но во первых я теперь точно знаю как быстро масштабировать если что, ну и еще я практикуюсь, чтобы потом на собеседованиях рассказывать. Например у нас на работе тоже впн и много окружений и тд., но как это все работало я понимал только примерно, а теперь точно знаю как чего, конечно без нюансов как настоящие девопсы, но понимания точно стало больше
#девопс | @andreyposnov