如何使用 cloudformation 模板为不同的 elasticbeanstalk 应用环境使用相同的应用负载均衡器?

Posted

技术标签:

【中文标题】如何使用 cloudformation 模板为不同的 elasticbeanstalk 应用环境使用相同的应用负载均衡器?【英文标题】:How to use same application loadbalancer for different elasticbeanstack application environment using cloudformation template? 【发布时间】:2019-05-08 03:34:01 【问题描述】:

我正在运行具有不同服务的应用程序。我已经使用弹性 beantalk 将其部署为微服务模式。每个微服务都托管在一个单独的弹性 beanstalk 环境中,但在同一个应用程序中。

我已经使用云形成模板自动化了部署过程。我通过模板为每个应用环境创建了一个资源。它被创建。 Beanstalk 环境使用默认目标组和每个环境单独的应用程序负载均衡器,如果我向我的应用程序添加更多数量的微服务,这需要更多数量的应用程序负载均衡器,但是可以使用单个应用程序负载均衡器来路由流量不同的微服务目标群体。

我已经检查了资源中可用的参数。 beantalk 环境资源中可用的主要选项是单实例或负载平衡环境。如果我选择单个实例,那么它不会创建任何负载均衡器。它只是创建一个 EC2 服务器并部署应用程序。 Apache/nginx 充当反向代理服务器来访问端点。同时,如果我使用负载均衡环境,我可以配置应用程序负载均衡器相关的设置。但是我没有找到任何方法来重用单个应用程序负载均衡器,我们现在在 AWS 中是否有这样的支持,AWS 已经添加了一些选项来控制 ELB 来自弹性 beantalk。

【问题讨论】:

AWS 正在考虑将此功能添加到 Elastic Beanstalk。见:github.com/aws/elastic-beanstalk-roadmap/issues/40 【参考方案1】:

不幸的是,目前无法将单个负载均衡器与多个 Beanstalk 环境相关联。使用 Beanstalk 在单个负载均衡器下部署单独服务的最接近方法是使用多容器 Docker 平台。但是,在此方案下,您的服务无法独立扩展。即 Beanstalk 将所有服务一起扩展,或者一个都不扩展。

【讨论】:

我同意你的看法。 AWS 目前没有这种支持。正在寻找其他方法来使用 ECS 实现它。【参考方案2】:

您可以将 Single Application Load Balancer 功能扩展到规则、目标和目标组。假设您的环境 1 有一个应用程序名称 APPLICATION-1,而环境 2 有一个应用程序名称 APPLICATION-2。通过目标组使用 ALB,您可以定义此类规则。

Reference Link

【讨论】:

我的用例基于您共享的参考链接。我可以通过为每个微服务创建一个单独的目标组并使用 alb 来路由请求来手动执行此操作。我想通过cloudformation自动化这个过程,它是一个资源参考。 docs.amazonaws.cn/en_us/elasticbeanstalk/latest/dg/… 。它不包含为不同应用程序重用相同 alb 的任何方法。 您可以通过定义目标组的 cloudformation 将参数定义到您的策略模板中。 ***.com/questions/39520067/… 感谢分享,这里环境是elasticbeanstack。会尝试这个解决方案。 您可以考虑在负载均衡器前使用 AWS API 网关。详情在这里-***.com/questions/63158805/…

以上是关于如何使用 cloudformation 模板为不同的 elasticbeanstalk 应用环境使用相同的应用负载均衡器?的主要内容,如果未能解决你的问题,请参考以下文章

需要使用一个 AWS CloudFormation 模板为不同的环境启动多个实例

如何使用 AWS Cloudformer 为现有 API Gateway 创建云形成模板?

如何从 aws cloudformation 模板为特定资源类型创建堆栈

如何导出 SNS 主题以在 Cloudformation 中的不同堆栈中使用

如何将 AWS CloudWatch 仪表板转换为 CloudFormation 模板

SAM 模板和 Cloudformation 模板的区别