2016-12-14 4 views
1

В настоящее время у меня есть небольшой веб-сайт, размещенный на AWS.Scaling node на AWS

Сервер представляет собой микро-экземпляр. На этой микро-например:

  • Я бег Nginx для обслуживания статических файлов и страниц ошибок
  • Я бег моего сервера узла
  • Я храню мой MongoDB

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

Я хотел бы какие-либо направления к материалам для чтения

Я имел в виду иметь:

  • 2 выделенных микро-экземпляров для запуска веб-сайте
  • 1 микро-экземпляр работает Nginx
  • 1 микро-экземпляр, хранящий db

вопросы:

  1. Would, имеющий дб, хранящуюся на отдельной машине делают запросы значительно медленнее?

  2. Должен ли я хранить db на S3 вместо этого?

  3. Возможно ли иметь полный экземпляр только для nginx?

Как вы собираетесь масштабировать от 1 до нескольких? Я предполагаю, что переход от одного к другому сложнее, чем переход от двух до 50.

Любые советы будут очень благодарны!

+1

Ваша рабочая нагрузка кажется минимальной. Почему бы вам просто не масштабировать вертикально и не обновлять свой экземпляр с * .micro до * .small или * .medium? Балансировка нагрузки между узлами - это традиционный подход в облаке, но для меня не имеет смысла просто создавать несколько экземпляров * .micro. –

+0

Ну ... я имею в виду ... это, безусловно, самый простой способ пойти ... но это долгосрочное решение? –

+0

Нет, это не долгосрочное решение, и требуется время простоя в любое время, когда вам нужно масштабироваться вверх или вниз. –

ответ

1
  1. Would, имеющий дб, хранящуюся на отдельной машине делают запросы значительно медленнее?

Нет, влияние скорости будет минимален, и это было бы необходимо для обеспечения масштабируемости в любом случае. Просто убедитесь, что вы используете частные IP-адреса своих экземпляров для обмена данными между экземплярами, чтобы трафик оставался внутри вашего VPC (как по соображениям безопасности, так и по производительности).

  1. Должен ли я хранить db на S3 вместо этого?

Нет, это не сработало бы вообще. Вы не можете хранить БД на S3, только резервные копии БД.

  1. Можно ли использовать весь экземпляр только для nginx?

Если вы получаете достаточное количество трафика, то да абсолютно.

Как бы вы шли по масштабированию от 1 до нескольких?

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

Если ваша база данных является узким местом, вам также может понадобиться настроить кластер MongoDB и сбалансировать нагрузку по кластеру. Вы также можете перенести свою БД на что-то вроде mlab, что значительно облегчит управление этим.

+0

Thanks Mark, The Elastic Beanstalk выглядит многообещающим. Я помню, как однажды заглянул в нее, и почему-то дал эту идею. Не знаю, почему. Я обязательно дам ему еще один взгляд сегодня вечером! Я был бы признателен за любые обращения к статьям, обсуждающим эту миграцию, если вы знаете о них. Как вы понимаете, я не могу рисковать долгое время для сервера. –

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