Автопортал || Авто - статьи

Сельскохозяйственная техника
Чтение RSS

Хостинг Amazon EC2

Уже років п'ять розміщую свої проекти на орендованих виділених серверах. Свій окремий сервер - це круто. Сайти завжди мають гарантовані ресурси, досить пам'яті, можна встановлювати будь-яке ПЗ, на свій смак і робити різні настройки. Плюс, за цей час я навчився адмініструвати Linux сервера.

Правильно конфігурований сервер на правильному залозі може працювати без збоїв кілька років. ПО в серверних дистрибутивах Linux досить стабільно (я використовував раніше Debian, а зараз Ubuntu Server). ECC оперативна пам'ять зменшує в рази збої в пам'яті, а Raid 1 або Raid 10 - дозволяють пережити крах одного з серверних дисків.

Але часто серйозні падіння приходять не з боку обладнання, а з боку людського фактора. За років десять пам'ятаю близько п'яти серйозних збоїв пов'язаних з повною або частковою втратою даних. Наприклад один раз згорів цілий датацентр поховавши тижневу роботу над сервісом одного з клієнтів, а інший раз у провайдера сервери заарештувало ФБР, захопивши на всякий випадок, разом з потрібними їм серверами ще кілька сусідніх стійок.

Крім того оренда окремого виділеного сервера має кілька мінусів:

1. Ціна за сервер не знижується з часом. Невеликим датацентрах або ресселером (тим хто перепродує сервери) просто невигідно це робити. Потрібно через рік-два шукати нова цікава пропозиція і переїжджати. А переїзд займає два-три дні витраченого часу. За весь час пам'ятаю тільки один випадок, коли ціна знизилася.

2. Апгрейд (переїзд на більш потужний сервер в разі зростання відвідуваності) або даунгрейд (переїзд на слабший сервер), знову ж таки вимагає переїзду і переустановлення всього ПО.

3. На "бойовому" сервері потрібно дуже акуратно працювати з установкою ПО і зі зміною налаштувань, тому що в разі невдачі, може статися тривалий простій.

4. Звичайна операція включення / перезавантаження сервера - іноді може зайняти кілька годин. Не скрізь є інтерфейси доступу до перезавантаження. Часто це роблять люди. Найзручніше що я бачив, це iLo інтерфейс у блейд-серверів HP, де можна не тільки перезавантажити сервер, але отримати до нього доступ в разі відключення мережевих інтерфейсів.

Тобто для мене, оренда сервера вже не дає потрібної мені гнучкості. Основна проблема в тому, що якщо станеться крах сервера, то потрібно терміново шукати інший сервер (+ відразу платити за нього), чекати поки його запустять, встановлювати і налаштовувати. Це може зайняти два-три дні. А тривалий даунтайм сайтів не дуже любить Google. Якщо перебуваєш десь у поїздці, така ситуація може обернутися цілим кошмаром.

Тому давно придивляюся до хмарним сервісами. Тенденція така - більше і більше сервісів переміщається в хмару. Хмарні сервіси вже поза конкуренцією для побудови великих кластерних рішень, але останнім часом це і цікаве рішення для "віртуального" хостингу (кілька невеликих проектів на одному сервері).

Найбільші гравці, яких я розглядав - Amazon Elastic Compute Cloud (EC2) , RackSpace , Google Compute Engine , Microsoft Asuze (Так так, Microsoft теж надає хостинг linux серверів). Тобто це рішення де можна замовити сервер в "хмарі". Це буде звичайний linux веб-сервер, на який можна встановити все що завгодно, але працювати він буде не на окремому веб-сервері, а десь в "хмарі" в інфраструктурі "хмарного" хостера. Такий віртуальний веб-сервер можна "апгрейдити" (збільшуючи ресурси).

Я розглядав ціни, гнучкість, різні сервіси і зупинився на Amazon EC2. Amazon один з найстаріших гравців, вони лідери і крім самого хостингу, це активно розвивається платформа ( Amazon Web Services ) З дуже цікавими рішеннями. По суті, це не просто сервіс, а інфраструктура як сервіс ( Iaas ). Я вже використовую CND CloudFront - для кешування і віддачі дрібних картинок на одному з проектів і підключив його, пам'ятаю, всього за пару днів.

Спробую описати коротко плюси і мінуси розміщення на Amazon Elastic Compute Cloud (на мою думку).

Плюси Amazon EC2:

