Рубрики
Uncategorized

9 вещей, которые я хотел бы знать Когда я начал управлять рабочими нагрузками AWS 🤷

Около 3 лет назад я начал управлять работой AWS нагрузки среднего предпринимательства. Я многому научился… Помечено с AWS, DEVOPS, новичками, архитектурой.

Около 3 лет назад я начал управлять работой AWS нагрузки среднего предпринимательства. Я многому научился на работе и имел свою справедливую долю ошибок. В этой статье я поделюсь с вами 9 вещей, которые я хотел бы знать, когда я начал управлять рабочими нагрузками AWS.

1 |. Учащийся глубоко всегда платить

AWS имеет Лот услуг, и все было бы почти невозможно изучить. Но ключ изучает несколько услуг, которые ваша компания использует глубоко. При этом вы обнаружите функции, которые помогут вам сделать определенные задачи быстрее и безопаснее.

Классический пример создает копию базы данных. Если вы не знали много о AWS, вы, вероятно, генерируете Dump SQL из вашей базы данных, создайте новый экземпляр RDS и восстановить дамп в базу данных. Весь процесс может занять часы для производственной базы данных. Но есть гораздо быстрый путь в AWS: вы можете создать снимкость базы данных вашего экземпляра RDS и повторно создайте базу данных с помощью этого снимок в любом регионе в вашей учетной записи AWS (или даже иметь этот снимок совместно с другими учетными записями AWS).

Это также делает проблемы отладки быстрее.

AWS не показывает вам журналы ошибок, когда вы делаете ошибки в AWS. Сервис просто перестает работать. И это было бы до вас, чтобы проверить на каждом шаге, чтобы убедиться, что вы сделали все правильно. Неправильная группа безопасности или неправильная настройка на целевой группе может занять несколько часов для отладки. Если вы не знаете, как работает AWS, единственный способ отлаживать, чтобы попытаться настроить конфигурацию каждого компонента вручную, по одному за раз, пока не найдете компонент, который делает всю работу на настройку.

2 |. Всегда планировать неудачу

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

Если вы собираетесь внести серьезное изменение в экземпляре RDS/EC2, сначала сделайте резервную копию его (через Snapshots RDS). Если ваше изменение достаточно велико, есть окно обслуживания, где все ваши системы снижаются, возьмите снимки вашего RDS/EC2, затем примените изменения, которые вы планируете сделать. Если что-то пойдет не так, поскольку все ваши системы в любом случае снижаются, вы можете просто восстановить экземпляр RDS/EC2 с моментального снижения, и все будет возвращено к нормальному. Еще одним преимуществом окна технического обслуживания является то, что следует что-нибудь пойти не так, данные, восстановленные из моментального снижения, не являются усталой (поскольку в течение времени выполняется никакие изменения), поэтому никакие данные не теряются.

3 |. Быть творческим на двойной проверке вашей работы

Это не говорит, конечно. Но когда я начал управлять рабочими нагрузками AWS, я не знал, как проверить изменения инфраструктуры, которые я развернул. Я только что знал, какова была установка производства, и как ее изменить. У меня не было правильного мышления на то, как делать большие изменения на облаке.

Типичный способ тестирования — это попробовать то, что вы собираетесь делать в постановке. Окружающая среда является копией вашей производственной среды, но находится в другом регионе (или другой учетной записи AWS). Если это там работает, он должен идти нормально на производство. В большинстве случаев такого рода тестирование должно быть адекватным. Но производство и промежуточная среда не одинаковы, поэтому нам может потребоваться «тестировать на производство» (хорошо, я знаю, что звучит опасно, но услышать меня !!).

Тестирование через синюю/зеленую технику 🔵🟢

Вы можете сделать это с помощью метода развертывания «синий/зеленый».

Среда 🔵blue — Синяя среда — это ваша существующая среда, где существующие существующие экземпляры EC2. Это может быть нашим главным сайтом, который посещает наши клиенты. В качестве примера давайте назовем это «shop.example.com».

🟢green Environment — чтобы проверить наши изменения, мы могли бы обеспечить другой набор экземпляров EC2 с нашими изменениями. Эти экземпляры EC2 подключены ко всем производственным активам (E.G база данных, сервис кэша и т. Д.) Так что именно то, насколько наш сайт будет выглядеть так, как мы развернули наши изменения. Мы можем сделать этот сайт доступным через «Test-Production.example.com». Поскольку имя хоста отличается, вы можете использовать зеленую среду для тестирования, не влияя на главный сайт («синяя среда»).

