Да творим!

Проектът тази седмица ни възлага да създадем традиционна 3-степенна архитектура в Amazon Web Services. Трите нива обикновено се наричат ​​ниво на уеб или презентация, ниво на приложение и ниво на база данни (или просто данни). Нека преминем през всеки компонент много бързо:

Въведение

  • Уеб ниво —Обикновено това ще бъде публичната страна на вашия проект. Независимо дали става въпрос за уебсайт или GUI, това е, което потребителят вижда и с което взаимодейства. За нашия проект ще имаме група с автоматично мащабиране от екземпляри на EC2, работещи с Apache, за да хостват прост HTML сайт, съдържащ се в няколко подмрежи във VPC, които се свързват с интернет чрез шлюз. Групата за сигурност ще ограничи трафика към тези екземпляри само до HTTP.
  • Приложно ниво —Това ниво, както може да звучи, обикновено е мястото, където ще седи действителната логика, код или „мозък“ на вашия проект. Трафикът ще бъде предаван от уеб ниво към това ниво за обработка. В нашия пример ще имаме група с автоматично мащабиране от екземпляри на EC2 вътре в частни подмрежи. Група за сигурност ще гарантира, че може да преминава само трафик директно от уеб ниво. За този проект всъщност няма да имаме работещ код.
  • Ниво на база данни —Последното ниво е основно съхранение. Той ще съдържа всички бази данни, от които се нуждае вашето решение, или устройства за съхранение, като кофа S3. В нашия проект това ще бъде MySQL RDS база данни, разположена в няколко частни подмрежи. Както преди, групата за сигурност ще ограничи трафика само до входящ от нивото на приложението.

Опитах се да начертая това диаграмно, така че ето как може да изглежда логично:

Предпоставки

За този проект всичко, от което ще се нуждаем, е AWS акаунт с администраторски достъп. (Както винаги, не използвайте вашия root акаунт)

Да го направим!

Уеб ниво

Създаване на VPC
За да започнем, ще бъдем в нашата AWS конзола и ще преминем към VPC таблото за управление.

Както при всичко останало в конзолата, нека да погледнем горе вдясно за бутона „Създаване на VPC“.

Следващата екранна снимка показва страхотна функция, която ви позволява да създадете голяма част от активите за този проект наведнъж. Изглежда обаче съм лаком за наказание и ще разбия малко нещата, за да спазвам подхода си на „три различни нива“.

Затова вместо това избираме „само VPC“, именуваме го, даваме му CIDR блок и бум. Стъпка едно е завършена.

Създаване на някои подмрежи
След това ще преминем надолу в менюто от лявата страна и ще изберем „Подмрежи“. Потърсете бутона „Създаване на подмрежа“ и го натиснете.

Booyah. Успех.

Таблици за маршрутизиране
Това е страница, на която ще се връщаме няколко пъти, но точно сега ще създадем таблица за маршрутизиране за двете подмрежи, които току-що създадохме . Това ще позволи на екземплярите да говорят помежду си, а по-късно и с интернет шлюза. Както при подмрежите, това е следващата опция от лявата страна на вашата конзола и zwoop! горе вдясно за „Създаване на таблица с маршрути“

След като имаме таблицата, трябва да асоциираме подмрежите с таблицата:

Това създава „явна“ асоциация. Достатъчно е да се каже, че може да има имплицитни, но днес няма да се занимаваме с тях. Тук трябва също да отбележа, че по подразбиране всяка таблица с маршрути, която е създадена, ще има запис за маршрут по подразбиране, наречен „локален“. Този маршрут позволява на всички екземпляри да комуникират с всички други екземпляри, които са в подмрежи, които използват тази таблица.

Друга стъпка, която трябва да се направи, е да направите тази таблица „главна“ таблица за VPC.

Плюсът към междумрежите
Наричан просто интернет портал, този следващ актив позволява на подмрежите, които сме създали преди това, да имат достъп до интернет като цяло, като по този начин се превръщат в „Публични подмрежи“

Следващата стъпка е да „прикачите“ шлюза към VPC, който създадохме в началото.

Следвайте подканите, изберете правилния VPC и преминаваме към следващата част!
На този етап можем също да добавим шлюза към нашата таблица за маршрутизиране:

Създаване на група за сигурност
Групите за сигурност са жизненоважни като своеобразна защитна стена на ниво „инстанция“. Тук ще създадем такъв, който ще позволява само HTTP трафик.

Създаване на група за автоматично мащабиране
Като навигирате до EC2 › Групи за автоматично мащабиране, можем да намерим типичния съветник „Създаване на XYZ“, но при стартирането на съветника разбрах, че наистина трябва да създам първо стартирайте шаблон. Обхванах създаването и използването на шаблон за стартиране преди, но има достатъчно уникални характеристики за този проект, така че ще ни преведа през него отново тук.

