6

我一直在使用 ALB,直到我意识到我无法将私有 ALB 连接到 API 网关......所以现在正在尝试 NLB。

到目前为止我有

  • 私人 NLB
  • API Gateway VPC Link 连接到 NLB

但我不确定如何正确配置 API 网关。我做了:

  • 创建了一条测试路线GET /test
  • 使用 VPC Link,尝试过代理和非代理类型
  • 但我不确定我为端点 URL 放了什么。现在我做了类似的事情:虚拟域http://dummydomain.com/api在哪里,我的状态检查 URL 应该可以工作dummydomain.com/api

这是我第一次尝试 NLB。有什么我想念的吗?

目前,当我测试我的 API 网关功能时:我得到 HTTP500

{
  "message": "Internal server error"
}

日志:

Execution log for request 2d5e2e51-b04c-11e8-b9fe-97b354c20146
Tue Sep 04 14:09:45 UTC 2018 : Starting execution for request: 2d5e2e51-b04c-11e8-b9fe-97b354c20146
Tue Sep 04 14:09:45 UTC 2018 : HTTP Method: GET, Resource Path: /test
Tue Sep 04 14:09:45 UTC 2018 : Method request path: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request query string: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request headers: {}
Tue Sep 04 14:09:45 UTC 2018 : Method request body before transformations: 
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request URI: http://dummydomain.com/api
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request headers: {x-amzn-apigateway-api-id=4p76zcriuk, User-Agent=AmazonAPIGateway_4p76zcriuk, Host=dummydomain.com}
Tue Sep 04 14:09:45 UTC 2018 : Endpoint request body after transformations: 
Tue Sep 04 14:09:45 UTC 2018 : Sending request to http://dummydomain.com/api
Tue Sep 04 14:09:56 UTC 2018 : Execution failed due to configuration error: There was an internal error while executing your request
Tue Sep 04 14:09:56 UTC 2018 : Method completed with status: 500

我很好奇的事情......目标群体有

  • 协议:TCP
  • 端口:80
  • 目标类型:IP
  • 健康检查通过

但是我的应用程序在端口 3000 上运行。但是运行状况检查通过它也正确反映了我的应用程序在端口 3000 上运行

在此处输入图像描述

但是想知道端口 80 部分是否有问题?NLB 是否将端口 80 流量转换为端口 3000?

4

1 回答 1

2

Endpoint URL 有点小技巧。它强制您提供域(您可以使用任何域)。当您提出请求时,该域似乎被剥离并替换为您的 VPC 链接。

例如

http://dummydomain.com/api -> http://{NLB DNS}:80/api

您还可以将{proxy}其作为 Endpoint URL 的一部分与 API Gateway 代理资源一起使用。

例如http://dummydomain.com/api/{proxy},使用顶级代理资源将导致:

{api gateway endpoint}/todo/1 -> http://{NLB DNS}:80/api/todo/1

您可以将 NLB 端口配置为端点 URL 的一部分。

例如

http://dummydomain.com:10001/api -> http://{NLB DNS}:10001/api

这允许您在 NLB 上包含多个指向不同目标组的侦听器。

要进行故障排除,请通过在同一 VPC 上启动 EC2 实例并从那里卷曲您的端点 URL(将http://dummydomain.com替换为 NLB DNS)来测试您的(内部)NLB

于 2018-10-03T09:20:19.747 回答