2012-03-06 3 views
5

Я новичок в EC2. Я много читал об этом, смотрел много видео и учебник и в значительной степени знал, как все работает. У меня все еще мало вопросов, на которые я не могу найти прямых ответов.Как правильно настроить балансировку нагрузки EC2, чтобы обеспечить синхронизацию файлов в реальном времени?

Если у меня есть 3 экземпляра (linux) с балансировкой нагрузки, все обслуживают один и тот же сайт, а сайт - это динамический php/mysql, управляемый, когда пользователи отправляют файлы в темы форума каждую секунду, как файлы и файлы синхронизируются со всеми 3 экземплярами в настоящее время.

  1. Нужно ли иметь базу данных на RDS, где каждый экземпляр просто указывает на нее.
  2. Как насчет файлов пользователя. Если пользователь загрузил файл на сайт, этот файл должен быть немедленно доступен сразу во всех экземплярах, как это возможно. Я не думаю, что 3 экземпляра на 3 экземпляра очень практичны.
  3. Если я модифицирую сайт, скажем, изменив что-то в файле CSS, как мне синхронизировать изменения ко всем экземплярам.
  4. Как EBS или S3 играют роль во всем этом.

ответ

7

Нужно ли иметь базу данных на RDS, где каждый экземпляр просто указывает на нее.

Это один из вариантов, или вы можете загрузить еще один экземпляр, чтобы сидеть за серверами приложений, помещать на него MySQL и подключать их к этому экземпляру. Одно замечание: убедитесь, что вы подключаетесь по внутренней сети с помощью частного ip и убедитесь, что вся ваша безопасность плотная.

Как насчет файлов пользователя. Если пользователь загрузил файл на сайт, этот файл должен быть немедленно доступен во всех экземплярах , как это возможно. Я не думаю, что 3 экземпляра на 3 экземплярах очень практичны.

Нет, что не практично. Вы можете загрузить его на этот бэкэнд-экземпляр db, к которому все они имеют доступ, но действительно вы должны загрузить его на S3 в ведро, которое все ваши экземпляры могут использовать с s3tools или что-то еще.

Если я изменю сайт, скажем, изменив что-то в файле CSS, как мне синхронизировать изменения ко всем экземплярам.

Git. (или svn) Но вы можете использовать cloudfront для своих файлов JS и CSS ... Неплохая идея. И используйте ведро S3 в качестве источника ...

Как EBS или S3 играют важную роль во всем этом.

Ваша база данных всегда должна быть на томах ebs, чтобы вы ее не потеряли. S3 можно использовать для совместного использования и хранения файлов по всему миру.

+0

вот несколько ссылок, чтобы помочь: http://stackoverflow.com/a/8919031/667608 http://stackoverflow.com/a/9133243/667608 – chantheman

+0

Спасибо за резюме. 1. Что вы имеете в виду, когда говорите, убедитесь, что вся безопасность плотная. Можете ли вы подробнее остановиться на этом. Существуют ли какие-либо преимущества для mysql для экземпляра вместо RDS. 2. Все пользовательские файлы хранятся в directoy, называемом userfiles. Если я использую S3, к какому месту назначения должны обращаться файлы. Нужно ли монтировать S3 в качестве диска. Как это делается. – Hussein

+0

Нет, RDS имеет преимущества перед одним экземпляром. Это позволяет вам масштабировать вашу БД через экземпляры. Но поскольку это общедоступно, вам нужно убедиться, что его безопасность плотная. Аналогично, вы можете использовать S3 так же, как указано в ответе. Все, что требуется, - [небольшое исследование] (https://forums.aws.amazon.com/thread.jspa?threadID=39361) с вашей стороны ... –

0

В большинстве случаев у вас может быть один экземпляр RDS, к которому подключаются все 3 экземпляра ec2. Если у вас очень реляционное требование для приложения базы данных, вы можете посмотреть репликацию базы данных.

0

Использование S3 - это один из способов синхронизации файлов. Вы должны написать коды, которые каждая загрузка фотографий (например) попадет в ваш ведро S3.Но, конечно, ваш экземпляр 3 должен иметь доступ к нему.

Другим решением является наличие общей файловой системы, в которой вы совместно используете каталог для трех экземпляров. Возможным решением является NFS или GlusterFS.

Для RDS, я думаю, это не проблема, вы можете использовать одну БД для трех экземпляров. Сообщите мне, если это поможет.

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

  • Нет связанных вопросов^_^