如何集成 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Istio 中设置 AWS ALB 而不是 ELB?