Я думаю о том, как лучше всего настроить пару сред на 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 и все еще иметь возможность восстановить (до второго) в случае аварии.

заранее спасибо

1 ответ1

0

При просмотре страниц AWS для EFS упоминается, что «каждый объект файловой системы Amazon EFS (т. Е. Каталог, файл и ссылка) избыточно хранится в нескольких зонах доступности». Аналогичная формулировка на странице EBS. Так что там есть некоторая избыточность. Вот Amazon PDF о высокой доступности.

Для EC2 использование нескольких зон доступности снизит вашу подверженность риску. Я бы поместил каждый экземпляр в отдельную зону доступности. А в PDF рекомендуется использовать моментальные снимки EBS с резервным экземпляром EC2 для HA. Моментальные снимки доступны в регионах, поэтому к ним легко получить доступ для аварийного восстановления. Поступив таким образом, вы ответите на свой вопрос о том, как поместить все в AWS EBS. И довольно просто скопировать тома EBS между регионами, чтобы добавить избыточность и синхронизировать все. Таким образом, вы можете иметь производственную среду, резервную среду и среду замены, которая может быстро развернуться в случае сбоя, в результате чего вам будут доступны практически две среды.

Посмотрите этот PDF и ссылку, а также документы Amazon по высокой доступности и посмотрите, что лучше всего подходит для потребностей вашего бизнеса и уровня персонала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .