如何集成 AWS + ELB + AutoScale + Docker + Spring Cloud

Posted

技术标签:

【中文标题】如何集成 AWS + ELB + AutoScale + Docker + Spring Cloud【英文标题】:How to integrate AWS + ELB + AutoScale + Docker + Spring Cloud 【发布时间】:2019-03-05 16:21:10 【问题描述】:

我想设计一个应用程序,使用 AWS 作为 IAAS,Docker 作为 PAAS,Spring Boot 和 Spring Cloud 作为应用程序技术。

为此,我在 Google 上搜索并阅读了很多博客和观看视频,但找不到任何答案。

我使用 Spring Boot 和 Spring Cloud 技术开发了一个应用程序,应用程序架构如下图所示。

此设计看起来不错,并且按预期工作正常。 现在的新任务是,我需要使用云 (AWS) 作为基础设施和 Docker。 为此,我又设计了一种架构,如下图所示。

组件如下:

ELB -(弹性负载均衡器)-> 目标组(Auto Scaling 的一部分)-> EC2 实例(将按需创建更多)

现在如果我想集成我以前的设计,那么我认为这里不需要 Zuul 服务器,因为这个负载平衡是由 ELB 完成的,第二个我也不需要服务发现组件,因为它将由 Target 完成自动缩放组。

我对 Spring Cloud 和 AWS 基础设施有点困惑。

有人可以帮助我简化如何将这些组件集成在一起工作吗?

谢谢

【问题讨论】:

您是否设法将 Spring 云网关与您的 ELB 集成?我正在尝试构建相同的解决方案,其中 ELB 将成为 spring 云网关内的目标 uri,不确定这是否可行! 【参考方案1】:

为什么选择 Spring Cloud 和 AWS?

让我们举个例子,即使你的架构部署在 AWS 基础设施上,你也需要 Spring Cloud:

假设您的产品服务需要与您的订单服务进行通信,在这种情况下,您将看到 Spring Cloud 实用程序。

您看不到 Spring Cloud 的必要性,因为您没有内部通信(在您的服务之间),这就是 Registry 服务的角色。

为什么选择网关服务(Zuul 在您的架构中)?

同样,您当前的架构并不使用(需要)强大的网关模式。

假设您的系统需要聚合来自不同服务的多个结果以响应客户端请求。您可以在网关中执行此操作(在您的情况下为 Zuul)。

使用网关服务的另一个优势是您可以将其用作系统的统一前门,它允许浏览器、移动应用程序或其他用户界面使用来自多个主机的服务,而无需管理跨域资源共享 (CORS)和每个人的身份验证。

重要:

不使用 Spring Cloud 很好,这不是实现微服务架构的规则或正确方法。如果您不需要它,请不要使用它。

【讨论】:

您好 RedOff,感谢您的回答。在我当前的架构中,服务正在相互通信。 ProductSerice 与 OrderService 通信,我没有显示它的图表。关于 zuul(网关模式)的第二件事,我问,我想使用 zuul,但有点混淆在哪里添加它,因为 AWS EBS 正在作为前端网关。如果我想将 Zuul 与 AWS 一起使用,您能否指导我,那么正确的方法应该是什么。 我的意思是...添加它是因为 AWS ELB 正在充当前端网关。您可以在您的 ELB 和您的业务服务之间添加 Zuul,也可以删除您的目标组 (TG),Zuul 将根据实例 ID 转发请求(如果您使用 Registry 服务)。您将拥有的唯一 TG 是 Gateway TG(从 ELB 到 Zuul)

以上是关于如何集成 AWS + ELB + AutoScale + Docker + Spring Cloud的主要内容,如果未能解决你的问题,请参考以下文章

如何在自动缩放组中添加 aws new elb

如何在 AWS ELB 日志中获取完整的 POST 正文?

如何将 AWS ELB 状态更改为 InService?

如何在 Istio 中设置 AWS ALB 而不是 ELB?

如何使用超时设置解决 AWS ELB/EC2 HTTP 503?

如何配置 AWS ELB 以阻止某些 IP 地址? (已知的垃圾邮件发送者)[关闭]