Конечно, это не без опасностей. Если вы запускаете невоспринятую совместимую миграцию базы данных в вашей зеленой среде (удаление/переименование столбцов, удаление ограничений базы данных), вы получите функциональные возможности на вашем главном сайте (синяя среда). Но понимание того, что это может быть вариант для вас позволит вам быть более строгим при тестировании изменений билета.

4 |. Всегда документируйте себя ✍🏽

Работая в качестве инженера инфраструктуры, большая часть работы, которую вы делаете, во время создания. Когда сделано правильно, обслуживание после этого Должен Просто будь ветером. Обычно я делаю много ошибок во время настройки, поэтому мне приходится повторять весь процесс заново. В каждой итерации я документирую каждый шаг, который я сделал, и каждая ошибка, которую я сделал. Таким образом, я не повторяю те же ошибки в следующих итерациях. Я также добираюсь, чтобы обмануть лист установки. Обычно это пригодится, когда я должен применять ту же настройку по новым проектам.

Однако окончательный самодокументирующий рабочий процесс является инфраструктурой в качестве кода (IAC). Вместо того, чтобы нажимать вокруг консоли управления AWS и создание ресурсов вручную, вы можете создать шаблон CloudFation (кусок файла JSON или YML, описывающий ресурсы AWS, которые вы хотите обеспечить), загрузить, что на AWS, и предоставлять облачность ресурсов для ты.

Делая инфраструктуру, поскольку код может принять много усилий в начале. Но окупается, потому что ваша 1) инфраструктура может быть нажата в репозиторий Git, 2) изменения могут быть пересмотрены и зарегистрированы и зарегистрированы, а 3) вся ваша инфраструктура может быть реплицирована только одним нажатием кнопки.

5 |. Используйте управляемые сервисы всякий раз, когда это применимо

Для загрузки запускной компании время существует важное значение ⏳. Если вам нужно поддерживать PostgreSQL-сервер, размещенный в экземпляре EC2 (например, например, исправляя его ОС каждый месяц), это занимает ценное время вдали от других вещей, которые вы могли бы сделать. Кроме того, всегда есть риск, который вы забудете сделать ваши типичные рабочие места обслуживания, и сайт падает в BLEEP.

RDS — это незаменимая служба для размещения ваших рабочих нагрузок PostgreSQL. Дополнительная надежность и сокращение времени обслуживания больше, чем платит за дополнительную стоимость размещения ваших баз данных в RDS.

Для среднего предприятия с использованием управляемых услуг снижает риск простоя и увеличивает надежность отдельных компонентов, которые составляют систему. Это позволяет вашей команде сосредоточиться на том, что действительно имеет значение — развертывание функций, которые обеспечивают ценность ваших клиентов (и косвенно, к вашей нижней строке).

6 |. Следуйте за двухуровневой архитектурой

Всегда лучшая практика разделить вашу сеть в уровнях: общественный уровень и личный уровень. Это обычно реализуется путем разделения вашим VPC в поднеты.

Публичный уровень

Общественный уровень — это группа подсетей, которая открыта для Интернета. Имея и ресурсы здесь имеют публичный IP-адрес, к которому могут подключиться объекты на открытый Интернет. Поскольку они подвергаются открытому интернету, они уязвимы для атак. Чем больше ресурсов вы добавляете в общественный уровень, тем больше потенциальных входов вы даете хакерам. Вот почему вообще разумно «уменьшить площадь поверхности» и ограничить ресурсы, которые вы добавляете здесь.

Для типичной веб-среды, основанной на веб-среде, на основе API, единственным двумя ресурсами, которые должны быть в общественном уровне, являются балансировщик нагрузки на приложение (ALB) и хост-бастион.

Хозяин Bastion — это, как правило, является закаленным экземпляром EC2, который вы можете SSH в. Оказавшись внутри хоста Бастиона, вы можете прыгать в экземпляры в частной подсети, запустив команду ssh. Хост бастиона обычно закален, создавая его из этого Изображение Amazon Machine (AMI) от центра интернет-безопасности

ALB позволяет размещать несколько приложений с одним балансировщиком нагрузки. Например, у вас есть два сайта: «Shop.example.com» и «Shops.example.com». Вы можете добавить правило, в котором, если в том случае, если в ALB видит, что запрос имеет имя хоста «Shop.example.com», он направляет запрос в группу экземпляров, которые обслуживают трафик для «Shop.example.com». То же самое касается «Shapter.example.com».

