2016-02-04 1 views
1

Используйте случай:Динамические авто масштабирование AWS на основе сообщений в SQS

Каждый день утром SQS будет заполняться (только один раз, и количество сообщений, может значительно варьироваться), я хочу, чтобы породить новые экземпляры, как в количество сообщений в очереди.

например: для 200000 сообщений 4 экземпляра, 400000 8 экземпляров.

Есть ли способ, которым мы можем достичь этого?

ответ

2
  1. Вы можете настроить в cronом на сервере или время запускаемого Lambda для запроса SQS, чтобы узнать количество видимых сообщений в очереди. Если вы используете AWS CLI, вы должны запустить aws sqs get-queue-attributes и прочитать поле ответа ApproximateNumberOfMessages, чтобы получить количество элементов в очереди. Затем вы использовали бы это число, чтобы вычислить количество экземпляров и либо позвонить aws ec2 run-instances --count 4, либо остальным параметрам. Как только все будет сделано, вы прекратите экземпляры.

  2. Другой способ сделать это - использовать автомасштабирование и аварийные сигналы. Вы можете настроить политику ScaleOut, которая добавляет 1 сервер к вашей группе AutoScaling и запускает эту политику с помощью предупреждения CloudWatch на SQS ApproximateNumberOfMessages> = некоторый порог. Этот вариант не дождался бы, когда утром обработает очереди, вы бы все время работали. Вы также можете иметь политику ScaleIn для уменьшения требуемой емкости (# серверов) в вашей группе AutoScaling, когда ApproximateNumberOfMessages < = некоторый порог.

+0

Thanks Max, попробуем вернуться к вам. Во втором подходе масштабирование в будет только пинать в 1 раз? Как это порождает столько случаев, сколько требуется для количества сообщений? – najeeb

+0

В вашей политике масштабирования установите охлаждение, например. 10 минут. Пока срабатывает тревога (> = x сообщений), он будет пытаться вызвать политику масштабирования, но охлаждение будет гарантировать, что он будет работать только на большинстве серверов каждые 10 минут. Если в течение этих 10 минут очередь будет опустошена, ваш сигнал перейдет в состояние «ОК» и перестанет вызывать политику масштабирования – Max

+0

Хорошо, спасибо, пойдет с 1-м подходом, так как мы получили больше контроля над системой. – najeeb

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

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