我有一个例子,故意没有公共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
```
你知道如何让两件事情协同工作吗?
答案 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,结果是:
我还将内部实例添加到' TargetPool'并为测试目的创建了一个LB.
我的内部实例既可以通过LB的外部地址访问,也可以通过NAT网关在内部访问。由于NAT网关的配置,内部实例也能够与Internet通信。一切都按预期工作。
我对你和其他读者的推荐(因为这篇文章现在相当陈旧)是要再试一次。确保您没有任何其他冲突的规则,路线或软件。