Setting up EBS/EFS disk storage for disaster recovery
I am thinking about how to best setup a couple of environments on AWS. I would like to setup two servers:
- Application server (running web application and REST services)
- Tools server (running several ETL jobs)
The end result should be two application servers and two tools servers (ie one appserver/toolserver on each availability zone)
- All environments will be talking to the same database
- Each environment will have its own EBS storage
- A single external shared storage (EFS) which will be accessible from any of the 4 environments.
Я немного запутался с точки зрения того, как настроить хранилище. Цель состоит в том, чтобы в случае потери экземпляра EC2 я не потерял никаких данных. Чтобы добиться этого, я бы хотел настроить его так, чтобы код развертывался в локальном хранилище (EBS), а динамический контент сохранялся во внешнем общем хранилище (EFS).
Все приложения будут находиться в папке со следующей структурой
├─ application
├─ bin
├─ lib
├─ config
├─ logs
├─ data
├─ processed
├─ failed
В случае смерти экземпляра EC2 я хотел бы сохранить конфигурацию, журналы и папку с данными. Другие папки (bin и lib) будут содержать только двоичный код, который можно восстановить из GIT. Чтобы достичь этого, я думаю о следующем хранилище
EBS на appserver 1 и appserver 2
├─ applications
├─ finance
├─ appname1
├─ bin
├─ lib
├─ config --> /storage/finance/config
├─ logs --> /storage/finance/logs
├─ data --> /storage/finance/date
Последние три будут символическими ссылками на папки на внешнем хранилище.
EFS (общее хранилище)
├─ storage
├─ finance
├─ appname1
├─ config
├─ logs
├─ data
Вышеупомянутая структура может быть кошмаром обслуживания, но я не могу думать о других альтернативах. При вышеуказанном подходе код развертывается на каждом сервере приложений, но данные распределяются между двумя серверами приложений. Если один сервер приложений в одной AV-зоне умрет, другой все равно будет работать.
Другие варианты, которые я рассмотрел, включают в себя хранение всего в хранилище EBS и использование резервных копий / образов. Это не будет работать, потому что файлы конфигурации являются динамическими, и изображение может не всегда содержать самые последние данные.
Читая о хранилище EFS, похоже, что запись в него может быть медленной, что меня немного беспокоит. Вопросы:
- Есть ли альтернативы вышесказанному?
- Есть ли другие недостатки в вышеупомянутом подходе?
- Есть ли способ, которым я могу иметь все (код + данные) в локальном хранилище EBS и все еще иметь возможность восстановить (до второго) в случае аварии.
заранее спасибо
1 ответ
При просмотре страниц AWS для EFS упоминается, что "каждый объект файловой системы Amazon EFS (т. Е. Каталог, файл и ссылка) избыточно хранится в нескольких зонах доступности". Аналогичная формулировка на странице EBS. Так что там есть некоторая избыточность. Вот Amazon PDF о высокой доступности.
Для EC2 использование нескольких зон доступности снизит вашу подверженность риску. Я бы поместил каждый экземпляр в отдельную зону доступности. А в PDF рекомендуется использовать моментальные снимки EBS с резервным экземпляром EC2 для HA. Моментальные снимки доступны в регионах, поэтому к ним легко получить доступ для аварийного восстановления. Поступив таким образом, вы ответите на свой вопрос о том, как поместить все в AWS EBS. И довольно просто скопировать тома EBS между регионами, чтобы добавить избыточность и синхронизировать все. Таким образом, вы можете иметь производственную среду, резервную среду и среду замены, которая может быстро развернуться в случае сбоя, в результате чего вам будут доступны практически две среды.
Посмотрите этот PDF и ссылку, а также документы Amazon по высокой доступности и посмотрите, что лучше всего подходит для потребностей вашего бизнеса и уровня персонала.