gpt4 book ai didi

java - 谷歌应用引擎 TCP 连接失败

转载 作者:可可西里 更新时间:2023-11-01 02:55:39 25 4
gpt4 key购买 nike

部署到谷歌应用引擎的 Spring Boot 应用程序和对端点的请求按预期使用硬编码文本正确响应。除了公开的默认端口 8080 外,还公开了另一个 TCP:8595,跟踪设备会将数据发布到该端口。

问题是当我测试与 telnet projectid.appspot.com 8595 建立 tcp 连接时,我得到了这个响应 Connecting To projectid.appspot.com...Could not open connection to主机,在端口 8595 上:连接失败,认为本地连接没有失败。

应用引擎中托管的应用程序如何公开端口?

免责声明:我是 App Engine 和 GCP 的新手

最佳答案

正如 docs 中所述,您应该能够在您的 app.yaml 中设置端口转发,然后通过防火墙规则公开它。

1.) 端口转发

network:
forwarded_ports:
- 2222/tcp

调试思路:使用 AppEngine Flex,您可以通过 SSH 进入实例以进行进一步调试(App Engine > 实例,实例旁边的 SSH 按钮)。

登录后,您应该能够运行此 docker 命令以查看暴露的端口(在我的例子中,我在 app.yaml 中暴露了 8081):

$ sudo docker port gaeapp
8080/tcp -> 172.17.0.1:8080
8081/tcp -> 0.0.0.0:8081

你甚至可以检查它是否在监听(在我的例子中它是一个正确回复 404 的 HTTP 服务):

curl localhost:8081
{"timestamp":1519837414455,"status":404,"error":"Not Found","message":"No message available","path":"/"}

(对于 telnet,您需要使用 sudo apt-get update && sudo apt-get install -y telnet 安装它)

如果这显示了您的端口,那么下一步就是仔细检查您的防火墙设置。

2.) 防火墙设置

gcloud compute firewall-rules create myrule --allow=tcp:8595 --source-ranges=0.0.0.0/0

然而,这只会让您直接通过 VM 实例 IP 访问您的应用程序!(您可以在控制台中找到您的 IP 或通过列出您的实例 gcloud compute instances list)

参见 docs 中 forwarded_ports 的描述

forwarded_ports Optional. You can forward ports from your instance (HOST_PORT) to the Docker container (CONTAINER_PORT). If you only specify a PORT, then App Engine assumes that it is the same port on the host and the container. By default, both TCP and UDP traffic are forwarded. Traffic must be directly addressed to the target instance rather than over the appspot.com domain or your custom domain.

关于java - 谷歌应用引擎 TCP 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com