6 aws создаем EC2 Instance

Thank you for reading this post, don't forget to subscribe!

Рас­смот­рим созда­ние 2х инстансов

вто­рой

Перей­дя по ссыл­ке EC2, мы ока­зы­ва­ем­ся в EC2 Dashboard - пане­ли управ­ле­ния это­го сер­ви­са. Перей­дём к управ­ле­нию инстан­са­ми, нажав на кноп­ку Insances на пане­ли сле­ва или в спис­ке ресурсов

спи­сок пуст: мы пока не запу­сти­ли ни одно­го сер­ве­ра.  Нажми­те на кноп­ку Launch Instances спра­ва вверху.

На пер­вом экране нам необ­хо­ди­мо выбрать под­хо­дя­щий образ AMI - Amazon Machine Instance, или образ вир­ту­аль­ной маши­ны, на осно­ва­нии кото­ро­го и будет создан инстанс.

  • Если нет каких-то спе­ци­аль­ных тре­бо­ва­ний, ста­рай­тесь выби­рать стан­дарт­ные обра­зы из спис­ка Quick Start - по край­ней мере в нача­ле. Они наи­бо­лее рас­про­стра­нён­ные и по ним про­ще все­го най­ти доку­мен­та­цию и поддержку.
  • Обра­ти­те вни­ма­ние на мет­ку Free Tier Eligible - толь­ко обра­зы с этой мет­кой под­хо­дят для исполь­зо­ва­ния в рам­ках про­грам­мы Free Tier.
  • Опа­сай­тесь раз­де­ла Community AMI - спи­сок в десят­ки тысяч обра­зов наво­дит на мысль, что не все из них про­хо­дят проверки.
  • По типу root device type вам пока что боль­ше подой­дут EBS, а по типу вир­ту­а­ли­за­ции HVM. Пока что не погру­жай­тесь в эти тер­ми­ны, мы поза­бо­тим­ся об этом в сле­ду­ю­щих модулях.

Пока что оста­но­вим­ся на Amazon Linux 2 AMI (HVM, SSD, x86) - это офи­ци­аль­но реко­мен­до­ван­ный образ систе­мы кото­рый под­дер­жи­ва­ет­ся и рас­про­стра­ня­ет­ся самим AWS.

На сле­ду­ю­щем шаге нам необ­хо­ди­мо выбрать тип инстан­са - и это может стать непро­стой зада­чей, ведь EC2 пред­ла­га­ет сот­ни раз­ных вари­ан­тов из десят­ков семейств! Они делят­ся на груп­пы: мно­го­це­ле­вые, опти­ми­зи­ро­ван­ные под вычис­ле­ния, опти­ми­зи­ро­ван­ные по памя­ти и дру­гие.  Глав­ны­ми отли­чи­я­ми ста­нут раз­ный объ­ём памя­ти, коли­че­ство ядер, тип и объ­ём дис­ков и сете­вая производительность.

оста­но­вим­ся на t2.micro - этот про­стой вари­ант предо­ста­вит неболь­шую маши­ну с одним ядром CPU и одним гига­бай­том опе­ра­тив­ной памя­ти. Не слиш­ком мно­го, зато “free tier eligible”.

Для нача­ла нам это­го хва­тит! Выби­рай­те t2.micro и пере­хо­ди­те к Review and launch

В послед­ним шаге надо про­ве­рить вве­дён­ные дан­ные и мож­но запус­кать! Убе­ди­тесь, что вы исполь­зо­ва­ли Amazon Linux 2 и T2.Micro!

Перед тем, как запу­стить новую маши­ну, AWS дол­жен уточ­нить наши пла­ны отно­си­тель­но keypair - SSH клю­ча для это­го инстан­са. Мы можем создать новый ключ, исполь­зо­вать суще­ству­ю­щий или вовсе отка­зать­ся от это­го. Сей­час клю­чи нам не важ­ны, так что мож­но сме­ло отка­зы­вать­ся (“Proceed without a key pair”) и нажи­мать на кноп­ку запуска!

перей­дём к вклад­ке Instances и нажмём на Instance ID.

Из инте­рес­но­го здесь будет пуб­лич­ный IP адрес это­го сер­ве­ра и его име­ни. Они нам ско­ро пона­до­бят­ся, но пока откры­вать их бес­по­лез­но - сна­ча­ла с сер­ве­ром при­дёт­ся кое-что сделать.

