EC2
Elastic Compute Cloud
Amazon EC2 = Infrastructure as a Service EC2 состоит из:
- самого инстанса, виртуальной машины - EC2 Instance
- хранилище данных, виртуальный диск - EBS volumes
- распределяющего нагрузку между инстансами балансировщика - ELB
- масштабирующей сервисы группы - ASG
EC2 sizing & configuration options
- OS: Linux, Windows, Mac OS
- CPU:
- Memory:
- Storage space:
- Network-attached (EBS & EFS)
- Hardware-attached (EC2 Instance Store)
- Network Cards
- Firewall rules: Security Group
- Bootstrap script (набор команд, выполняющихся при запуске инстанса, первый запуск): EC2 User Data
EC2 User Data нужен для установки обновлений, ПО, общих файлов из интернета, будь чего на самом деле. Запуск идет от root пользователя
EC2 Creating
- При создании EC2 инстанса нам нужно выбрать Name и проставить Tags:
Key
,Value
,Resource types
; - Далее нужно выбрать базовый образ для инстанса - Image;
- Далее надо выбрать тип инстанса - Instance type;
- Далее нужно создать ключевую пару для логина на инстанс - Key pair;
Ключевая пара SSH использует технологию public key infrastructure (PKI). Пара ключей — это открытый (Public) и закрытый ключи (Private). Private ключ является секретным, известен только пользователю, его следует зашифровать и безопасно хранить. Public ключ может быть свободно передан любому SSH-серверу, к которому пользователь желает подключиться.
- Пример генерации пары:
ssh-keygen -t ed25519/rsa -C "your_email@example.com"
- Пример использования: Добавить Public Key как Deploy Key в репозиторий andreasblaze.github.io и добавить Private Key в GitHub Actions Secrets. То шо .pem - Public Key, без - Private Key.
- Пример подключения к инстансу:
ssh -i <file_name>.pem <user_name>@<public_ip>
- Если есть проблема с доступом (unprotected private key file):
chmod 0400 <file_name>.pem
На сервере Public ключ, у пользователя Private ключ. Каждый раз, когда вы обращаетесь к серверу, происходит сопоставление ключей.
- Далее идут Network settings, г де определяется фаерволл - Security Group;
Security Group действует как виртуальный фаерволл для Amazon EC2 instances, AWS Lambda, AWS Elastic Load Balancing и контролирует входящий и исходящий трафик. При запуске инстанса вы можете указать одну или несколько Security Groups. Одна Security Group может применяться к разным инстансам. Security Group прикреплена к одному региону и одной VPC.
"Timeout" - Security Group Issue.
"Connection refused" - Application Issue.
Security Group регулирует:
- Доступ к портам (Ports);
- IP ренжи (IPv4 & IPv6);
- Входящие (Inbound or ingress) правила контролируют входящий трафик к вашему инстансу (кому и как можно пользоваться инстансом), а исходящие (Outbound or egress) правила — исходящий трафик из вашего инстанса (кому и как инстанс что-то передает).
- Далее Configure storage, где мы определяем размер и тип корневого тома (
Root volume
). В Advanced режиме можно наконфигурировать кастомные тома используя EBS (block-storage service);
S3 provides you with a web interface while EBS provides a file system interface and EFS provides a web and file system interface. Storage Type: AWS S3 is object storage while Amazon EBS is block storage and Amazon EFS is file storage.
- User Data - скрипт при запуске.
Никогда не надо запускать aws configure
на EC2, так как это приведет к тому, что персональные токены будут доступны любому пользователю на EC2. Лучше использовать IAM Role.
EC2 Instances Purchasing Options
Аренда (Tenancy
) определяет, как экземпляры EC2 распределяются по физическому оборудованию (hardware), и влияет на цены. Возможны три варианта аренды:
- Shared (default) — Несколько аккаунтов AWS могут использовать одно и то же физическое оборудование.
- Dedicated Instance (dedicated) — Инстанс работает на одноарендном оборудовании.
- Dedicated Host (host) — Инстанс работает на физическом сервере с емкостью инстанса EC2, полностью выделенной для вашего использования, изолированном сервере с конфигурациями, которыми вы можете управлять.
Name | Explanation |
---|---|
On-Demand Instances | Небольшая рабочая нагрузка. Оплата по секундам работы после первой минуты запуска. Высокая цена, но никаких предоплат. Никаких долгосрочных обязательств. Рекомендуется для кратковременных и непрерывных рабочих нагрузок, когда невозможно предсказать, как поведет себя приложение. |
Reserved (1 & 3 years) ↓ ↓ | -------- |
Reserved Instances | Длительная рабочая нагрузка (работа базы данных). Дисконты от AWS. Доступна резервация инстанса с атрибутами Instance Type , Region , Tenancy , OS . Доступен выбор периода резервации: чем дольше (max 3, min 1), тем бельше дисконд. Вид оплаты: полный аванс - больше дисконд. Резервация доступна либо Regional, либо Zonal (резервация в определенной AZ). Подходит для приложений с устойчивым использованием (так же база данных). Также можно покупать и продавать в Reserved Instances Marketplace (если неактуально, например). |
Convertible Reserved | Длительная рабочая нагрузка c гибким типом инстанса (если есть необходимость в изменении типа инстанса через некоторое время). Можно изменять атрибуты EC2 - Instance Type , Instance Family , Tenancy , OS , Scope (Regional, либо Zonal (резервация в определенной AZ)). Меньше дисконд, чем у Reserved Instances из-за большей свободы выбора. |
Savings Plans (1 & 3 years) | Тут мы резервируем не тип инстанса, а сумму в долларах на длительную рабочую нагрузку. Чем больше период - тем больше дисконд. Придерживайтесь определенного типа использования ($10/час на год или 3 ). Любое использование сверх плана сбережений будет билиться по цене как On-Demand. При выборе данного плана, мы будем заблокированы на указанном Instance Family и Region (e.g., M5 in us-east-1), но можно будет изменять Instance Size (m5.xlarge to m5.2xlarge), OS , Tenancy (Host, Dedicated, Default). |
Spot Instances | Очень небольшая рабочая нагрузка, дешевизна, но влюбое время можно потерять инстансы подобного плана, что делает их ненадежными. Можно получить большой дисконд, аж до 90%. Но этот план инстансов рискованный из-за того, что если max price меньше текущей spot price , то инстанс теряется (будет 2 минуты на выбор stop или terminate ). Как сделать terminate Spot инстансу? - Нужно сначала отменить Spot Request , а затем самостоятельно сделать terminate Spot инстансу. Отменить Spot Request можно только, когда он в состоянии open , active , disabled . Это самый экономически выгодный план по инстансам. Очень полезный, если нагрузка отказоустойчива - Batch Jobs (генерация ежемесячного отчета), Data Analysis , Image processing , Any distributed workloads и гибким стартом и окончанием. Для критических задач вообще не подходит, большой риск. Для экономии денег можно засетапить Spot Fleets - набор Spot Instances + (optional) On-Demand Instances. |
Dedicated Hosts | Бронирование целого физического сервера, полный контроль размещений на сервере. Позволяет соблюдать требования соответствия и использовать существующие лицензии на программное обеспечение, привязанное к серверу (per-socket, per-core,pe--VM software licenses). Способы оплаты: On-demand (оплата за каждую секунду для активного Dedicated Host) и Reserved (1 или 3 года). Самая дорогая опция в AWS потому, что резервируется целый физический сервер. Подходит для тебя, если есть какие-то лицензии на ПО, например. |
Dedicated Instances | Никакие другие клиенты не будут использовать ваше обор удование совместно. EC2 Инстансы работают на выделенном для вас оборудовании. Имеется ввиду, что вы имеете свой инстанс на своем железе, в то время как на Dedicated Host вы имеете доступ к физическому серверу и это дает видимость нижнего уровня железа. |
Capacity Reservations | Зарезервировать мощность на любой срок в конкретной Availability Zone (AZ) . Никаких обязательств по времени и никаких дискондов. Чтобы получить дисконд, можно объединить с Regional Reserved Instances и Savings Plans. Оплата приходит по стандарту On-demand , когда есть факт наличия инстанса, его состояние не важно. Подходит для кратковременных неприрываемых нагрузок, которые должны быть в конкретной AZ. |
Price Comparison
Example: m4.large - us-east-1:
EC2 Hibernate
EC2 сигнализирует операционной системе о необх одимости перейти в спящий режим - Hibernation (приостановить работу на диске). В режиме гибернации замораживаются все процессы, содержимое оперативной памяти сохраняется в корневом томе EBS, а затем выполняется обычное завершение работы. После завершения завершения работы экземпляр переходит в остановленное состояние.
Преимущество Hibernating (спящего режима) перед Stopping (остановкой):
- Состояние памяти сохраняется;
- Поскольку состояние памяти сохраняется и загружается снова при запуске инстанса, это сокращает время загрузки инстанса;
- Длительный процесс может продолжаться без перерыва;
- Это большое преимущество, если вы хотите поддерживать уровень кэширования в памяти или иметь некоторые сервисы, полная инициализация которых занимает много времени.
Когда вы останавливаете свой инстанс, данные, хранящиеся в памяти (ОЗУ - RAM), теряются.
Когда вы прекращаете перевод инстанса в спящий режим, AWS сигнализирует ОС о переходе в спящий режим (приостановку на диск), при этом содержимое из памяти экземпляра (ОЗУ) сохраняется в корневой том EBS.
С точки зрения оплаты, AWS не взимает плату за использование или передачу данных для вашего инстанса после его остановки, однако плата за хранение любых томов EBS по-прежнему взимается.
Пример: Предположим, вы хотите создать уровень кэширования (например, поверх вашей БД) в инстансе EC2. В таком случае функция остановки гибернации будет способствовать сохранению хранилища. Это избавит вас от необходимости вручную создавать сценарии для сохранения данных ОЗУ перед выключением сервера.
Том EBS будет хранить дамп памяти RAM.
Поддерживаемые Instance Families - C3
,C4
, C5
, I3
, M3
, M4
, R3
, R4
, T2
, T3
, ...
Instance RAM Size должен быть менее 150 гб
.
Root Volume должен быть EBS, зашифрован (это можно сделать при создании EC2, в Advances settings of Configure storage
- Select Yes
Encrypted, default KMS
key), не из instance store, и большой.
EC2 Hibernate не может длиться более чем 60 дней.
Placement Groups
Это организация размещения инстансов в инфраструктуре AWS. Создание опционально, бесплатно и не обязательно, и если не запускать инстансы в Placement Group, то EC2 попытается разместить инстансы таким образом, чтобы все инстансы были распределены по базовому оборудованию AWS, чтобы минимизировать коррелирующие сбои.
Это нужно если необходимо контролировать стратегию размещение EC2 инстансов. Существуют следующие стратегии:
- Cluster - инстансы будут сгруппированы близко друг к другу в режиме low-latency setup (минимальной задержкой) внутри одной Availability Zone. Будет высокая производительность, что подойдет для high-performance computing (HPC) приложений.
- Partition (раздел) - похоже на Spread, так как инстансы размещаются среди разных многочисленных логиче ских разделов так, что группы инстансов в одном разделе не используют общее оборудование с группами инстансов в других разделах внутри Available Zone. Идея состоит в возможности масштабирования до 100 EC2 инстансов в одной группе, что позволяет запускать приложения, что обрабатывают, хранят и публикуют потоки записей (Kafka, RabbitMQ).
- Spread (распространение) - инстансы размещаются среди разного серверного оборудования AWS, но есть ограничение на 7 EC2 инстансов на Available Zone. Подходит для критических приложений.
Elastic Block Store (EBS) Volume
Сетевой диск, который можно прикрепить к EC2 инстансу. EBS позволяет сохранять данные EC2 инстанса даже после его окончания, терминейшена. EBS можно прикрепить к одному EC2, потом открепить и прикрепить к другому EC2.
EBS Volume Types
- gp2(с тарее)/gp3(новее) (ssd, 1гб-16тб, not supported Amazon EBS Multi-attach): для общего назначения, самый оптимальный варик (gp2 - 3к IOPS, у gp3 - 3к базовый IOPS, а максимум 16к);
- io1/io2 Block Express (ssd, 4гб - 64тб): самый дорогой варик, но самый крутой для низкой задержки и высокой пропускной способности;
- st1 (hdd, 125гб - 16тб, cannot be a boot volume) Throughput Optimized HDD: дешманский варик для интенсивных нагрузок;
- sc1 (hdd, 125гб - 16тб, cannot be a boot volume) Cold HDD: самый дешманский варик с наименьшей пропускной способностью.
EBS Multi-Attach
Прикрепление одного и того же EBS volume к нескольким EC2 инстансам в той ще Availability Zone. Подходит, например, для кластеров.
Доступно прикрепление до 16-ти EC2 инстансов.
EBS Volume залочен под одну Availability Zone (AZ), но можно сделать Snapshot (состояние системы в конкретный момент времени, аналогия с фотографией) и использовать его в другой AZ.
Взымается плата от AWS за GBs
& IOPS
(input/output per seconds).
По умолчанию, Root EBS Volume удаляется при удалении EC2, другой EBS Volume НЕ удаляется.
EBS volumes есть сетевыми дисками с хорошим, но лимитированным перформенсом. Чтобы улучшить этот перформенс (I/O) - надо идти в EC2 Instance Store. Но подобные штуки не стоит использовать для долгого хранения данных, так как там используются Ephemeral
инстансы, недолговечные (теряются данные при остановке EC2). Стоит использовать для буффера, кеша, временного контента.
EBS Snapshots
- Позволяет сделат ь бекап - снепшот EBS volume в определенный момент времени;
- Не обязательно отсоединить том, чтобы сделать снепшот, но рекомендуется;
- Можно кописовать снепшоты через AZ либо Region.
У EBS Snapshots есть фичи:
- EBS Snapshots Archive: можно переместить снепшот в архив, что сдешевит его хранение на 75%, но восстановиться возможно будет втечении
24-72 часов
; - Recycle Bin for EBS Snapshots: можно не удалять перманентно снепшоты, а запихнуть их в корзину (Recycle Bin) с указанием ретеншена от
1 дня
до1 года
; - Fast Snapshot Restore (FSR): это нужно, если афигеть большой EBS volume и надо его быстро инициализировать с минимальным летенси - стоит норм денег.
Amazon Machine Image (AMI)
Представляет кастомизацию EC2 инстанса: добавить собственный софт, конфигурацию, ОС, мониторинг... Если мы захотим сделать собственный AMI, то любой софт будет предварительно упакованный в образ, что ускоряет процесс загрузки.
AMI создаются для конкретного Region
, но они могут быть скопированы для другого.
- Public AMI: AWS provided;
- AWS Marketplace AMI: AMI уже сделанное кем-то;
- Собственное AMI.
AMI Process's:
- Start an EC2;
- Stop;
- Build an AMI;
- Launch instances from other AMI's.
В AL2023 (Amazon Linux 2023) не поддерживается Inspector Classic
, теперь есть новый сервис Amazon Inspector v2
, который работает через SSM Agent
.
SSM Agent
SSM (Simple Systems Manager) Agent - яв ляется основным компонентом функции Run Command
- выполнение удаленных команд или сценарием для одного или нескольких EC2 инстансов.
SSM Agent
использует SSM Documents
. Когда вы выполняете команду, агент на EC2 обрабатывает документ и настраивает EC2, как указано. В настоящее время агент и Run Command
позволяют быстро запускать сценарии Shell на EC2 с помощью документа SSM AWS-RunShellScript
.
SSM Agent
также включает функцию Session Manager
, которая позволяет управлять EC2 с помощью интерактивной оболочки на основе браузера, запускаемой одним щелчком мыши, или через AWS CLI
. При первом запуске сеанса Session Manager
на EC2 агент создаст пользователя с именем «ssm-user» с правами sudo или администратора. Сеансы Session Manager
будут запущены в контексте этого пользователя.
Elastic File System (EFS)
Это управляемая Network File System (NFS - обеспечивает хранение файлов в сети), которая может быть установленная на мно го EC2 эти инстансы могут быть в разных AZ. Доступна только для Linux based AMI. Доступ к EFS менеджится через SG.
Use cases: content management (CMS), web serving, data sharing, Wordpress.
Для EFS есть три типа Performance settings/Throught mode:
- Enhanced: Elastic - дефолт по масштабированию
- Bursting: когда мы переиспользуем базу по количеству данных и надо больше;
- Provisioned: сами выставляем требования.