我已按照Google云端平台上的使用协议转发的说明进行操作.所以我现在有这样的事情:
$ gcloud compute forwarding-rules list
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET
x-fr-1 us-west1 104.198.?.?? TCP us-west1-a/targetInstances/x-target-instance
x-fr-2 us-west1 104.198.?.?? TCP us-west1-a/targetInstances/x-target-instance
x-fr-3 us-west1 104.198.??.??? TCP us-west1-a/targetInstances/x-target-instance
x-fr-4 us-west1 104.198.??.??? TCP us-west1-a/targetInstances/x-target-instance
x-fr-5 us-west1 104.198.?.??? TCP us-west1-a/targetInstances/x-target-instance
Run Code Online (Sandbox Code Playgroud)
(注意:名称已被更改,问号已被替换.我不确定保持这些私密但更安全而不是遗憾.)
我的实例"x"在"x-target-instance"中,并且具有五个转发规则"x-fr-1"到"x-fr-5".我在"x"上运行nginx,我可以从它的6个外部IP地址中的任何一个访问它(1个用于实例+ 5个转发规则).到现在为止还挺好.
我现在感兴趣的是将服务器绑定到这些外部IP地址.为了探索,我尝试使用Python:
import socket
import time
def serve(ip_address, port=80):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((ip_address, port))
try:
sock.listen(5)
while True:
con, _ = sock.accept()
print con.getpeername(), con.getsockname()
con.send(time.ctime())
con.close()
finally:
sock.close()
Run Code Online (Sandbox Code Playgroud)
现在我可以绑定"0.0.0.0",我得到一些有趣的结果:
>>> serve("0.0.0.0")
('173.228.???.??', 57288) ('10.240.?.?', 80)
('173.228.???.??', 57286) ('104.198.?.??', …Run Code Online (Sandbox Code Playgroud) python networking google-compute-engine google-cloud-platform