Як ви автоматизуєте відмову на EC2?


13

З людей, які керують своїми кластерами (тобто не використовують / платять за Amazon Autoscale, Rightcale, Scalr тощо), як ти керуєш своїми прикладами на EC2 та обробляєш (наприклад) відмову? Мені цікаво, чи більшість людей просто закінчують писати свої власні набір сценаріїв проти API EC2, як я підозрюю.

Це, безумовно, наш підхід: підключити власний моніторинг / перезапуск демона на основі Python Boto, який працює за межами сайту, слухаючи збереження UDP від ​​наших екземплярів. У разі відмови ми робимо знімки томів, реєструємо зображення, запускаємо нові екземпляри, видаляємо старі томи тощо.

Кожен так часто, коли хакують наші сценарії, я думаю, що там повинні бути якісь інструменти з відкритим кодом, які вже вирішують ці проблеми, і які не мають обмежень (скажімо) Scalr, але я завжди повертаюся з Google з порожніми руками. (Такі речі, як Scalr, є досить обмеженими у підтримуваних наборах / версіях / конфігураціях програмного забезпечення та мають спеціалізовані та IMO громіздкі способи маніпулювання цими налаштуваннями.)

Крім того, екосистема Linux-HA / Pacemaker (серцебиття, ldirectord тощо) здається, що вона дійсно не підходить для EC2 . (Але тоді я знайшов це, хоча я не впевнений, що це дійсно якісне рішення).

Відповіді:


5

Ну, я не хочу просто констатувати очевидне, але загальна ідея полягає в тому, щоб вкласти цю складність у послуги, якими керує Amazon.

Таким чином, на передньому етапі, ви б використовували Amazon Elastic Balancing Load (ELB) для забезпечення високо доступного балансування навантаження. На задньому кінці ви використовуєте послугу баз даних Amazon Relational Database (розміщена MySQL), SimpleDB та S3 для зберігання. Все це управляється Amazon, і вони містять якусь обробку з високою доступністю / відмовою.

Зазвичай це залишає ваші сервери веб-додатків та будь-які менш поширені типи серверів, які ви можете використовувати (сервери візуалізації, самостійно встановлені сховища даних NoSQL тощо).

Зазвичай сервери Webapp обробляють достатньо добре за допомогою перевірок здоров’я, вбудованих в ELB. Ви можете прийняти невелику зниження продуктивності, коли один сервер webapp не працює, або стабільно надавати +1 серверу більше, ніж потрібно. Або якщо ваша конфігурація проста, тоді, коли сервер webapp виходить з ладу, ELB разом із Cloudwatch може автоматично породжувати новий веб-сервер для вас.

Ваші власні сервери - інша справа. Для цього це правда, ви самостійно, і вам потрібно буде вчинити з вбудованими методами додатків або підключити клейку стрічку разом із спеціальними скриптами / інструментами HA з відкритим кодом.

Придбання рішення «Правової шкали» може бути надто дорогим. Але дешевші інструменти Amazon, такі як ELB, базове сповіщення CloudWatch (тепер безкоштовне для 5-хвилинної роздільної здатності) або AutoScale цілком варті того, якщо вам потрібна висока доступність.


3
Ми знайомі з набором функцій AWS, а також з їх обмеженнями. Щоб взяти ваш перший приклад, доступ до ELB здійснюється за допомогою RR-адрес CNAME, які не можуть співіснувати з RR-адресами SOA, і, таким чином, не можуть обслуговувати TLD, плюс не можна отримати доступ через статичні IP-адреси - фрустрації, які широко перегукуються на форумах. Щоб взяти ваш другий приклад, так, RDS - це MySQL, що є гігантським обмеженням. Так, нас цікавить автоматизація відмови від власних типів машин. Так, приватне хмарне розгортання стосується нас. Так, мені просто цікаво. І т. Д.
Ян

2
@Yang: Ви мали б більш ретельно сформулювати своє запитання і врятували мені проблеми введення моєї відповіді. Не існує єдиного розміру рішення для НА; це залежить від розглядуваної служби, від того, як зберігається стан, властивості відмови протоколу тощо. Ви маєте рацію щодо обмежень / труднощів у використанні типових інструментів HA рівня ІС на EC2. Але немає єдиної відповіді, яка б універсально застосовувалася до "HA on AWS".
Jesper M

0

RightScale має кілька чудових статей про те, як автоматизувати відмову на EC2. Хоча більшість із них показує, як це зробити за допомогою RightScale, принципи є загальними та, ймовірно, корисними для всіх, хто замислюється про те, як налаштувати архітектуру відмови на EC2.


0

Проблеми, які ви описуєте (HA, моніторинг користувацьких серверів, послуги "наведення каналів"), як правило, вирішує постачальник PaaS. Шкала прав та Scalr вже згадувались у попередній відповіді, і є додаткові хороші варіанти (див. Тут декілька варіантів PaaS:

/programming/9542784/looking-for-paas-providers-recommendations )

Ви повинні врахувати, хто з провайдерів найбільше відповідає тому, що вам потрібно.

Належне повідомлення: Я працюю у cloudify, постачальнику послуг PaaS з відкритим кодом.


0

Нещодавно я написав повідомлення в нашому інженерному блозі про те, як використовувати ELB спільно з автоматичним масштабуванням для досягнення автоматичного відмови для будь-якого додатка. Він висвітлює, як перевірки здоров’я ELB можуть використовуватися для пінг-статусу вашої програми та запуску автоматичного масштабування.


0

Ви встановлюєте серцебиття на обох серверах. Ви приєднуєте еластичний IP до "активного" сервера. Ви налаштовуєте сценарій для виконання відмови, ініціюючи запит API для отримання еластичного IP, як тільки сервер "очікування" отримав еластичний IP ( займає близько 30-60 секунд) він може бути головним / активним.

У мене немає специфіки, яку тут можна надати.


-1

Amazon вже забезпечує еластичне балансування навантаження ... Навіщо винаходити колесо?


3
Через різні обмеження ELB? Тому що він вимагає CNAME і не може обслуговувати і foo.com, і www.foo.com? Тому що я хочу реалізувати логіку користувацького планування? Тому що мені просто цікаво, як ти сам реалізуєш ELB у групі ненадійних віртуальних машин? Візьміть свій вибір.
Ян

@Yang, ви робите це так само, як і коли б вони були серверами у вашому центрі обробки даних. Немає принципової різниці, немає чарівного соусу, який робить його хмарним середовищем.
Кріс S
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.