клик­нем по иден­ти­фи­ка­то­ру сер­ве­ра, что­бы открыть стра­нич­ку с подробностями.

Изу­чи­те “Instance Summary”, а затем нажми­те на кноп­ку “Connect”, рас­по­ло­жен­ную в пра­вом верх­нем углу. Открыв­ше­е­ся окно “Connect to Instance” пред­ло­жит нам три варианта:

  • EC2 Instance Connect - Под­клю­че­ние через браузер
  • Session Manager - Под­клю­че­ние при помо­щи ком­по­нен­та AWS Systems Manager
  • SSH Client - Стан­дарт­ное под­клю­че­ние по SSH при помо­щи кон­соль­ных команд

Самый про­стой и един­ствен­но доступ­ный нам сей­час спо­соб под­клю­че­ния - это EC2 Instance Connect: дело в том, что Session Manger тре­бу­ет допол­ни­тель­но­го про­грамм­но­го обес­пе­че­ния, кото­рое сей­час не уста­нов­ле­но, а SSH client потре­бу­ет уста­нов­лен­ный KeyPair, от созда­ния кото­ро­го мы отказались

Если вы,  выбра­ли Amazon Linux 2, то EC2 дол­жен был пра­виль­но опре­де­лить имя поль­зо­ва­те­ля, необ­хо­ди­мое для под­клю­че­ния: “ec2-user”. Заметь­те, что для дру­гих AMI имя может быть другим.

Когда мы нажмём на оран­же­вую кноп­ку “Connect” в пра­вом ниж­нем углу, бра­у­зер откро­ет новую вклад­ку с откры­тым тер­ми­на­лом команд­ной строки:

Гото­во, теперь мы можем исполь­зо­вать эту систему!

Не спе­ши­те, попро­буй­те обно­вить уста­нов­лен­ные паке­ты, уста­но­вить что-нибудь или изу­чить этот дис­три­бу­тив. Обра­ти­те вни­ма­ние, что любое при­ло­же­ние, слу­ша­ю­щее внеш­ний тра­фик (веб-сер­вер, напри­мер), ока­жет­ся недо­ступ­ным - мы ещё не зада­ли для это­го сер­ве­ра Security Groups, а зна­чит - под­клю­чит­ся сна­ру­жи к нему не полу­чит­ся, AWS EC2 забло­ки­ру­ет такие под­клю­че­ния в целях безопасности.

 

=========================================

Второй

Ранее мы запу­сти­ли неболь­шой инстанс EC2, но тол­ку от него пока было немно­го - отсут­ству­ю­щий ключ не давал под­клю­чить­ся по SSH, а стан­дарт­ная груп­па без­опас­но­сти не поз­во­ли­ла исполь­зо­вать даже про­стой веб-сервер.

В этот раз мы прой­дём этот путь цели­ком, изу­чая все важ­ные осо­бен­но­сти настрой­ки. Для нача­ла, перей­ди­те в EC2 и нажми­те на Launch Instances.

Пер­вым шагом, как обыч­но, надо выбрать AMI - образ инстан­са. В первую оче­редь нас сей­час инте­ре­су­ют обра­зы, пред­став­лен­ные в раз­де­ле Quick Start, под­хо­дя­щие под усло­вия про­грам­мы Free Tier. Вы може­те выбрать любой образ, осно­ван­ный на Linux: в даль­ней­ших шагах это­го уро­ка мы будем исполь­зо­вать Amazon Linux 2, но если вы уже опыт­ный поль­зо­ва­тель дру­го­го дис­три­бу­ти­ва, то лег­ко смо­же­те адап­ти­ро­вать пред­ло­жен­ные шаги к систе­ме ваше­го выбора.

Сле­ду­ю­щим шагом нам необ­хо­ди­мо опре­де­лить­ся с типом инстан­са. Если вы не пла­ни­ру­е­те запус­кать мощ­ные вычис­ле­ния на этом сер­ве­ре, то давай­те оста­но­вим­ся на “free tier eligible” t2.micro. Одна­ко, в этот раз мы не пере­хо­дим сра­зу к Review and launch, а про­дол­жа­ем настрой­ку с “Configure Instance Details”

 

