【发布时间】:2020-05-27 18:44:27
【问题描述】:
我们正在尝试为 SQS 队列开发 Live - DR 模型。
我们在 AWS 中有两个不同的账户:
- eu-west(帐号 1234)
- us-east(帐号 4567)
我们的应用程序驻留在两个帐户中(主动 - 被动)。
- 在正常情况下,EU-WEST 处于活动状态,US-EAST 处于非活动状态。
- 当我们对 DR 进行故障转移时,US-EAST 将处于活动状态,而 EU-WEST 将处于非活动状态。
- 我们希望在每个账户(eu-west、us-east)中有两个 SQS 队列。
- 当 EU-WEST 处于活动状态时,我们只希望 EU-WEST 工作和处理事件中的 SQS 队列。
- 当我们切换到 DR 时,我们希望使 EU-WEST SQS 处于非活动状态,并使 US-EAST 中的 SQS 处于活动状态。
每个 SQS 上都有一个 Lambda 触发器。
我们在这里可能面临的问题是:两个 SQS 队列都将处理事件,因为它订阅了同一个 SNS 主题。而且由于它连接到一个 Lambda 函数,因此两者都会处理事件。
我不希望这种情况发生。我希望一次只使用一对 SQS 和 Lambda 函数 - EU-WEST 或 US-EAST。我知道这可以通过移除非活动区域上的 Lambda 触发器来实现。
只是在寻找更好的方法。
【问题讨论】:
-
旁注:Amazon SQS 和 AWS Lambda 是跨多个可用区运行的区域服务。对于高可用性,通常建议跨多个 AZ 运行或使用区域服务。因此,您的解决方案已经高度可用,但当然也欢迎您采用多区域方法。
-
“两个 SQS 队列都将处理事件,因为它连接到同一个源。” SQS 队列不连接到“源”,生产者连接到队列...所以这是什么意思?
-
很抱歉造成混淆。两个 SQS 订阅同一个 SNS。
标签: amazon-web-services aws-lambda amazon-sqs