我有一个使用本指南在 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 的文档,但我没有找到任何关于如何指定流量如何流动的信息。
在此先感谢您的帮助!