Про­дол­жим настра­и­вать новый сервер:

  1. Number of Instances здесь мож­но задать коли­че­ство созда­ва­е­мых серверов.
  2. Purchasing option: request spot instances Spot Instance - это воз­мож­ность арен­до­вать инстанс на про­ста­и­ва­ю­щем сер­ве­ре, сэко­но­мив замет­ные день­ги на арен­де - на Spot Instance скид­ка может дохо­дить до 80 и даже 90 про­цен­тов от обыч­ной цены On-Demand инстан­са. Про­блем с ними две - во-пер­вых, про­ста­и­ва­ю­щих сер­ве­ров может и не ока­зать­ся, и тогда при­дёт­ся ждать сле­ду­ю­щей воз­мож­но­сти. Во вто­рых, если най­дёт­ся поку­па­тель по обыч­ной цене - ваш Spot Instance попро­сят “осво­бо­дить” - то есть завер­шить его исполь­зо­ва­ние в тече­ние несколь­ких минут. Такой под­ход, конеч­но, подой­дёт не для всех типов задач, но в слу­чае Batch Processing или High Performance Parallel Computations может сэко­но­мить огром­ные средства.
  3. Network - пока что хва­тит и стан­дарт­ных настроек,
  4. Placement Group и Capacity Reservation поз­во­лят настро­ить пра­ви­ла раз­вёр­ты­ва­ния групп сер­ве­ров по несколь­ким зонам доступ­но­сти (Availability Zones).
  5. IAM role поз­во­лит нам при­со­еди­нить роль к это­му инстан­су, дав ему воз­мож­ность поль­зо­вать­ся дру­ги­ми сер­ви­са­ми AWS (напри­мер, загру­зить файл в AWS S3). Пока что ни к чему, но обя­за­тель­но пона­до­бит­ся в дальнейшем.
  6. CPU Options могут при­го­дить­ся для тон­кой настрой­ки неко­то­рых сер­ве­ров, но наше­му t2.micro настра­и­вать нечего. 
  7. Shutdown behavior выстав­ле­но в поло­же­ние “стоп”, то есть по умол­ча­нию при отклю­че­нии этот сер­вер дол­жен про­сто остановится.
  8. Enable Termination Protection поз­во­лит защи­тить сер­вер от слу­чай­но­го уда­ле­ния: обя­за­тель­но вклю­чай­те эту гал­ку для важ­ных сер­ве­ров, ну а в дан­ном слу­чае она ни к чему.
  9. Monitoring AWS пред­ла­га­ет к исполь­зо­ва­нию свою соб­ствен­ную систе­му мони­то­рин­га CloudWatch. Эта мощ­ная систе­ма очень непло­ха и отлич­но инте­гри­ро­ва­на в плат­фор­му, одна­ко сто­ит допол­ни­тель­ных денег и сей­час будет нам ни к чему.
  10. Tenancy По умол­ча­нию наш инстанс будет запу­щен на Shared Hardware, что в неко­то­рых слу­ча­ях может при­ве­сти к про­бле­ме “шум­ных сосе­дей”, зато поз­во­ля­ет сэко­но­мить мно­го средств. В нашем слу­чае Shared Hardware опре­де­лён­но будет луч­шим выбором.
  11. Про Credit Specification мы ещё пого­во­рим, а вот допол­ни­тель­ные эла­стич­ные фай­ло­вые систе­мы от сер­ви­са AWS EFS нам пока не понадобятся.

  • Enclave (Nitro Enclave) - это спе­ци­аль­ный режим EC2, извест­ный как trusted execution environment (TEE), поз­во­ля­ю­щий обра­ба­ты­вать дан­ные в мак­си­маль­но защи­щён­ном режиме.
  • Мета­дан­ные мы сего­дня пропустим
  • А вот User data очень при­го­дит­ся. Коман­ды вве­дён­ные в этом раз­де­ле, будут выпол­не­ны на запус­ка­е­мом инстан­се (или сра­зу несколь­ких, если вы уста­но­ви­ли Number of Instances > 1). Таким обра­зом мож­но ука­зать, напри­мер, такую инструкцию:

И полу­чить после запус­ка сер­вер с уста­нов­лен­ным и запу­щен­ным веб-сер­ве­ром nginx (Обра­ти­те вни­ма­ние: User Data может пока­зать­ся крайне полез­ным инстру­мен­том, но мы реши­тель­но НЕ РЕКОМЕНДУЕМ исполь­зо­вать её для серьёз­ной настрой­ки сер­ве­ров: суще­ству­ют гораз­до луч­шие инстру­мен­ты для этой зада­чи, и мы на них обра­тим самое серьёз­ное вни­ма­ние в сле­ду­ю­щих модулях)

