Устойчивость с очередью SQS - PullRequest
1 голос
/ 27 мая 2020

Мы пытаемся работать над моделью Live - DR для очереди SQS.

У нас есть две разные учетные записи в AWS:

  1. eu-west (Account no 1234 )
  2. us-east (Номер учетной записи 4567)

Наше приложение находится в обеих учетных записях (АКТИВНЫЙ - ПАССИВНЫЙ).

  • В обычном сценарии EU-WEST активен, а US-EAST неактивен.
  • При аварийном переключении для DR, US-EAST будет активен, а EU-WEST неактивен.
  • Мы хотим иметь две очереди SQS в каждой account (eu-west, us-east).
  • Когда EU-WEST активен, нам нужна только очередь SQS в рабочих и обрабатывающих событиях EU-WEST.
  • Когда мы переключаемся на DR, мы хотите сделать SQS EU-WEST неактивным, а SQS в US-EAST активным. Очереди SQS будут обрабатывать события, поскольку он подписан на тот же SNS topi c. И поскольку он подключен к функции Lambda, оба будут обрабатывать события.

    Я не хочу, чтобы это происходило. Я хочу, чтобы одновременно работала только одна пара функций SQS и Lambda - EU-WEST или US-EAST. Я знаю, что этого можно добиться, удалив лямбда-триггер в неактивной области.

    Просто ищу лучший подход.

1 Ответ

0 голосов
/ 05 июня 2020

У меня есть решение.

Нам нужно проверить Route53, чтобы найти текущую активную область для приложения. В области DR, когда мы получаем сообщение на SQS, оно запускает лямбду. Лямбда проверяет наличие активной области на основе route53 или ALB dns. Если он обнаружит, что регион не активен / не активен, он пропустит обработку сообщения и, следовательно, очередь SQS будет очищена на DR.

Таким образом, Lambda живого региона будет активно обрабатывать сообщения SQS, тогда как DR - пропустить всю обработку.

Эта идея должна работать для сценария, о котором я упоминал выше.

...