Строительные устойчивые API с HAOS Engineering.
Я не имею дело с провалом хорошо. Но я устроился на это, потому что я много не проваливаю. На самом деле, чем больше я терпеть неудачу, тем лучше Я ожидаю, что все способы, которыми я смогу срывать и сжигать и беремен эти уязвимости.
Это ожидание мог бы Держите меня ночью, но я вместо этого я сильнее.
На Лучшие практики Мы ранее говорили о том, как работа в облаке растет все более сложный, как команды продолжают принимать микросервисные и распределенные архитектуры. Некоторые подходы к Включить гибкость с API-первым подходом или к Увеличить скорость с помощью контейнеров и механизма оркестрации Отказ
Другим подходом с Хаосом Инжиниринг.
Распределенные системы по своей природе хаотично, а ряд организаций охватывают этот хаос, когда они движутся в облако. Они намеренно вводит неудачу в их системе, чтобы определить ранее неизвестные уязвимости.
Что происходит, когда одна из ваших зависимостей не удается?
Что происходит, когда одна из ваших зависимостей не удается? Предварительно контролируя условия неудачи, вы можете узнать из ответа вашей системы на своих собственных условиях, а не во время непредвиденного отключения.
Что такое хаос инжиниринг?
Когда Netflix отлично перешла из монолитной архитектуры до распределенной облачной архитектуры, они беспокоятся о Как потенциальное время простоя повлияло бы от своих пользователей Отказ Команда Netflix представила Хаос обезьяна к псевдослучайно убивать экземпляры, чтобы имитировать случайную ошибку сервера.
Они хотели убедиться, что они могут пережить этот тип неудачи и лучше понять влияние такого провала на своих клиентах. Цель состояла в том, чтобы укрепить свои распределенные системы, чтобы ожидать и терпеть неудачу из других систем, на которых они зависят.
[Chaos Engineering] помогает инженерам построить свои услуги, чтобы предвидеть, что некоторые серверы внезапно уйдут … поэтому они должны построить свои услуги, чтобы быть избыточным, высокодоступным и неисправным.
Качество Розенталь Генеральный директор на Верика
Вскоре после этого команда Netflix представила виртуальный Симианская армия С каждой новой обезьяной поручено поручить другой тип неудачи — например, ухудшение обслуживания или убийства целого региона. С тех пор сообщество Chaos разработало ряд инструментов Точнее вызвать хаос контролируемым образом.
Сегодня есть ряд компаний, которые обняли Принципы хаоса Инжиниринг Отказ Некоторые команды могут сосредоточиться на тестировании отказа отказа или на тренировку по восстановлению стихийных бедствий, приняв только инструменты и практику, которые работают для их конкретных целей.
Во всех этих программах дисциплинированный подход учит их, как улучшить свои системы, чтобы они могли лучше терпеть будущее, незапланированные сбои.
Зачем беспокоиться о чем-то, что не произойдет?
Зачем искать неприятности?
Эксперимент Chaos похож на беговую дрель. Представьте, что вы уже создали аварийный протокол в случае пожара, отправили его каждому, и вы проверяете пожарную тревогу один раз в месяц, чтобы убедиться, что это функционирует.
Теперь, что происходит, когда вы запускаете пожарную дрель? Вы можете обнаружить, что есть несколько номеров, где будильник не может быть услышан, большинство людей не помнят, где они должны встретиться, в то время как другие игнорируют дрель и остаются в своих столах.
Предварительно проверяя, как система отвечает на условия об ошибках, вы можете определить и исправить сбои, прежде чем они станут общими от общественности. Сбои в производстве дорого, поэтому Chaos Engineering позволяет проверить то, что вы думаете, произойдет с тем, что на самом деле происходит в ваших системах.
«Отключение вещей нарочно», чтобы построить больше устойчивых систем, готовит вашу команду в случае землетрясения, атака зомби, или все остальное приходит на ваш путь.
Кто несет ответственность за разработку хаоса?
В архитектуре микросервиса инженеры, создающие сервисы часто, имеют ответственность за развертывание и время работы. В организации с традиционной командой DevOps эти инженеры DEVOPS могут владеть этим уровнем обслуживания. У некоторых компаний есть специализированные группы инженеров по надежности сайта (SRE) или производственных инженеров (PE), полагаемые с постоянным улучшением и производственной поддержкой.
Первоначально люди с самой высокой мотивацией для реализации хаоса инжиниринга — это те, кто чувствует боль от провала в производстве, как те, которые по вызову.
Я начал делать [Chaos Engineering], поэтому я бы не просыпался в середине ночи и лучше понять мое программное обеспечение.
Это сводится к тому, кому пагируются — если это команда Sre или Ops, у них самый стимул начать делать эту работу и сделать их жизнь лучше.
— Колтон Андрус Генеральный директор на Гремлин
Другие люди с заинтересованным интересом — это поручено управление инцидентами или постпортированным анализом. Разница здесь состоит в том, что управление инцидентами является реактивным процессом со ступенями, предпринятыми для предотвращения повторении. С Chaos Engineering ваши эксперименты проводятся активно, предвидясь, что мог бы пойти не так.
Прямо сейчас подавляющее большинство людей, осуществляющих инженеров Хаоса, как правило, являются инженерами, ориентированными на качество, ориентированные на производство операций.
Однако также имеет смысл ввести ответственность на устойчивость ранее в цикле развития, когда стоимость ошибок самая низкая, снижение финансовых и других последствий в производстве. Таким образом, есть возникающая тенденция тестеров, которые сосредоточены на тестировании производства в дополнение к традиционным предварительно выделенным тестированию.
Так кто владеет хаосом?
- Специализированные роли — Инженеры надежности на сайт (SRE), производственные инженеры (PE)
- Функциональные команды — Дежол, тестирование и гарантия качества (QA), исследования и разработки (R & D)
- Эксперты знаний домена — трафик, база данных, данные, хранение
Первоначальные владельцы HAOS Engineering будут определяться текущей инфраструктурой вашей команды, талантом и целями вашей команды. Кроме того, эта ответственность может сдвигаться по мере того, как все больше организаций мигрируют в облако, а Chaos Engineering становится более распространенным и начинает дополнять традиционные тестирования.
Как вы можете начать программу хаоса?
Вам не нужна специальная должность или даже трафик уровня Netflix, чтобы начать Dabling в хаосе. Chaos Community разработало Количество общих ресурсов Чтобы помочь продвинуть эту развивающуюся дисциплину. Организации, как Google , Twilio , Pagerduty И многие другие были приняты свои собственные подходы к хаосиному инженению.
В некоторых случаях это любопытный тестер, который начинает один эксперимент на хаос после уведомления остальной ее команды. Может быть, это горстка инженеров, объединенных, чтобы спланировать свои неудачи во время Гейдий Отказ Или это директива от высшего руководства по охватам программы Хаоса после одного особенно дорогостоящего отключения.
Еще раз, выбираемая вами реализация будет определяться нынешней инфраструктурой вашей команды, талантом и целями вашей команды.
Возможно совокупные биты и кусочки от различных конструкций [устойчивости инженерии], которые обращаются к вам, а затем создают практику вокруг него. Скорее всего, вы будете первым, кто создаст аналогичную практику в вашем конкретном контексте.
Я желаю вам удачи в этом предпринимаемом, но я не ставит, что вы получите это правильно на первой попытке. Или ваша вторая.
— Кейси Розенталь Генеральный директор на Верика
Общая подводная ловушка не четко сообщает причины, по которым вы принимаете инженерные практики Chaos в первую очередь. Когда остальная часть организации еще не понимает или не верит в пользу, будет страх и путаница. Хуже того, есть восприятие, которое вы просто ломаете вещи случайным образом и без законной гипотезы.
Как вы управляете экспериментом хаоса?
Хотя есть много способов запуска своих экспериментов на хаос, большинство процессов эхом научного метода с непрерывным циклом гипотезы и эксперимента.
Сделать улучшения и автоматизировать эксперименты, чтобы работать непрерывно
Планируйте эксперимент. Во-первых, создайте гипотезу о стационарном поведении ваших систем. Сосредоточьтесь, если ваши системы сделать Работа, не Как они работают. Тогда подумайте о том, что может пойти не так. Возможно, сервер идет вниз (как они делают). Может быть, это ваша сторонняя платежная система, определенный кластер или целый регион, который испытывает отключение.
Начать маленький Отказ Инициируйте атаку, которая достаточно маленькая, чтобы дать вам информацию о том, как ваши системы реагируют в производственной среде. Вы не всегда можете предсказать, как будут вести себя пользователям. Вместо того, чтобы тестировать код в изолированной среде, Проверьте полную систему в производстве Согласование пользователей, кода, окружающей среды, инфраструктуры, единственного числа во времени и многое другое.
Измерьте влияние Отказ Соблюдайте влияние вашей атаки, сравнивая его с вашими устойчивыми метриками, чтобы раскрыть любые известные и неизвестные вопросы. На данный момент вы можете либо включить сок на свою атаку или откатить его назад, если были непреднамеренные и потенциально вредные побочные эффекты.
Узнайте больше о ваших системах. Проверьте или обновите свою гипотезу и поспешите свои уязвимости. Сделайте эти улучшения, а затем будьте готовы автоматизировать свои эксперименты, чтобы работать непрерывно.
Как и пожарная дрель, ваша команда разрабатывает мышечную память, практикуя, как ответить, когда колья контролируются, вместо того, чтобы практиковать во время реальной чрезвычайной ситуации. Методически выполняя эти автоматизированные тесты, вы можете узнать больше о реальном поведении ваших систем.
Если вы просто промокните ноги с помощью Chaos Engineering, рассмотрите возможность начать с ваших API. Мы ранее говорили об использовании API для создания дополнительных инъекций нагрузки или безопасности и другое поведение пользователя. Теперь вы можете проверить ваши отступы, имитируя отключение внешних сторонних API или убийства своих внутренних API.
Когда компания измеряет свои критические услуги, API часто считаются гражданами второго класса.
Но API являются основной частью инфраструктуры организации, и не понимая их слабости может привести к вопросам эффективности и простоя.
- Tammy Butow Основной инженер надежности сайта на Гремлин
Один из способов испытать отключение API, просто отключающую сервер. Но что, если серверы не ваши, или им трудно добраться? Или вы понимаете, что вы отключили не ту машину? Упс Вы не можете просто подключить его обратно и ожидать, что сервис возобновляется сразу. Не делай этого Отказ
Еще один способ испытать отключение API с использованием почтальон высмеивать Чтобы вернуть 500 внутренней ошибки сервера. Это работает, но это все еще просто симуляция. Хотя мы можем имитировать отключения в тестовой среде, есть только один способ захватить незаменимые условия, которые нельзя воспроизводить в изолированной тестовой среде.
В конце концов мы хотим сломать вещи в производстве 😈
Рецепт почтальона для создания хаоса с Amazon Eks и Gremlin
Давайте начнем с примера приложения E-Commerce, где пользователи могут просматривать элементы, добавьте их в корзину и купите их. Затем мы выключим контейнер и посмотрите, какие Hijinks Insue.
- Триггер: Гремлин Это сбой AS-A-Service и предлагает бесплатную версию с ограниченными типами атаки. Мы будем использовать почтальон с API Gremllin, чтобы вызвать наши атаки. Осторожно, спойлеры . . Это так, что мы можем легко автоматизировать эти тесты хаоса с нашим непрерывным интеграционным трубопроводом.
- Цель: Мы ранее говорили о Развертывание масштабируемых приложений с Docker и Kubernetes . Amazon Eks это управляемая служба Kubernetes, которая работает на AWS. Это не дешево. Если вы уже работаете на хостах, контейнерах или другой облачной платформе, поменяйте его собственные цели.
- Наблюдаемость: Мы будем использовать Prometheus Как наша база данных временной серии и Графана визуализировать эффекты наших атак. Оба являются открытыми источниками и имеют бесплатную версию. Если вы уже используете что-то еще для устойчивого мониторинга, поменяйте прометеус и графану с вашим собственным набора инструментов.
Рецепт почтальона для создания хаоса
Настройте Гремлин и создать кластер Kubernetes на EKS
Если вы хотите перейти к концу, продолжайте и клон этот пример Отказ В противном случае, давайте начнем с Это полезное руководство по установке Гремлина в использовании с Amazon EKS Отказ Вам понадобится учетная запись AWS, CLI AWS CLI настроен на использование Eksctl для создания кластера EKS и учетной записи Gremllin.
- Шаг 0 — Проверьте свою учетную запись AWS CLI Установка
- Шаг 1 — Создать кластер EKS, используя eksctl
- Шаг 2 — Загрузите KubeConfig для кластера
- Шаг 3 — Развертывание приборной панели Kubernetes
- Шаг 4 — Разверните демонстрационный приложение Microvice
- Шаг 5 — Запустите атаку контейнера отключения с помощью Gremll (пропускать)
После этого у вас должно быть примерное приложение, развернутое на AWS Eks и Gremlling, работающих на вашем Приборная панель Kubernetes Отказ
1) Пример приложения, развернутого в EKS, а 2) Gremllin, установленные с помощью приборной панели Kubernetes
Настройте графана и прометея
Если вы все еще со мной, давайте настроим Мониторинг кластеров Kubernetes с графаной Отказ Это конкретное руководство начинается с двигателя Google Kubernetes (GKE) вместо EKS, но большинство оставшихся шагов одинаковы после того, как вы создадите свой кластер.
- Шаг 0 — Создать кластер GKE (пропустить)
- Шаг 1 — лоты и много и много конфигурации YAML
- Шаг 2 — Настройте настройки кластеров на Grafana (Skip)
Вместо того, чтобы настроить настройки кластеров на GRAFANA, вы можете просто импортировать существующую приборную панель, если ваши инструменты мониторинга работают на вашем кластере. Проверьте readme в Образец репо Для получения более подробной информации о том, как управлять внешним доступом к приложениям, работающим внутри кластера.
После этого вы должны быть в состоянии наблюдать стационарные метрики всех узлов в вашем кластере.
1) Добавьте источник данных типа PROMETHEUS, а 2) Импорт приборной панели 3131 для обзора всех узлов в вашем кластере
Программно управлять своими экспериментами хаоса
А Kubernetes Pod состоит из одного или нескольких контейнеров, которые разделяют сетевой стек. Если мы атакуем один контейнер в рамках POD, воздействие следует наблюдать для всех контейнеров, расположенных в этом POD. Необязательно, мы можем дополнительно указать порты контейнера для ограничения воздействия нашей атаки.
На последнем этапе учебника Гремлина мы закрываем контейнер с использованием UI Гремлина. Мы также могли бы использовать API для запуска наших атак, чтобы мы могли программно управлять нашими экспериментами Хаоса.
Давайте использовать Postman, чтобы выключить один контейнер через Гремлин API. .
В приложении Postman, Импортировать шаблон Chaos Engineering, которая включает в себя соответствующую среду хаосенниринга. Проверьте Инженерная документация Chaos для пошаговых инструкций.
Нажмите эту кнопку «Направленные», чтобы импортировать шаблон
Сначала вам нужно Чтобы обновить среду почтальона С твоей gremlin_api_key.
и your_deployert_app_url.
. потом Ищите папку, называемую отключить контейнер.
- Получить список наших активных контейнеров
- Выключите указанный контейнер
- Проверьте здоровье нашего приложения
- Остановите атаку (если вам нужно)
Наша гипотеза заключается в том, что, если мы выключим контейнер, работающий Cartservice, EKS даст нам новый, и мы не будем страдать от простоя. Однако, если мы испытываем непреднамеренные эффекты, давайте будем готовы остановить атаку.
1) Выключите контейнер с помощью API Gremlin, а 2) см. Эффекты в вашем браузере
Ики! Когда мы выключаем контейнер Cartservice, мы видим 500 ошибок на нашей странице корзины покупок. Мы видим это в нашем браузере, а также в Postman, если мы сделаем запрос на нашу развернутый URL-адрес приложения.
Если вы завершили последний шаг учебника Гремлина, вы уже знаете, что это потому, что Cartservice использует Redis вместо кластера Redis. Теперь, когда мы раскрыли эту уязвимость, мы можем иметь более широкое обсуждение с другими членами команды о вашем решении данных.
Тем временем давайте сделаем запрос на удаление, используя API Gremlin, чтобы остановить нашу атаку, и добавить какой-нибудь код в Postman to Только Остановите нашу атаку, если мы видим 500 внутренней ошибки сервера.
1) Остановите атаку, если мы увидим 500 внутренней ошибки сервера в Postman, а 2) автоматически запустить наши тесты Хаоса в коллекционном бегунке
Таким образом, мы можем использовать Postman и Gremlin API для изучения того, что происходит, когда мы нарушаем конкретную часть нашей системы. Помимо ручного тестирования, однако, мы также видели, как автоматически запускать наши тесты интеграции Использование коллекции бегун и немного кода.
🎓 Расширенный вызов: Теперь, когда мы знаем, как использовать приложение Postman для управления нашими экспериментами Chaos, как мы можем автоматизировать тестирование хаоса с нашей непрерывной интеграцией (CI) трубопроводом или процессом непрерывного тестирования? Вот Подсказка Отказ И вот Лучшая подсказка Отказ
Финальная мысль о Хаосе Инжиниринг
Так что происходит, когда одна из ваших зависимостей не удается? Ценный тест Chaos не только научит вас о ваших системах, но и ваших людей. Человеческий ответ часто является одним из более сложных аспектов для проверки в активной и систематической моде. Вероятно, проще проверить влияние сбоя сервера.
Когда хаос экспериментирует влияние на производство трафика и пользователей в реальной жизни, другие команды будут затронуты и, надеюсь, уведомили, прежде чем начнется какие-либо эксперименты. Способность вашей команды общаться и совместной работы неизбежно влияет на устойчивость ваших систем.
Самое большое ограничение в страхе доставки программного обеспечения быстрее — это фокус на добавлении более предварительного тестирования.
Chaos Engineering — это все о строительстве доверия к нашей устойчивости и среднее время для восстановления. Со временем у нас меньше опасается, что любое изменение будет снижать нашу продукцию, и когда возникают проблемы, мы практикуем в драйвере и развертывании исправлений быстрее, укрепление уверенности, что не являются хрупкой.
- Эбби Бансер , Инженер для испытаний на платформе на Моал
Для многих команд Chaos Engineering потребует психического сдвига в том, как в организации воспринимаются неудачи. Приятно определить неудачу и довести его на внимание остальной части вашей команды. Тем не менее, еще лучше создать процесс, который предвидит потенциальные сбои, а затем раскрывает новую информацию, чтобы помочь избежать ваших уязвимостей.
Chaos Engineering не только о строительстве более устойчивого программного обеспечения, но также создает культуру устойчивости в рамках организации. Команда, которая действительно празднует неудачи, вместо того, чтобы скрывать их, позволит более широкой организации учиться и становиться сильнее из этих переживаний.
Оригинал: «https://dev.to/loopdelicious/learn-how-your-kubernetes-clusters-respond-to-failure-using-gremlin-and-grafana-2l76»