Внедряване на първото ми приложение в AWS

Аз съм уеб разработчик и току-що започнах да се интересувам от неща за системния администратор. Преди съм настройвал сървър на Linode.com (Ubuntu 10.04 LTS, nginx, Ruby on Rails, PostgreSQL), но имаше някои проблеми. Всичко беше на една машина, така че всеки път, когато нещо се обърка с Linode или имах много трафик, сайтът ми спираше.

Сега се интересувам от създаването на личен блог и внедряването му в Amazon AWS. Това е добра възможност за мен да се науча как да използвам множество сървъри с балансиране на натоварването, автоматично мащабиране, възстановяване при срив и т.н. Единственият проблем е, че не съм съвсем сигурен откъде да започна.

Прочетох цяла литания от документация от Amazon и публикации в блогове другаде, но като начинаещ системен администратор имам няколко въпроса:

  • Разбирам, че екземплярите на EC2 са твърде непостоянни, за да се съхраняват данни. И така, къде да го съхранявам? Amazon Elastic Block Store? Цялата файлова система ще отиде ли там, както и базата данни?
  • Имам ли нужда от сериозни познания за балансиране на натоварването и мащабиране? Или дръжката на Amazon Elastic Load Balancer ще улесни нещата за мен? Как техният балансьор на натоварването взаимодейства с nginx?
  • Каква част от това препоръчвате да правите през интерфейса на AWS, за разлика от командния ред?
  • Някакви неочевидни проблеми, които могат да ме хванат?
  • Има ли уроци за внедряване на блог или просто приложение на Rails на EC2? Тук нямам нужда от настройка за качество на продукцията; основната ми цел е да уча.

Благодаря за всички отговори, които можете да предоставите!


person NudeCanalTroll    schedule 03.09.2011    source източник
comment
Вероятно трябва да зададете този въпрос на superuser.com   -  person rubish    schedule 03.09.2011


Отговори (1)


Настроих моя справедлив дял от внедрявания на AWS; ето основите:

Съхранение на данни

Ако имате често достъп до данни, както вероятно знаете, най-добре е да използвате база данни. Това е една от най-сложните части на AWS хостинга. Вашите опции са, приблизително в нарастващ ред на сложност/цена:

  1. SimpleDB - предложение за собствена база данни на Amazon. Те ви дават HTTP API, който използвате, за да четете и записвате вашите данни. Има някои релсови библиотеки за него, но като цяло не е изящно въвеждане за релси.
  2. Amazon RDS - Amazon ще конфигурира предварително подобен на mysql сървър на база данни за вас. Това изисква да стартирате екземпляр на DB сървър, така че сървърът за ценообразуване не е благоприятен за малки сайтове. Положителната страна е, че ви позволява да мащабирате по-лесно своя DB сървър.
  3. Направете своя собствена - Планирайте около изчезването на екземпляри на Amazon EC2 във всяка точка; следователно локалното хранилище, което получавате с екземплярите на EC2, най-добре може да се счита за голяма временна директория. Elastic Block Store е решението на Amazon за това; това на практика е дисково изображение, монтирано от вашите екземпляри. EBS изображенията живеят независимо от EC2 екземплярите, така че ако вашият сървър прекъсне, можете да монтирате EBS образа на нов EC2 екземпляр. Можете по същество да навиете свой собствен клъстер от база данни, като заредите куп екземпляри и ги конфигурирате да се репликират един от друг. Това работи, но не е грациозно и наистина трябва да се опита само ако не можете да разрешите проблема си с по-малко екзотични методи.

Amazon почти изброява тези опции, плюс още няколко, които не са приложими за вас на http://aws.amazon.com/running_databases/

Рядко променяните данни трябва да се съхраняват в S3; има много рубинени скъпоценни камъни за лесен достъп до това. Ако уебсайтът ви е изцяло статичен от страната на сървъра, можете дори да изпълните целия си сайт извън S3

Балансиране на натоварването

„Еластичното балансиране на натоварването“ на Amazon е доста ефективно при типичните изисквания за балансиране на натоварването в мрежата. Обикновено това е лесен избор, освен ако нямате екзотични изисквания. Това обаче няма да мащабира вашия клъстер вместо вас. За автоматично зареждане и изключване на екземпляри трябва да потърсите собственото решение за автоматично мащабиране на Amazon

Предупреждения

Не забравяйте да отбележите в коя „Зона на наличност“ (известен още като център за данни) се намирате. В някои случаи не можете да споделяте AWS ресурси между зоните на наличност.

Уроци

Има много уроци, но при моето кратко търсене не намерих нито един наистина страхотен или актуален. Въпреки това вижте https://github.com/wr0ngway/rubber, който е Ruby инструмент за внедряване приложения към EC2. Ще ви отведе по-голямата част от пътя до там.

person Jason S    schedule 03.09.2011
comment
Благодаря за много изчерпателния отговор! Предполагам, че засега ще използвам само RDS и ще се тревожа за балансирането на натоварването и автоматичното мащабиране по-късно. Един въпрос, който имам, е: Как да противодействам на променливостта на екземпляр? Значение: Ако се затруднявам да инсталирам и конфигурирам целия софтуер, който искам на екземпляр, след което той се прекратява, как да предотвратя стартирането от нулата следващия път, когато искам да стартирам екземпляр? - person NudeCanalTroll; 04.09.2011
comment
Изображенията, които EC2 екземплярите зареждат, се наричат ​​AMI. Има няколко за стандартни дистрибуции на Linux и можете да направите свои собствени сравнително лесно. Можете също да зареждане от моментни снимки на EBS. Трета опция, която се среща по-често при по-големи настройки, е да стартирате от стандартен AMI, но да стартирате скрипт, за да настроите сървъра в движение, подпишете нещо като Готвач или Кукла . Късмет. - person Jason S; 06.09.2011