След като създадохме шаблона за стартиране, можем да се върнем към съветника за група за автоматично мащабиране (ASG) и да продължим:

Всичко останало е оставено по подразбиране и всъщност бихме могли да използваме бутона „Пропускане към преглед“ на страницата по-горе, но независимо от това... завършете съветника и след като нашите екземпляри приключат с инициализирането, можем да вземем един от техните публични IP адреси и да видим нашите любима малка html страница:

Забележка: по някаква странна причина моят нормален скрипт за стартиране се проваляше, така че трябваше да добавя командаinstall php, за да стартира уеб сървърът на Apache.

И с това завършва първото ни ниво. *хвърля конфети* Вземете малко течна енергия, шапките си и евентуално котката и да продължим!

Ниво на приложение

Създаване на още подмрежи
Връщайки се обратно към нашата страница VPC › Подмрежа, ще създадем още две подмрежи:

Този път няма да ги прикачваме към интернет шлюза, като по този начин ги правим „частни“ подмрежи. Ще трябва обаче да ги асоциираме с таблица с маршрути.

Създайте нашата група за сигурност на приложенията
Забавното в тази е, че ще позволи трафик само от нашата група за уеб сигурност!

Автоматичното мащабиране отново удря!
Ще създадем друга комбинация от шаблон за стартиране/група за автоматично мащабиране, но това ще стартира само екземпляри EC2 само с операционна система върху тях. Виждали сте опциите и преди, така че току-що нарекох моя шаблон за стартиране USAFBlueprint, а моя ASG BaseDorms. Завършете съветника и те ще започнат да се въртят!

Създаване на NAT шлюз
Сега наистина, този бит всъщност може да отиде във всяка точка след създаването на първата публична подмрежа, но ще го поставим тук. Важен момент определено е изборът на правилната подмрежа, гарантирането, че е публичен тип и разпределянето на еластичен IP.

Сега, в този момент, можем или да се върнем към таблиците с маршрути и да добавим ИД на NAT шлюза като запис за маршрут в таблицата с частни маршрути на ниво приложение (BaseMap), или можем да изчакаме до по-късно, и го добавете към двете частни таблици с маршрути (BaseMap/FortMap). Така или иначе ще изглежда по следния начин:

И там имаме нашето ниво на приложение! Към последната ни спирка…

Ниво на база данни

Още една група за сигурност…
Тази позволява само MySQL трафик от моята група за сигурност на ниво приложение: SecurityForces.

Създаване на база данни
След това ще създадем база данни MySQL RDS. Сега тези екранни снимки може да изглеждат така, сякаш съм успял просто да премина през това, но всъщност се наложи да направя резервно копие на няколко стъпки, за да подготвя този етап.

  • базата данни няма да създаде, защото се нуждае от подмрежи, които са разпръснати в поне две зони на достъпност
  • тъй като бях създал всичките си подмрежи с основно „оставете Amazon да избере AZ“, всички те бяха в една и съща AZ.
  • В крайна сметка трябваше да изтрия/създам отново последната си подмрежа и да я поставя ръчно в друга AZ.
  • След това създадох подмрежовата група на DB и успях да завърша създаването на база данни.

Сега сме отново на пистата!

Има голяма част от опции между тези две екранни снимки, но това бяха единствените уместни опции.

И ето го! Нивото на базата данни!

Голяма забележка тук обаче е, че този проект:

  1. нямаше никаква функционалност за нивото на приложението
  2. всъщност нямаше никакви връзки към нивото на базата данни, но имаше за цел по-скоро да покаже процеса, който човек може да използва, за да създаде нещо подобно.

Преди да приключим обаче.

Бастионът

Тестване на уеб към приложение

Казано по-просто, Bastion хост (или на по-стар език сървър за прескачане) е допълнителен начин за блокиране на вашата архитектура, но все пак позволява точка за достъп за определени действия. В този случай ще създадем бастионен хост, за да тестваме и да видим дали нашето уеб ниво може да общува с нашето ниво на приложения!

Нашият Bastion Host (известен още като SpaceWarningSqdn) ще бъде поставен в нашата публична подмрежа и ще му бъдат дадени права (отново чрез нашите групи за сигурност) за пинг частен IP на един от нашите екземпляри на ниво приложение.

За съжаление, поради бъркотия, когато беше 4 часа сутринта и ДЪЛГА верига от тестване на различни конфигурации на правила, за да го накарам да работи, загубих повечето си екранни снимки. Но ето този на пинга, който всъщност работи!

Заключение

Тристепенната архитектура е чудесен начин да изградите цял стек от услуги, тъй като ви позволява да го разделите логически, да накарате всяка част да работи индивидуално и след това да свържете точките за напълно функционален, епичен проект.

Благодаря ви, че останахте с мен, ще се видим следващия път!

Frogblast ventcore!