Я думаю о том, как лучше всего настроить пару сред на AWS. Я хотел бы настроить два сервера:
- Сервер приложений (работает веб-приложение и службы REST)
- Сервер инструментов (работает несколько заданий ETL)
Конечным результатом должно быть два сервера приложений и два сервера инструментов (т.е. один сервер приложений / сервер инструментов в каждой зоне доступности)
- Все среды будут общаться с одной и той же базой данных
- Каждая среда будет иметь свое собственное хранилище EBS
- Единое внешнее общее хранилище (EFS), которое будет доступно из любой из 4 сред.
Я немного запутался с точки зрения того, как настроить хранилище. Цель состоит в том, чтобы в случае потери экземпляра 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 и все еще иметь возможность восстановить (до второго) в случае аварии.
заранее спасибо