2014-12-07 5 views
0

Мы находимся на ранних стадиях с запуском наших сервисов на AWS. У нас есть сервер, размещенный в AWS, в VPC, имеющий частные и общедоступные подсети и имеющий несколько экземпляров в частных и открытых подсетях, использующих ELB и автоматическую настройку (с использованием AMI) для внешних веб-серверов. Все окружение (VPC, группы безопасности, экземпляры EC2, экземпляры БД, ведра S3, облачный) настраиваются вручную с использованием консоли AWS. Серверы хостов и серверы приложений размещаются на серверах.cloudformation лучшие практики в AWS

В соответствии с лучшими практиками AWS мы хотим создать всю инфраструктуру с использованием cloudformation и установить среду тестирования/stage/prod.

-Возможно иметь все вышеперечисленные компоненты (VPC, группы безопасности, экземпляры EC2, экземпляры БД, ведра S3, облачный и т. Д.), Используя один стек/шаблон облака? Или мы должны создать два стека: 1) с сетчатыми компонентами и 2) с компонентами, связанными с EC2?

-Когда у нас есть prod envoronemtn, работающий с облачной стабильностью, и в случае, если мы хотим обновить новые AMI на prod в будущем, как мы можем обновить текущие экземпляры EC2 с использованием cloudformation без перерывов?

-Какие лучшие практики/несколько способов развертывания кода для нескольких заметок EC2 при выполнении новой версии? На данный момент мы не используем интеграцию Contineus.

ответ

1

Это очень хорошая идея, чтобы разделить ваши настройки на несколько стеков. Одна очевидная причина заключается в том, что стеки имеют определенные ограничения, которые вы можете достичь в конечном итоге. Более практическая причина заключается в том, что вам не нужно обновлять, скажем, ваш VPC каждый раз, когда вы просто хотите развернуть новую версию. Архитектура сети обычно изменяется реже. Еще одна причина избежать использования одного огромного шаблона или внесения изменений в «важный» шаблон без необходимости - это то, что вы всегда рискуете запутать вещи. Если в вашем шаблоне есть ошибка, и вы случайно удалили важный ресурс (например, закомментировали), вам будет очень жаль. Поэтому отделить стеки от явной осторожности, вероятно, хорошая идея.

Если вы хотите обновить приложение, вы можете просто обновить шаблон новыми AMI, и CFN узнает, что нужно воссоздать или обновить. Вы можете прочитать о скользящих обновлениях here. Тем не менее, я бы рекомендовал рассмотреть возможность использования чего-то более простого для развертывания вашего реального кода, например Ansible или Chef.

Я также рекомендую вам изучить Docker для упаковки и развертывания узлов вашего приложения. Очень удобно.

Смежные вопросы