首页 > 解决方案 > 无法访问计算引擎外部的 Java 应用程序,但它在 localhost 上运行

问题描述

我有一个 dropwizard 应用程序。还有一个 e2-small(2 个 vCPU,2 GB 内存)内存。当我运行传递必要属性的应用程序时,它成功运行而没有错误。(问题结束时的日志片段)

我的应用程序在端口 8080 上运行,并且从我的计算引擎控制台(连接 SSH 后)我做

卷曲http://0.0.0.0:8080

它按预期返回我。但我无法从外部访问此应用程序。我有外部 IP(云 SQL 也需要),所以我尝试以 http://externalip:8080 访问应用程序,它不会返回任何东西。同样来自计算引擎控制台的 curl http://externalip:8080(连接 SSH 后)不会返回任何内容。

在创建计算引擎实例时,我在防火墙部分允许 http 和 https 流量。

我已经使用相同的外部 IP 设置了我的部署管道(使用第三方工具),它成功地将我的工件复制到了我的计算引擎。所以我确定外部IP已启用。

你能帮我理解可能是什么问题吗?

INFO [2020-11-18 15:32:09,981] org.eclipse.jetty.server.handler.ContextHandler:已启动 idjMutableServletContextHandler@4850a747{/,null,AVAILABLE} INFO [2020-11-18 15:32:09,995] org .eclipse.jetty.server.AbstractConnector:已启动 application@50a0404b{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 信息 [2020-11-18 15:32:09,997] org.eclipse.jetty。 server.AbstractConnector:已启动 application@e328d88{HTTP/1.1,[http/1.1]}{0.0.0.0:8443} INFO [2020-11-18 15:32:09,998] org.eclipse.jetty.server.AbstractConnector:已启动admin@78ea668{HTTP/1.1,[http/1.1]}{0.0.0.0:8081} INFO [2020-11-18 15:32:09,999] org.eclipse.jetty.server.AbstractConnector:已启动 admin@10af6715{HTTP /1.1,[http/1.1]}{0.0.0.0:8444} 信息 [2020-11-18 15:32:10,000] org.eclipse.jetty.server.Server: 开始@9687ms 127.0.0.1 - - [18/ 2020 年 11 月:15:33:53 +0000] "GET / HTTP/1.1" 200 2314 "-" "curl/7.64.0" 54 127.0.0.1 - - [18/Nov/2020:15:34:13 +0000] "GET / HTTP/1.1" 200 2314 "-" "curl/7.64.0" 3

标签: javagoogle-cloud-platformgoogle-compute-enginedropwizard

解决方案


默认情况下,GCP 防火墙拒绝任何入口流量。入口流量是源自网络外部并进入网络的流量同样是来自外部 VM 实例的任何 http 请求都收到连接被拒绝错误的原因。

我跟着

  1. https://cloud.google.com/vpc/docs/using-vpc
  2. https://cloud.google.com/vpc/docs/using-firewalls

之后我们为我的项目添加了防火墙规则(你也可以使其成为实例级别)并允许解决我的问题的入口流量


推荐阅读