无法访问Google Cloud中的tomcat管理器8080

时间:2017-07-10 19:21:09

标签: tomcat7 google-cloud-platform google-compute-engine

我一直在使用Amazon EC2运行我的Tomcat + MySQL网站一段时间,现在正在迁移到Google Cloud Platform。我启动一个计算引擎实例(Ubuntu 16.04),通过ssh连接到它并使用apt-get来安装mysql / tomcat7。

我遇到的问题是tomcat无法启动。 catalina.out日志没有“xxxms服务器启动”消息,我无法通过浏览器连接到8080端口。

catalina.out的最后几行是

Jul 10, 2017 7:06:20 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 928 ms
Jul 10, 2017 7:06:20 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina
Jul 10, 2017 7:06:20 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.68 (Ubuntu)
Jul 10, 2017 7:06:20 PM org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor /etc/tomcat7/Catalina/localhost/host-manager.xml
Jul 10, 2017 7:06:21 PM org.apache.catalina.startup.TldConfig execute INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

当我使用netstat进行检查时,它显示用户tomcat7正在侦听8080

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      115        32984       -   

$ id -u tomcat7  
$ 115           

我尝试在ssh终端中找到localhost:8080,它显示

Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 

然后就在那里。

非常感谢任何想法或建议!

更新

事实证明防火墙不是问题的根本原因,即使没有允许端口8443 Tomcat也可以工作(因为你需要允许8080)。没有“服务器启动”消息显示的原因是Tomcat需要很长时间才能启动(第一次为1346049 ms,重启时为354034 ms,除默认index.html之外没有安装任何Web应用程序),原因为否对请求的回应也是它还没有完成启动。

这是我第一次看到Tomcat需要很长时间才能启动,也是我第一次没有意识到这一点。我怀疑(有些搜索)这是由Tomcat Jar扫描引起的。一旦我有更多细节,将继续更新这个问题。

更新 - 解决了问题

事实证明,我遇到了同样的问题here,解决方案是here。简而言之,大部分时间都由以下任务消耗:

Creation of SecureRandom instance for session ID generation using [SHA1PRNG]

需要Java加载/ dev / random来获取随机数。 / dev / random通常从键盘/鼠标输入获取其熵源,这无法在无头虚拟机上提供足够的随机性。这导致随机数在计算期间“用完”并导致大量等待。解决方案是安装 hasged ,它使用其他一些来源来提供随机性(链接中的详细信息)。

我安装了hasged,现在tomcat启动只需1秒,一切正常。

1 个答案:

答案 0 :(得分:1)

感谢您提出这样有趣的问题。

我从未使用Google云服务,但我设法复制了您的问题。

installing_tomcat_7_ubuntu

wget_doesnt_work

reading a little后,我发现您需要更新防火墙规则以启用对8080端口的访问权限。

转到:

1)(汉堡图标,左上角) 2)网络 3)防火墙规则 4)添加新的

我创建了一个名为' allow-tomcat7'有这个属性:

Descripción

Enables Tomcat 7 access
Red

default
Prioridad

1000
Dirección

Entrada
Acción tras coincidencia

Permitir
Filtros de origen

Intervalos de IP    
0.0.0.0/0
Protocolos y puertos

tcp:8080
tcp:8443
udp:8080

可以选择'目标代码'当你编辑配置时,虽然我已经创建了一个'标签'并且仅将它应用于我的新EC实例,它没有工作。我不得不删除目标标签,它就像一个魅力:

enter image description here

  

确保只允许访问您的IP地址!

您需要调整安全设置,否则,您将成为蜜罐,一旦我为所有人启用了端口,就会有几个机器人开始扫描它:

daychuzleo@testing-tomcat:~$ sudo tcpdump -i ens4 port 8080
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes

20:39:31.437634 IP 170.251.221.183.54162 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [.], seq 1638030511:1638030512, ack 1250919796, win 259, length 1: HTTP
20:39:31.437665 IP testing-tomcat.c.hip-river-163201.internal.http-alt > 170.251.221.183.54162: Flags [.], ack 1, win 231, options [nop,nop,sack 1 {0:1}], length 0

20:39:37.133899 IP 170.251.221.183.53878 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [.], seq 2436191518:2436191519, ack 4071767590, win 259, length 1: HTTP
20:39:37.133930 IP testing-tomcat.c.hip-river-163201.internal.http-alt > 170.251.221.183.53878: Flags [.], ack 1, win 222, options [nop,nop,sack 1 {0:1}], length 0

20:39:51.379839 IP 170.251.221.183.54162 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [F.], seq 1, ack 1, win 259, length 0
20:39:51.392375 IP 170.251.221.183.47923 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [S], seq 1420913913, win 8192, options [mss 1386,nop,wscale 8,nop,nop,sackOK,unknown-76 0x01010a18e9680005,unknown-76 0x0c01,nop,eol], length 0
20:39:51.392410 IP testing-tomcat.c.hip-river-163201.internal.http-alt > 170.251.221.183.47923: Flags [S.], seq 507557961, ack 1420913914, win 28400, options [mss 1420,nop,nop,sackOK,nop,wscale 7], length 0
20:39:51.421934 IP testing-tomcat.c.hip-river-163201.internal.http-alt > 170.251.221.183.54162: Flags [.], ack 2, win 231, length 0
20:39:51.586555 IP 170.251.221.183.47923 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [.], ack 1, win 259, length 0
20:39:51.590317 IP 170.251.221.183.47923 > testing-tomcat.c.hip-river-163201.internal.http-alt: Flags [P.], seq 1:389, ack 1, win 259, length 388: HTTP: GET / HTTP/1.1
20:39:51.590337 IP testing-tomcat.c.hip-river-163201.internal.http-alt > 170.251.221.183.47923: Flags [.], ack 389, win 231, length 0

我无法使用wget工作,但我认为你会发现它。

<强>更新

我忘记提及一些你可能没有配置的事情:

- 虚拟机实例中的HTTP和HTTPS缓存防火墙:

allow_firewall_rules_VM

  • 尝试使用网络导航器(Chrome,Firefox)不要使用wget。
  • 确定您未被公司防火墙过滤,尝试使用手机或不受限制的网络中的4g进行测试,或者只是让您的IT团队允许您访问临时公共IP(生成(每次)。

    • 使用以下方式启动服务:

    sudo service tomcat7 start

    • 尝试重新安装tomcat

我做过的其他事情(在研究过程中)

  • 将服务移至IPV4而非IPV6

    daychuzleo @ testing-tomcat:〜$ netstat -ntpl (并非所有流程都可以识别,非自有流程信息  不会显示,你必须是root才能看到这一切。) 活动Internet连接(仅限服务器) Proto Recv-Q Send-Q本地地址外部地址状态PID /程序名称 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
    tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN -
    tcp6 0 0 ::: 22 ::: * LISTEN -

为此,编辑默认的tomcat并在JavaOPTS中添加IPV4选项:

vim /etc/default/tomcat

JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true"

禁用8443重定向

评论部分&#34; redirectPort&#34;在server.xml中:

vim /etc/tomcat/server.xml 

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               address="0.0.0.0"/>
               <!--redirectPort="8443" />-->
  

通过重新启动tomcat实例来验证每项更改。