Пожа­луй­ста, вве­ди­те при­ве­дён­ный код в User data и давай­те продолжим.

На сле­ду­ю­щей вклад­ке мы можем задать дис­ки, под­клю­чен­ные к инстан­су. Уве­личь­те доступ­ный объ­ём загру­зоч­но­го root дис­ка до 10 гига­байт и добавь­те ещё один, 5 гига­байт, без снэп­шо­та, тип gp2, Delete on Termination отключено.

Теперь мы можем задать тэги. Тэги не обя­за­тель­ны, но очень удоб­ны и нуж­ны для орга­ни­за­ции вашей инфра­струк­ту­ры: пока вы рабо­та­е­те один и запус­ка­е­те пару сер­ве­ров, это не так важ­но, но в команд­ной рабо­те над груп­па­ми Spot, Reserved и Autoscaled инстан­сов это уже будет очень хоро­шей привычкой.

Пока что задай­те мини­мум два тэга, Name (любое имя сер­ве­ра) и Owner (Ука­жи­те соб­ствен­ное имя или e-mail). Тэг Name будет исполь­зо­ван EC2 для пред­став­ле­ния инстан­сов в спис­ке как имя сервера.

Послед­нее, что нам нуж­но сде­лать в рам­ках это­го зада­ния - это скон­фи­гу­ри­ро­вать груп­пы без­опас­но­сти. По умол­ча­нию, EC2 Launch Wizard будет созда­вать новую груп­пу без­опас­но­сти c пра­ви­лом: раз­ре­шать любые под­клю­че­ния по SSH. Давай­те это изменим?

  1. Поставь­те Source пер­во­го пра­ви­ла в зна­че­ние My IP (обра­ти­те вни­ма­ние, что в неко­то­рых слу­ча­ях ваш IP адрес может регу­ляр­но менять­ся, тогда будет луч­ше поста­вить Anywhere)
  2. Добавь­те вто­рое пра­ви­ло при помо­щи кноп­ки Add Rule. Раз­ре­ши­те доступ типа HTTP (TCP, порт 80, Anywhere) выбрав его из выпа­да­ю­ще­го спис­ка справа.

Про­верь­те вве­дён­ные дан­ные в окне review и запус­кай­те сер­вер кноп­кой launch

Теперь без key pair нам будет уже не обой­тись, поэто­му при­дёт­ся её создать с помо­щью AWS EC2 (пункт меню create a new keypair) и скачать.

Если вы пред­по­чтё­те исполь­зо­вать уже име­ю­щий­ся ключ, то его необ­хо­ди­мо будет сна­ча­ла загру­зить, открыв EC2 в отдель­ной вклад­ке и перей­дя в пункт меню EC2 - Security - Key Pairs - Action - Import Key Pair.

Под­твер­ждай­те запуск: EC2 создаст новый сер­вер и выпол­нит коман­ды user data, обно­вив паке­ты и уста­но­вив nginx. Про­верь­те, вско­ре после запус­ка на пуб­лич­ном адре­се вы долж­ны уви­деть новую страничку!

Откры­вай­те при­ло­же­ние в режи­ме "инког­ни­то", т.к. в обыч­ном режи­ме бра­у­зер бло­ки­ру­ет доступ по http. В Google Chrome к при­ме­ру, мож­но запу­стить режим с помо­щью ком­би­на­ции "Ctrl+Shift+N".

Гото­во! Теперь мож­но под­клю­чит­ся к сер­ве­ру по SSH, в сле­ду­ю­щем уро­ке мы этим займёмся.

Важ­ное Напо­ми­на­ние Уда­лив сам инстанс, Не забудь­те уда­лить под­клю­чен­ный вто­рой диск вруч­ную! Он был создан без Delete on Termination, а зна­чит, оста­нет­ся доступ­ным вам и после уни­что­же­ния сер­ве­ра. В отли­чие от инстан­сов EC2, кото­рые тари­фи­ци­ру­ют­ся толь­ко в ста­ту­се Running, дис­ки (Volumes) счи­та­ют­ся актив­ны­ми, даже если не под­клю­че­ны ни к одно­му сер­ве­ру. Вы най­дё­те его в EC2 - Elastic Block Store - Volumes.