Стратегія резервного копіювання Amazon EC2 із обмеженнями (знімки мало або не можна робити?)


9

Були задані подібні запитання, але мені потрібно знати, що було б рекомендовано за таких обставин, щоб знати, якщо я щось не пропускаю в розумінні використання EC2.

Невеликий стартап веде свій бізнес в мережі EC2 і попросив мене поради щодо варіантів резервного копіювання. Наразі вони фінансуються самостійно і роблять все можливе, щоб заощадити витрати, коли це можливо. Не надто заглиблюючись у конфігурацію їх систем, я наведу веб-сервер як приклад; це простий веб-сервер із базою даних. Річ у тому, що вони не хочуть, щоб сервер був знятий.

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

Моя думка полягала в тому, щоб зробити знімок VM, а потім робити періодичні скидання бази даних і зберігати їх у S3. Якщо вони втрачають екземпляр EC2 або щось подібне до оновлення роблять його непридатним, вони можуть скористатися знімком, щоб відновити швидке резервне копіювання сервера за допомогою останнього дампа бази даних, а не починати з нуля, щоб повністю створити новий екземпляр. новий AMI.

Я розумію, що для того, щоб зробити знімок екземпляра EC2 (або магазину EBS), вам знадобиться простої, що вони не вагаються. Я також читав, що у вас повинен бути закритий сервер, щоб зберегти послідовність файлової системи під час зйомки. Оскільки у них ще немає кластера поза балансиром, вони обмежують варіанти, що містять знімки.

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

В ідеалі вони мали б фінансування, щоб створити ряд серверів, що стоять за віртуальним балансиром або службою балансування Amazon, а потім знімати сервери один за одним для виконання оновлень або знімків. Зараз я б нервував ідеї робити оновлення, тому що якщо ви робите звалища бази даних, це не допоможе, якщо оновлення системи змінить бібліотеку, на яку покладається їх додаток, і служба знизиться.

Я також припускав, що іншим варіантом є запуск сценарію, який створює EBS-том, монтує його, а на сервері виконайте щось на зразок rsync, щоб захопити більшу частину інформації файлової системи в об'єм EBS, потім стисніть і скопіюйте вміст у S3, відключіть том і знищити його, щоб заощадити витрати на зберігання, потім зробіть дамп бази даних, щоб отримати дані польотів, які не суперечать інакше. Для деяких їх серверів, швидше за все, стане необхідним збереження у тимчасових томах EBS у міру зростання потреби в їх базі даних.

Створюється пісочниця VMWare для відтворення їх мережевих систем у середовищі, де оновлення можна попередньо перевірити, перш ніж застосовувати їх до виробничих систем на Amazon. Я сподіваюся, що це мінімізує ймовірність того, що оновлення системи знищить їх додаток.