Инстанции, обслуживающие трафик для обоих приложений (магазин и персонал), находятся внутри частной подсети. Таким образом, мы можем просто продолжать добавлять правила в Альбу, чтобы поддержать все больше и больше сайтов. Инстанции, поддерживающие каждый веб-сайт, хранятся в частной подсети, где их нельзя получить доступ прямо (только косвенно через балансировщик нагрузки).

Частный уровень

Частный уровень — это группа частных подсетей, которые не могут быть доступны непосредственно из открытого интернета. Большинство ваших ресурсов должны быть здесь. Если вам нужно в них SSH, SSH в хосте бастиона сначала, затем SSH в экземпляр. Если вам нужно, чтобы они были доступны через http/https, вы можете использовать ALB.

Вы можете узнать больше о двухуровневой архитектуре здесь.

7 |. Всегда следуйте соглашению об именах

При создании ресурсов в AWS наиболее распространенное поле между всеми ресурсами является поле имени. Они просят вас дать уникальный идентификатор каждому ресурсу, из баз данных RDS к вашим снимкам. Это везде Отказ Когда я впервые начал, я просто поместил случайные имена, чтобы он работал. Сначала это не имело значения, но когда наша инфраструктура выросла из нескольких экземпляров EC2/RDS пару дюжина, мне было трудно перемещаться по консоли AWS.

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

В качестве примера для EC2 Amazon Machine Machine Images (AMIS) моя Конвенция о именах — <Имя экземпляра> - <Дата и время> Отказ Таким образом, для AMI экземпляра имени «App1», имя моего AMI было бы App1-Jan 15-2020-430 вечера Отказ

8 |. Используйте AWS CONFIG

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

Использование AWS Config позволяет контролировать, как конфигурация каждого ресурса изменяется со временем (а кто сделал изменение). Вы также можете выбрать десятки предопределенных правил, чтобы проверить вашу среду против. Поэтому в следующий раз кто-то создает незашифрованную базу данных, вы не знаете. Вы можете узнать больше о AWS Config в другом посте.

9 |. Автоматика всякий раз, когда вы можете, установить сигналы тревоги, когда вы не можете ⏰

AWS имеет много функций, которые могут автоматизировать определенные задачи, которые мы делаем в нашей среде. Вот некоторые из более недоумелых услуг AWS, которые могут помочь вам автоматизировать различные аспекты работы вашей рабочей нагрузки AWS:

  • Автоматическое масштабирование : Это позволяет вашим экземплярам EC2 масштабироваться от 1 до нескольких тысяч всего за несколько минут. Это может быть сконфигурировано для поддержки внезапного ustick в трафике, путем расширения масштабирования, когда среднее утилизация процессора вашего экземпляра EC2 проходит определенный порог.
  • Rds хранилище автоматическое масштабирование : Это позволяет вашему хранению RDS масштабировать, когда ваша рабочая нагрузка нужно больше места для хранения. (К сожалению, он не масштабируется на хранении, когда ваша база данных не поддается пространству)
  • Системный менеджер : Это автоматизирует множество задач, которые вы обычно делаете в AWS, как создание моментальных снимков ваших объемов EBS или запускающих сценариев, чтобы сохранить свои экземпляры EC2 для последних обновлений безопасности.

Тем не менее, есть времена, когда вы не сможете автоматизировать определенные задачи. Возможно, AWS пока не имеет возможности для этого, или у вас недостаточно времени, чтобы реализовать большие изменения, чтобы сделать автоматизацию. Но это нормально — то, что важно, вы не оставляете их раскрытыми и надеяться, что вы будете первым, кто узнает, когда ваш сайт снизится из-за этого.

В течение этих времен вы можете создавать тревоги для информирования вас и вашей команды аномалий в вашей учетной записи AWS. Самый простой способ сделать это — создать сигналы тревоги в AWS CloudWatch. Вы указываете пороговое значение для конкретной метрики (например, утилизация CPU вашей базы данных PROD) и когда метрика нарушает пороговое значение в течение определенного времени (например, 80% для 3 минут), вы можете отправить электронную почту в вашей команде Вы, чтобы исправить это.

Вы согласны с моим советом? Или у вас также есть совет? Комментарий к этому ниже!

Особая благодарность моему редактору, Аллен, для создания моих постов более согласованным Отказ

Оригинал: «https://dev.to/raphael_jambalos/9-things-i-wish-i-knew-when-i-started-managing-aws-workloads-4c7e»