首页 > 解决方案 > 在 AWS 中连接前端到后端

问题描述

我有一个用 Angular 编写的 UI 应用程序,它有一个在 NodeJS 中运行的后端。我还有两个将从 NodeJS 后端调用的服务。这些应用程序在 docker 容器中运行,并部署到 AWS 中的 Kubernetes 集群。

流程是这样的:

AngularUI -> NodeJS -> Service1/Service2

AngularUI 和 NodeJS 位于同一个 docker 容器中,而其他两个服务位于 2 个单独的容器中。

我已经能够让服务在 AWS 上的 Kubernetes 中运行。服务到服务调用(服务 1-> 服务 2)工作正常,因为我使用 k8s 标签调用它们。

现在我无法弄清楚如何从 Angular 前端调用 NodeJS 后端,因为请求是在客户端执行的。我无法提供服务 ELB 的 IP,因为每次部署都会更改 IP。

我尝试创建一个指向 Angular UI 的 ELB IP 的 AWS API 网关,但这并没有提供页面。

这样做的正确方法是什么?任何帮助深表感谢。

标签: angularamazon-web-servicesamazon-ec2kubernetes

解决方案


ELB 有一个静态 DNS 主机名,例如foobar.eu-west-4.elb.amazonaws.com. 当您手头有一个域时,创建一个指向此 DNS 主机名的 A 记录(别名)。例如

webservice.mydomain.com -> mywebservicelb.eu-west-4.elb.amazonaws.com

您还可以使用静态 IP 地址,这似乎是一个相当新的功能:

每个网络负载均衡器为其权限范围内的每个可用区提供一个 IP 地址。如果您在 us-west-2a 中有目标,在 us-west-2c 中有其他目标,NLB 将创建和管理两个 IP 地址(每个 AZ 一个);与该 IP 地址的连接将在 AZ 中所有 VPC 子网中的实例之间传播流量。您还可以为每个 AZ 指定一个现有的弹性 IP,以实现更大的控制。通过完全控制您的 IP 地址,网络负载均衡器可用于需要将 IP 地址硬编码到 DNS 记录、客户防火墙规则等的情况。

https://aws.amazon.com/de/blogs/aws/new-network-load-balancer-efortless-scaling-to-millions-of-requests-per-second/


推荐阅读