1. Гнучкість - можна запустити інстанси (віртуальну машину) потрібної продуктивності. Інстанси можна запустити з готового образу з чистою системою (будь-який дистрибутив Linux або Windows) або з спеціально підготовленого образу з певним софтом. Можна заздалегідь підготувати образ і отримати вже сконфігурованої систему. Створення нової машини займає кілька хвилин. Наприклад, у мене є готовий образ для тестування з усім потрібним софтом, і створення нової машини для тестування нового проекту, з урахуванням завантаження файлів, займає близько півгодини.

2. Оплата тільки за спожиті ресурси - за що працюють інстанси оплата за кожну годину. Якщо інстанси зупинений або видалений, то за нього платити не потрібно. Можна створити нову машину, перевірити потрібну конфігурацію за пару годин, а потім її видалити і заплатити за це кілька десятків центів. Можна зробити копію диска працюючої машини, запустити новий інстанси з копією диска і перевірити все що потрібно без ризику щось "поламати".

3. Вертикальне масштабування - можна швидко перейти на будь-який тарифний план, якщо ресурси надлишкові або навпаки. Для цього потрібно зупинити інстанси, поміняти план і запустити його. Це займає близько хвилини. Наприклад, я свій новий працюючий сервер під навантаженням, запускав на трьох тарифних планах, щоб порівняти продуктивність.

4. Бекап всієї системи - використовуючи систему снапшотов, за кілька хвилин можна зберегти диск всієї системи. Причому зберігаються трохи файли, а взагалі вся ОС на даний момент часу. У разі краху інстанси, можна створити новий попередньо створивши образ з снапшотов, або створивши диск з снапшотов і поміняти його у нового інстанси. Тобто відновлення їх бекапа всієї системи займає лічені хвилини. Створення снапшотов можна також автоматизувати.

4. EBS - Elastic Block Store , Мережевий диск в "хмарі", на якому працює вся система. EBS не залежимо від сервера на якому працює інстанси, надійніший ніж жорсткий диск і забезпечує до 2000 iops (операцій введення-виведення). Розмір диска можна збільшити (для цього потрібно зупиняти машину на кілька хвилин). EBS диск існує окремо від інстанси, можна створити інший інстанси і до нього пріатачіть вже існуючий EBS.

5. Гнучка ціна - при оренді на тривалий час можна добре заощадити. Це велике питання, напишу про це в наступному пості.

6. Оплата за фактом - гроші потрібно платити не вперед, а в кінці місяця за підсумками витрачених ресурсів.

7. На відміну від нічим не підтверджених гарантій багатьох провайдерів, Amazon гарантує досить пристойний 99,95% аптайм (трохи менше 4.5 години на рік або 20 хвилин в місяць простою) і зобов'язується платити штраф клієнтам, якщо даунтайм більше допустимих значень.

8. Ціни знижуються - наприклад в цьому році було два зниження.

Мінуси Amazon EC2:

1. Менша продуктивність - віртуальні машини по потужності за ту ж ціну, помітно програють єдиного сервера. Це плата за все "плюшки" що дає Amazon. Втім якщо платити вперед (про це в наступному пості), ціни більш можна порівняти.

2. EBS - Elastic Block Store, крім плюсів має мінуси. Швидкість менше ніж у реального жорсткого диска, а судячи з відгуків при великому навантаженні кількість операцій в секунду (iops) може впасти до десятків. (Але це можна вирішити, якщо замовляти EBS з гарантованим iops - правда це дорожче).

3. Складність з декількома ip для одного сервера - до кожного інстанси можна підключити за замовчуванням тільки один ip. Часто потрібно декілька ip для "віртуального" хостингу. Підключити кілька ip можна, використавши Amazon VPS, але це додаткова оплата за VPS. Я наприклад, я просто запустив два різних віртуальних сервера.

4. Крім EBS, в віртуальних машинах дається місце на дисках сервера, але воно скидається, якщо інстанси зупиняється. Тобто його можна використовувати тільки для балок, наприклад, або для тимчасових даних.

В цілому я можу сказати наступне: по продуктивності хостинг від Amazon програє класичної оренді серверів, але гнучкість і "плюшки", які дає інфраструктура, просто прекрасні. До того ж на цій інфраструктурі можна побудувати великий проект.

Наступним постом опишу ціни і типи інстанси у Amazon Elastic Cloud Compute EC2.