Постоянная EBS на инстансах AWS EC2

У меня есть экземпляр t2.micro EC2, работающий на AWS. Чтобы справиться с пиками трафика, я создал группу автоматического масштабирования, которая динамически увеличивает и уменьшает экземпляры EC2 из AMI. До сих пор все в порядке. Проблема в том, что моя база данных для входа в систему находится в том же экземпляре EC2. Когда создается новый экземпляр EC2, он не содержит нового добавленного пользователя в основном экземпляре EC2. И если новый пользователь создает учетную запись в новом экземпляре, он теряется при завершении экземпляра. Есть ли способ создать единый том EBS для всех экземпляров?

Пожалуйста, укажите мне на некоторые полезные ресурсы по созданию масштабируемых веб-приложений на AWS.

Я предполагаю, что ваши пользователи хранятся в базе данных, но поскольку вы говорите, что они связаны с ОС, я хотел подтвердить, что все данные вашего приложения и пользователи приложений хранятся в реальной базе данных, а не с использованием пользователей ОС. Это правильно?

Caesar Kabalan 07.04.2018 22:52

Да, пользователи хранятся в реальной базе данных.

charles bell 07.04.2018 23:50

Ваша база данных также хранится в том же экземпляре EC2? Почему вы назначаете пользователям логин ОС? Что пользователи делают в вашей системе? Не стесняйтесь редактировать свой вопрос, чтобы предоставить более подробную информацию.

John Rotenstein 07.04.2018 23:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблемы, с которыми вы сталкиваетесь, - это основная причина, по которой этот шаблон (все в одном и том же случае) не рекомендуется. Это работает, пока ваше приложение невелико и не получает большого трафика.

Вместо этого вам следует извлечь свою базу данных из экземпляров приложения и переместить ее в RDS (полууправление не позволит вам выполнять множество задач, таких как установка исправлений сервера, регулярное резервное копирование, настройка набора реплик и т. д.). Кроме того, RDS предоставит вам простое развертывание в нескольких зонах доступности, что поможет вам добиться реальной отказоустойчивости. Однако этот шаг не является обязательным - вы можете просто запустить новый экземпляр EC2 и вручную установить туда свою БД (но оставьте его предназначенным для целей БД).

Ваша архитектура должна выглядеть примерно так, как показано на следующей диаграмме;

ELB ---> INSTANCE 1 --> RDS DB INSTANCE
     |                       ^
     |-> INSTANCE 2 ---------|
     |                       |
     |-> INSTANCE n ---------|

Если вы хотите масштабировать, вы должны сохранять ваши экземпляры как можно более безгражданскими. Тот же подход применяется к файлам, которые вы храните в собственном экземпляре; вам следует переместить их в S3 (или, если это доступно в вашем регионе, вы также можете использовать эластичную файловую систему)

Это по существу и самый полезный ответ, который я видел. Спасибо! Могу я задать еще один вопрос. Мои экземпляры автомасштабирования создаются с использованием AMI. Если я обновлю код на своем реальном сервере, мой AMI не будет обновлен. Есть ли решение для этого? Потому что мне, возможно, придется часто исправлять ошибки, и изменение конфигурации автомасштабирования, на самом деле, не вариант.

charles bell 07.04.2018 23:56

К сожалению, у вас есть только несколько вариантов: 1 / разработать некоторый код для автоматизации создания новых AMI на основе свежего кода и обновить группы автомасштабирования для использования новых AMI; 2. разработать приложение, которое может развернуть новую версию для тех, кто масштабируется автоматически. экземпляр при загрузке, или 3. убедитесь, что у вновь созданных экземпляров есть сценарий запуска (данные пользователя AWS), который автоматически обновит локальную версию приложения.

Cyril Duchon-Doris 07.04.2018 23:57

В моей компании мы настроили хуки жизненного цикла автомасштабирования, так что каждый экземпляр, порожденный автоматическим масштабированием, переходит во временное состояние «ожидание - ожидание», во время которого уведомление отправляется на «развертывающий» компьютер, который отвечает за развертывание новой версии приложения на этот экземпляр

Cyril Duchon-Doris 07.04.2018 23:59

Другие вопросы по теме