我有一个 Opsworks 堆栈,其中有 2 个不同的节点应用程序在同一层运行。其中一个应用程序需要进行负载平衡,因为它将被公众访问,但另一个应用程序仅偶尔被第一个应用程序访问,因此不需要负载平衡。
据我所知,Opsworks 中似乎对层进行负载平衡,而不是对一组定义的实例进行负载平衡。不过,Opsworks 不允许我在同一个堆栈中创建第二个 node.js 层,因此我无法拆分应用程序并对其中一个进行负载平衡。
我的猜测是,我不应该将这两个应用程序放在同一个堆栈中,或者我应该仅通过 ec2 进行负载平衡,我相信我可以设置一个 ELB 来在层中的实例子集上运行。这些是正确的吗,还是还有其他答案?
答案1
如果您想充分利用 OpsWorks 功能,那么是的,正如您所说的将应用程序分成两个堆栈。
Alt 选项 1:如果您确实想保留在同一个堆栈中,您可以创建一个自定义堆栈,但随后您必须自己处理 node.js 层为您完成的工作(这可以完成并成功但您可能需要投资定制的厨师食谱/食谱)。
备选方案 2:您关于通过 EC2 手动管理它们的陈述是正确的,但我想补充一点,您尝试利用多个子网/可用区来让自己更轻松。所以:
LBR 1 (应用程序 1) AZ1 (us-east-1a) AZ2 (us-east-1c)
LBR 2 (应用程序 2) AZ3 (美国东部-1d) AZ4 (美国东部-1e)
将为您提供 HA/容错框架,让您保持平衡,使您能够根据 LBR 配置子网,但仍然可以获得 OpsWorks 的好处。