Отже ... зважаючи на обмеження роботи одного сервера, із сервером баз даних та серверів додатків у системі, намагаючись максимально наблизитись до простоїв (обмеження використання знімків та проведення резервного копіювання буде максимально «гарячим» ( створений в прямому ефірі, не знімаючи сервер), чи я неправильний шлях для того, щоб запропонувати планувати час для створення знімка екземпляра EC2 у його робочому стані, а звідти робити скидання баз даних для копіювання на S3? Чи є краща стратегія для здійснення при створенні резервної копії сервера, якщо знімки створюватимуть простої?


2
Вони чутливі до простоїв, але працюють лише на одному сервері?
ceejayoz

1
Поки вони не отримають фінансування для запуску кластерів, так. Вони знають і прагнуть запустити кластер за балансиром ... це просто не варіант на столі.
Барт Сільверстрім

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

Іноді доводиться погоджуватися з тим, що ситуація дає тобі ... їх заслуга, вони працюють над створенням належної установки.
Барт Сільверстрім

Відповіді:


18

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

Трохи про EBS

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

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

Цікавим моментом є те, що в обох випадках вище, вам не потрібно чекати, коли знімок закінчиться, щоб повторно приєднати / розморозити та відновити запис на диск - після того, як знімок буде ініційований, ваші дані будуть відповідати цьому моменту часу. Зазвичай для цього потрібно лише кілька секунд, протягом яких ваш запис записується заблокованим. Крім того, оскільки більшість баз даних структурують свої файли на диску розумним чином - є велика ймовірність, що вставки мають мінімальний ефект від існуючих блоків - що мінімізує дані, додані до знімка.

Розглянемо пункт резервного копіювання

Томи EBS вже копіюються в зоні доступності - тому вбудована ступінь надмірності. Якщо ваш примірник припиняється, ви можете просто приєднати том EBS до нового екземпляра і (після того, як ви пройдете відсутність узгодженості) відновіть місце, де ви залишився позаду. Багато в чому це робить об'єм EBS дуже схожим на непослідовний знімок, за умови, що ви можете отримати доступ до нього. Зважаючи на це, більшість користувачів EC2, ймовірно, згадують каскадні збої обсягів EBS з початку 2011 року - томи були недоступними протягом декількох днів, а деякі користувачі також втратили дані.

RAID1

Якщо ви намагаєтеся захистити себе від відмови диска EBS (це все-таки трапляється), ви можете розглянути можливість установки RAID1. Оскільки томи EBS є блоковими пристроями, ви можете легко використовувати mdadm для їх налаштування у потрібній конфігурації. Якщо один з ваших томів EBS не виконує технічних характеристик, досить просто його вручну відмовити (а пізніше замінити на інший об'єм EBS). Звичайно, це має і недоліки - збільшений час для кожного запису, більша сприйнятливість до змінної продуктивності, подвоєння вартості вводу / виводу (монетарілія, не ефективність роботи), відсутність реального захисту від більш поширених збоїв AWS (поширена проблема минулого року була неможливість відокремлення томів EBS, які були в заблокованому стані), і звичайно, непослідовний стан диска при відмові.

S3FS

Варіант для певних додатків (безумовно НЕ для баз даних) полягає в монтажі S3 як локальної файлової системи (наприклад, через s3fs). Це повільно, не вистачає деяких функцій, яких можна було б очікувати від файлової системи, і може не вести себе так, як очікувалося (можлива послідовність). Однак, для такої простої мети, як надання завантажених файлів доступними для різних примірників, це може бути заслугою. Очевидно, що це не для нічого, що вимагає гарної продуктивності читання / запису.

MySQL бін-журнал

Ще одним варіантом, характерним для MySQL, може бути використання бін-журналу. Ви можете налаштувати другий том EBS, який буде зберігати ваш бін-журнал (щоб мінімізувати ефект доданих записів на вашу базу даних), і використовувати його в поєднанні з будь-якими скидами баз даних. Ви можете навіть зробити це за допомогою s3fs, що може насправді мати користь, якщо продуктивність буде терпимою (rsync, мабуть, краще, ніж намагатися використовувати s3fs безпосередньо, і ви обов'язково захочете стиснути все, що можете).

Однак ми знову повертаємось до ідеї мети. Поміркуйте, що буде з наведеними вище пропозиціями:

  • Обсяги EBS недоступні:
    • RAID1 - марний, оскільки ви не можете отримати дані
    • bin-log - марний, якщо ви не експортували його в S3 - ймовірно, затримка, хоча якщо ви це зробили
  • Примірник припиняється несподівано:
    • RAID1 - ваші диски доступні, але не несумісні, ваша база даних може самостійно відновитись від невідповідності
    • bin-log - ваші дані повинні бути доступними, хоча вам може знадобитися переглянути останні кілька подій
  • Хтось запускає DROP DATABASE як корінь:
    • RAID1 - у вас є дві ідеальні копії неіснуючої бази даних
    • bin-log - ви повинні мати можливість відтворювати події лише до початку команди, тому вам повинно бути добре

Тож насправді RAID1 здебільшого марний, і bin-log займає занадто багато часу - вони можуть мати заслуги за певних обставин, але вони далекі від резервного копіювання ідеї.

Знімки

Важливо зауважити, що знімки різняться, і зберігають лише фактичні блоки, які містять дані (та стискаються). На відміну від обсягу EBS, де, якщо ви маєте об'єм 20 ГБ, але використовуєте лише 1 ГБ, ви все одно платите за "передбачене" сховище (20 ГБ). За оснащення вам стягується плата лише за те, що ви використовуєте. Якщо дані не змінюються між знімками, плата (теоретично) не стягується. (Знімки стягуються за PUTS / GETS та використані сховища).

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

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

Проблема з періодичними скиданнями - це спочатку час між скидами (можливо, вирішено за допомогою бін-журналу MySQL), а також труднощі відновлення. Потрібен час, щоб імпортувати великий дамп і відтворити всі події з бін-журналу. Крім того, створення дампа не має наслідків для його продуктивності. Можливо, такі сміттєзвалища, ймовірно, потребують набагато більше місця, ніж знімок. Налаштування обсягу EBS виключно для баз даних та знімків, що було б кращим у більшості аспектів (якщо говорити, зроблений знімок також має певний вплив на продуктивність).

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

(Можна зробити аргумент (і я, мабуть, не рекомендував би це), що ви можете встановити дві копії MySQL на одному сервері (Master-slave), використовуючи два томи EBS, а потім вимкнути свого раба, щоб зробити його короткий знімок. Обсяг EBS - це буде послідовно, без простоїв - але витрати на продуктивність, мабуть, не варті).

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

Ще пара пунктів - ви можете розгорнути стільки екземплярів, скільки вам потрібно, з одного знімка (на відміну від тома EBS, який можна приєднати до одного екземпляра в будь-який момент часу). Також обсяги EBS обмежені для використання в зоні доступності, тоді як знімки можна використовувати в межах регіону.

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

В якості додаткового зауваження Amazon заявляє, що рівень відмов обсягів EBS збільшується зі зміною кількості даних, що були змінені на них з моменту останнього знімка.

Заключні рекомендації

  • Використовуйте знімки - вони чудові - вони скорочують час простою набагато більше, ніж вони викликають
  • Окремі дані та кореневий об'єм, можливо, навіть розміщення баз даних на власному томі та знімок перед необхідними оновленнями, якщо це необхідно
  • Використовуйте bin-log, щоб залишатися максимально "гарячим" - завантажте це (стиснуте) на S3
  • Переконайтеся, що ви фактично отримуєте дані з екземпляра (навіть якщо дані недоторкані на томі EBS, сам том може бути тимчасово недоступним).

Рекомендоване читання:

(Я вірю, що я написав занадто багато, але недостатньо сказав - але, сподіваюся, ви знайдете щось, що варто прочитати).


Чудова інформація та пояснення того, як працюють знімки EBS.
bwight

Так, там була чудова інформація. Обидві відповіді (особливо в поєднанні з коментарями) були корисними, я б хотів прийняти обидва!
Барт Сільверстрім

4

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

Знімки EBS також досить дешеві, оскільки вони стягують плату лише за змінені дані, а плата за дані є дуже розумною і вимикається сама по собі. Майте на увазі, що це базується на зміні рівня блоку, і це може змінитися досить швидко. Це також стосується знімків, стягуються лише дані, змінені між знімками. Щоб дати вам уявлення про витрати, ми платимо <10 доларів на місяць за зберігання знімків, і ми робимо щоденні знімки, зберігаючи останні 7 щоденних і останніх місяців щотижневих знімків, і у нас є два сервери за цією схемою (~ 20 знімків, 20 ГБ жорстких дисків).


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

@Bart: Якщо ви готові витримати годину або дві простою, можливо, перенести існуючий знімок на XFS. Я також вважаю, що ext4 тепер підтримує необхідні матеріали для роботи з послідовним знімком, якщо ви замість цього перебуваєте у цій файловій системі.
Меттью Шарлі

Як свідчить відповідь, ви все одно можете зробити знімок, не зупиняючи базу даних, не зупиняючи послуги. Існує можливість робити знімок, що він може бути невідповідним , але в цій ситуації у вас все-таки буде скидання бази даних.
Хав'єр Констанцо

@javierConstanzo - Ви пропонуєте зробити знімок в реальному часі і ризикувати непослідовними станами, а також використовуючи дамп у базі даних, щоб виправити ймовірні перегини в консистенції файлової системи?
Барт Сільверстрім

@Bart: Я також припускаю, що знімки є настільки ж "гарячими" резервними копіями, як ви збираєтеся отримати, а також набагато більш внутрішньо послідовними, ніж rsync чи подібні. Файли можуть змінюватися під час передачі інших, тобто у деяких випадках у вас може виникнути непотрібна резервна копія. Я особисто рекомендую вам їсти кілька годин простою, щоб змінити файлові системи (якщо потрібно), щоб зйомки працювали. Дивно, наскільки гнучким рішенням для резервного копіювання є знімки EBS, ви можете встановити їх на запущеному екземплярі для відновлення.
Меттью Шарлі

1

Як щодо дешевого недорогого рішення для резервного копіювання, такого як Zmanda Cloud Backup? Ми використовуємо його для резервного копіювання близько 6 серверів і 1 SQL Server, і це лише близько 10 доларів на місяць. Ви можете зашифрувати свої дані за допомогою самопідписаного сертифікату, і вони використовують s3 для зберігання даних (тому плата за передачу даних не передбачає, якщо ви створюєте резервну копію з EC2).


Ви пов'язані? Якщо вони не збираються навесні протягом ~ 1 $ на місяць для знімка EBS ...
ceejayoz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.