Те, що ви просите, це, в основному, висока доступність. Для того, щоб зробити систему високодоступною, вам потрібно три речі:
- Усуньте окремі точки відмови
- Механізм переходу з кінцевої точки на іншу
- Спосіб виявлення збоїв
Усуньте окремі точки відмови
У випадку з S3 точка №1 розглядається, як вказував Євгеній, через міжрегіональну реплікацію S3 .
Тиражування, однак, не є миттєвим, і ви хочете перевірити, чи хочете ви дізнатися про реплікацію програми чи ні. У разі відключення можливо, що те, що було записано у ваш вихідний відро, ще не зробило його (не було тиражовано) до місця призначення. Ви повинні подумати, як додаток поводиться з таким сценарієм. Це дійсно залежить від типу даних, що робиться з ними та (потенційно) від кінцевих користувачів або очікувань керівництва.
Механізм переходу з кінцевої точки на іншу
Для S3 це означає, що в разі відмови ви хочете, щоб програма перестала читати і писати з / у відро A і використовувати замість цього відро B.
Як цього досягти, наскільки я знаю, зараз залежить від вас. Деякі інші сервіси AWS пропонують цілком прозорі збої, але я не знаю такого для S3.
Існують різні способи досягнення цього. Одним із прикладів є використання проксі-сервера, який спрямовуватиме трафік до відповідного пакета. Під час відключення ви б оновлювали / змінювали проксі-сервер, щоб перенаправляти трафік до відра, на який відключення не впливає. Іншим прикладом може бути зробити конфігурацію програми динамічною та зберегти її у сховищі ключових значень. Якщо програма читає KV-магазин для оновлених властивостей досить часто, ви можете переключитися з місця, з якого ви читаєте, і на яке (наприклад, Spring Cloud має підтримку слухача "EnvironmentChange").
Спосіб виявлення збоїв
Що ж, це легко, я думаю. Просто налаштуйте цикл запису + читання та оповіщення, як тільки щось не підходить :)
Заключні записки
- Якщо ваша заявка пише у відро, вам доведеться подумати про те, що буде в разі відмови. Чи всі записи потрапили до відрізка призначення (і ви можете сказати)? Чи можете ви дозволити запис у відро призначення, що робить його новим "первинним"? Ретельне планування дозволить уникнути розбитого мозку або втрачених сценаріїв оновлення.
- Залежно від вашої угоди про рівень обслуговування, можливо, ви хочете, щоб точки №2 та №3 були автоматизованими або автоматичними. Для цього потрібні додаткові планування, інструментарій та тестування, але добре складені сценарії завжди реагуватимуть швидше та передбачуванішими способами, ніж людські можливості (невдачі також мають прикрий звик траплятися посеред ночі, коли втручання людини є чимось небезпечним.
- Варто зазначити, що навіть міжрегіональна реплікація не повністю усуває окремі точки відмови. Звичайно, якщо регіон зменшиться, ви перекриєтесь. Але що робити, якщо в США відбудеться відключення AWS? У минулому році Azure зазнала часткового, але глобального відключення, а також у 2014 році.