Назад | Перейти на главную страницу

Путаница в автоматическом масштабировании инстансов AWS EC2

Итак, во-первых, я новичок в AWS, так что терпите меня.

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

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

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

Другие важные вопросы.

Когда я вношу изменения в код и данные в свой исходный экземпляр, нужно ли мне переделывать образ, который использует моя конфигурация запуска?

Что нужно с DNS-именами и IP-адресами? В настоящее время я использую Route 53, могу ли я указать это на моем балансировщике нагрузки и все?

Спасибо, парни!

Давайте рассмотрим ваши вопросы.

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

я бы сказал да, но у меня есть пара оговорок. Если я правильно понимаю, вы разместили свой «основной» экземпляр вне группы автоматического масштабирования. Теоретически это гарантирует, что автоматическое масштабирование не убьет ваш исходный экземпляр. Я хотел бы упомянуть несколько вещей:

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

Когда я вношу изменения в код и данные в свой исходный экземпляр, нужно ли мне переделывать образ, который использует моя конфигурация запуска?

я бы сказал нет, но это скорее проблема дизайна. Ваше изображение должно описывать штат вашего сервера, но он не должен отвечать за распространение кода. Рассмотрим ситуацию, когда вам нужно обновить приложение из-за срочной ошибки, но ваши серверы сильно загружены. Звучит ли обновление основного сервера, создание AMI, обновление конфигурации запуска и отключение автоматически масштабируемых серверов, чтобы их можно было возродить с помощью последней версии AMI, привлекательным решением? Мой ответ на это был бы нет (очередной раз). Изучите стратегии управления версиями исходного кода и развертывания (я разработчик Rails 60% времени и использую git и capistrano, например).

Бывают ситуации, когда ваш подход тоже сработает, и здесь есть много компромиссов (я бы также рекомендовал изучить Chef и userdata скрипты). Я сам редко использую кастомные AMI, благодаря Chef.

Что нужно с DNS-именами и IP-адресами? В настоящее время я использую Route 53, могу ли я указать это на моем балансировщике нагрузки и все?

В принципе, да. Вы можете выбрать балансировщики нагрузки, которые должны быть присоединены к новым экземплярам при создании вашей группы автоматического масштабирования. Я еще не использовал графический интерфейс для автоматического масштабирования, но уверен, что он где-то там есть. В противном случае CLI по-прежнему поддерживает его. Направьте свою запись Route53 на свой ELB alias и это в основном все.

Ответ на дополнительные вопросы (23.02.2014):

Если вы разрабатываете с использованием Rails, я очень рекомендую Capistrano для развертываний, которые могут принимать определенную версию вашего приложения в предпочитаемой вами системе управления версиями (например, git) и развертывать ее на нескольких серверах в определенной среде. Существует множество руководств, но исправленные (и профессиональные) Railscast Райана Бейтса по этому вопросу очень краткие, хотя вам нужна подписка на его веб-сайт, чтобы смотреть оба из них. Однако большинство других руководств также помогут вам. Запустите новый сервер с вашим AMI и сценарием запуска, который извлекает временный клон вашего репозитория git и запускает локальную команду Capistrano для запуска вашего приложения. Это гарантирует, что в дальнейшем вы также сможете развертывать новые версии вашего приложения с помощью Capistrano с помощью всего одной команды на всех работающих серверах.

Capistrano также предоставляет несколько других преимуществ, в том числе возможность выполнять определенные задачи на всех или только на одном из серверов и откатывать развертывание, что очень сложно выполнить, используя только git.