0

我有一个使用本指南在 GCP 上构建的 Minecraft 服务器。它在 GCP us-central1-f (Iowa) 上运行,在 us-central1 (Iowa) 上有一个区域存储桶。我有一个 cronjob 设置来运行一个 bash 脚本,以使用 gsutil 每 4 小时将世界文件(大约 2GB)备份到存储桶。这是备份脚本:

#!/bin/bash
FILENAME=$(date "+%Y%m%d-%H%M%S")-world.tar.gz 

screen -r mcs -X stuff 'save-all flush\nsave-off\n'
tar -zcvf /home/minecraft/$FILENAME /home/minecraft/world /home/minecraft/world_nether /home/minecraft/world_the_end
/usr/bin/gsutil cp /home/minecraft/$FILENAME gs://path-to-bucket-minecraft-backup/$FILENAME 
screen -r mcs -X stuff 'save-on\n'
rm /home/minecraft/$FILENAME

我已经以这种方式运行了大约一个月,我注意到我被收取数百 GB 的外部网络出口费用,并且 Minecraft 服务器上只有 5-10 个用户。我联系了 GCP 支持,他们确认网络数据是传输到存储桶的数据,这显然是通过互联网传输的。他们的建议是配置 Private Google Access 以使用 gsutil。

我与另一位 GCP 支持代表合作尝试这样做:

  • 我们编辑了服务器 VM 实例并将“云 API 访问范围”设置为“允许完全访问所有云 API”
  • 我们进入默认 VPC 网络并为 us-central1 启用“私人 Google 访问”。
  • 我们禁用了外部 IP,并确认我能够将文件复制到存储桶,因此备份可以通过内部网络运行。

根据配置私人谷歌访问的文档,具有分配给其网络接口的外部 IP 地址的虚拟机不需要私人谷歌访问来连接到谷歌 API 和服务。GCP 支持无法判断备份流量现在是通过内部链接还是外部链接。他们将我指向 Stack Overflow 寻求帮助。

所以我想我的问题是,我需要做些什么来确保我使用 gsutil cp 的备份通过内部网络传输,而不是通过互联网传输?我需要调整路由吗?我已经阅读了有关 gsutil 的文档,但我没有找到任何关于如何指定流量如何流动的信息。

在此先感谢您的帮助!

4

1 回答 1

1

根据官方文档:

私人谷歌访问

只有内部 IP 地址(没有外部 IP 地址)的虚拟机实例可以使用专用 Google 访问权限。它们可以访问 Google API 和服务的外部 IP 地址。...

Private Google Access对具有外部 IP地址的实例没有影响。具有外部 IP 地址的实例可以根据 Internet 访问要求访问 Internet。它们不需要任何特殊配置即可向 Google API 和服务的外部 IP 地址发送请求。

因此,我相信只有当您的 VM 具有内部 IP 地址时,您才能在内部网络上使用 gsutil。

于 2020-10-09T08:06:00.293 回答