繁体   English   中英

GCP:如何动态更改 VM 实例的公共 IP 并保持连接

[英]GCP: How to dynamically change an VM Instance's public IP and keep the connection

我们在 Compute Engine 中有许多用于抓取的 VM 实例,它们可能会在某些站点中被阻止,然后我们尝试使用 NordVPN 更改 IP。 我们正在尝试创建一个 Python 脚本,以便在我们检测到我们被阻止时自动更改 IP。 目前,我们正在使用我们最近发现的这个 Python package : NordVPN-switcher ,但我们收到下一个错误:

Connecting you to Denver ...
An unknown error occurred while connecting to a different server! 

An unknown error occurred while connecting to a different server! Retrying with a different server...

Traceback (most recent call last):
  File "demo.py", line 13, in <module>
    rotate_VPN(instructions)  # refer to the instructions variable here
  File "/home/eduardo_santos_housecallprosolut/.local/lib/python3.8/site-packages/nordvpn_switcher/nordvpn_switch.py", line 514, in rotate_VPN
    raise Exception("Unable to connect to a new server. Please check your internet connection.\n")
Exception: Unable to connect to a new server. Please check your internet connection.

注意:我们有互联网连接。

虚拟机实例也安装了 NordVPN,如果我们手动尝试,我们可以更改它,但由于我们使用 SSH 连接到实例,此时我们更改 IP 连接丢失。

那么,目前的问题是:

  1. 如何正确动态更改实例的IP?
  2. 更改发生后如何保持连接。

注意: scrapers和所有的逻辑都是docker化的,Python版本是3.9

正如我一开始提到的,我们有很多机器用于scrape,我们希望保留每台使用的IP的注册表以便更好地分配,可能使用Redis DB oa small collection in MongoDB。 你怎么看待这件事? 什么是开发这个的好方法?

太感谢了。

如何正确动态更改实例的IP?

没有支持的方法。 一旦 IP 地址更改,任何现有连接都将中断/失败。 需要编写使用 IP 的软件来处理连接失败并尝试重新连接。 这种类型的功能在手机应用程序中很常见,但在桌面/服务器世界中则较少。

谷歌云(以及大多数云供应商)的重要一点是,您的虚拟机没有分配给网络接口的公共 IP 地址。 公共 IP 地址分配给一对一 NAT 的一侧。 这意味着不会发生操作系统和应用程序内的 IP 地址更改通知。

Google 提供了 CLI、SDK 和 API,可用于以编程方式更改分配给实例的 IP 地址。

更改发生后如何保持连接。

两种策略:

  1. 添加另一个具有不变的公共 IP 地址的网络接口。 使用该 IP 地址连接到 VM。

  2. 创建一个您将使用的公共 IP 地址池。 使用具有跟踪连接地址更改的出色功能的 VPN,例如 WireGuard。 使用 VM 的私有 IP 地址通过 VPN 连接,该地址在公共 IP 地址更改时不会更改。

我会使用第一种策略,因为它的复杂性和潜在问题更少。 但是,一旦您了解了 WireGuard 如何管理连接并实现签名而不是 IP 地址,连接管理就有很多可能性。

我今晚在具有公共 IP 的 VM 上尝试了这个,然后我删除了公共 IP 并且它继续工作。 这可能是解决方案!

您可以使用 IAP连接到您的虚拟机。 像这样在带有 gcloud 的终端中执行此操作:

gcloud compute ssh --tunnel-through-iap -project=$project_name --zone=us-west2-a $instance_name

让我知道。 如果它不适合你,我将删除答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM