Google compute engine GCE&x2B;负载平衡器&x2B;没有公共IP的实例
我有一个故意没有公共IP的例子 我有一个GCE网络负载均衡器,它使用上述实例作为目标池 一切都很好 然后我想让我的实例与internet通信,所以我遵循以下文档:(配置NAT网关) 实例可以很好地与internet通信,但负载平衡器无法再与我的实例通信 我认为这些步骤造成了loadbalancer的问题:Google compute engine GCE&x2B;负载平衡器&x2B;没有公共IP的实例,google-compute-engine,Google Compute Engine,我有一个故意没有公共IP的例子 我有一个GCE网络负载均衡器,它使用上述实例作为目标池 一切都很好 然后我想让我的实例与internet通信,所以我遵循以下文档:(配置NAT网关) 实例可以很好地与internet通信,但负载平衡器无法再与我的实例通信 我认为这些步骤造成了loadbalancer的问题: $ gcloud compute routes create no-ip-internet-route --network gce-network \ --destination-r
$ 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
```
你知道怎样才能使这两件事协同工作吗?我已经重新创建了你描述的环境,没有遇到任何问题
$ 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到达实例的能力
在我的测试中,我遵循了您引用的精确的指南,结果如下:
- 1新网络
- 1防火墙规则允许在端口22上使用SSH
- 1允许所有内部通信的防火墙规则
- 1个新实例用作NAT网关
- 1个新实例没有外部IP地址的内部实例
我建议你和其他读者(因为这篇文章现在已经很老了)再试一次。确保您没有任何其他冲突的规则、路由或软件。您想使用NAT网关的原因有什么特别的吗?否则,您只需创建一个防火墙规则来允许所需的流量和端口。您的实例应该可以通过internet进行连接。@Boyan根据Google文档:“目前,任何发送到Internet的数据包都必须由具有外部IP地址的实例发送。如果创建从特定实例向Internet发送数据包的路由,则该实例还必须具有外部IP。如果您创建了一个将数据包发送到Internet网关的路由,但源实例没有外部IP地址,则数据包将被丢弃。“-因此,似乎需要NAT网关才能从实例与Internet通信