GCE +负载均衡器+没有公共IP的实例

时间:2014-10-03 22:15:00

标签: google-compute-engine

我有一个例子,故意没有公共IP。

我有GCE网络负载均衡器,它将上面的实例用作目标池。

一切都很好。

然后我希望我的实例与互联网通信,所以我遵循了这个文档:https://cloud.google.com/compute/docs/networking#natgateway(配置NAT网关)

实例可以正常与Internet通信,但负载均衡器无法再与我的实例通信。

我认为这些步骤会导致loadbalancer出现问题:

$ gcloud compute routes create no-ip-internet-route --network gce-network \
     --destination-range 0.0.0.0/0 \
     --next-hop-instance nat-gateway \
     --next-hop-instance-zone us-central1-a \
     --tags no-ip --priority 800

user@nat-gateway:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

```

你知道如何让两件事情协同工作吗?

1 个答案:

答案 0 :(得分:1)

我重新创建了您所描述的环境,并没有遇到任何问题。

$ gcloud compute routes create no-ip-internet-route --network gce-network \
 --destination-range 0.0.0.0/0 \
 --next-hop-instance nat-gateway \
 --next-hop-instance-zone us-central1-a \
 --tags no-ip --priority 800

上述命令唯一能做的就是创建路由规则,以便没有外部流量的实例指向NAT网关,以获取他们想要发送的任何流量。这不会影响LB到达您实例的能力。

在我的测试中,我遵循您引用的完全指南which you can find here,结果是:

  • 1个新网络
  • 1个防火墙规则,允许端口22上的SSH
  • 1个允许所有内部流量的防火墙规则
  • 1个新实例充当NAT网关
  • 1个没有外部IP地址的新实例内部实例

我还将内部实例添加到' TargetPool'并为测试目的创建了一个LB.

我的内部实例既可以通过LB的外部地址访问,也可以通过NAT网关在内部访问。由于NAT网关的配置,内部实例也能够与Internet通信。一切都按预期工作。

我对你和其他读者的推荐(因为这篇文章现在相当陈旧)是要再试一次。确保您没有任何其他冲突的规则,路线或软件。