Google Compute Engine新手在这里。
我跟随书架教程:https://cloud.google.com/nodejs/tutorials/bookshelf-on-compute-engine
但遇到了问题。当我尝试使用我的外部IP http://[YOUR_INSTANCE_IP]:8080
查看我的应用程序时
什么都没有出现。我已经尝试过一次又一次地运行教程,但仍然存在同样的问题。
编辑:
我的防火墙规则:http://i.imgur.com/gHyvtie.png
我的VM实例: http://i.imgur.com/mDkkFRW.png
显示正确网络标记的VM实例: http://i.imgur.com/NRICIGl.png
在我的网络浏览器中转到http://35.189.73.115:8080/仍然无法显示任何内容。说"这个页面没有工作"
答案 0 :(得分:1)
TL; DR - 您很可能缺少防火墙规则,以允许传入流量到您的实例上的端口8080.
默认情况下,Google Compute Engine防火墙会阻止所有入口流量(即传入网络流量)到您的虚拟机。如果您的虚拟机是在默认网络上创建的(通常是这种情况),则只允许使用22(ssh
),3389(RDP
)等端口。
default firewall rules are described here。
ingress firewall rules are described in detail here。
建议的方法是创建防火墙规则,允许在端口8080
上传入到您的VM(包含您选择的特定标记)的流量。然后,您可以将此标记仅关联到您希望允许进入的VM 8080
。
使用gcloud
执行此操作的步骤:
# Create a new firewall rule that allows INGRESS tcp:8080 with VMs containing tag 'allow-tcp-8080'
gcloud compute firewall-rules create rule-allow-tcp-8080 --source-ranges 0.0.0.0/0 --target-tags allow-tcp-8080 --allow tcp:8080
# Add the 'allow-tcp-8080' tag to a VM named VM_NAME
gcloud compute instances add-tags VM_NAME --tags allow-tcp-8080
# If you want to list all the GCE firewall rules
gcloud compute firewall-rules list
以下是another stack overflow answer,其中介绍了如何使用Cloud Console Web UI(除gcloud
之外)允许特定端口上的入口流量到您的VM。
PS:这些也是the steps in the tutorial you linked的一部分。
# Add the 'http-server' tag while creating the VM
gcloud compute instances create my-app-instance \
--image=debian-8 \
--machine-type=g1-small \
--scopes userinfo-email,cloud-platform \
--metadata-from-file startup-script=gce/startup-script.sh \
--zone us-central1-f \
--tags http-server
# Add firewall rules to allow ingress tcp:8080 to VMs with tag 'http-server'
gcloud compute firewall-rules create default-allow-http-8080 \
--allow tcp:8080 \
--source-ranges 0.0.0.0/0 \
--target-tags http-server \
--description "Allow port 8080 access to http-server"