arrow_back

使用虚拟机 (VM)

登录 加入
访问 700 多个实验和课程

使用虚拟机 (VM)

实验 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

概览

在本实验中,您将设置一个游戏应用:Minecraft 服务器。

Minecraft 服务器软件将在 Compute Engine 实例上运行。

您使用的是 e2-medium 机器类型,它有一个 10 GB 的启动磁盘、2 个虚拟 CPU (vCPU) 和 4 GB RAM。此机器类型默认运行的是 Debian Linux。

为确保 Minecraft 服务器的游戏世界数据有充足的存储空间,您还为该实例挂接了一个高性能的 50 GB 永久性固态硬盘 (SSD)。这个专用的 Minecraft 服务器最多可支持 50 位玩家。

目标

在本实验中,您将学习如何执行以下任务:

  • 自定义应用服务器
  • 安装和配置必要的软件
  • 配置网络访问权限
  • 安排定期备份

设置和要求

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标

任务 1. 创建虚拟机

在此任务中,您将创建一个虚拟机来托管 Minecraft 服务器并安装软件。

使用高级选项定义虚拟机

  1. 在 Google Cloud 控制台的导航菜单 (导航菜单) 中,依次点击 Compute Engine > 虚拟机实例
  2. 点击创建实例
  3. 指定下列内容,将其他设置保留默认值:
属性 值(按照说明输入值或选择选项)
名称 mc-server
区域
可用区
  1. 点击操作系统和存储空间

  2. 确保启动磁盘映像显示为 Debian GNU/Linux 12 (bookworm)。如果不是,请点击更改,从版本下拉列表中选择相应版本,然后点击选择

  3. 点击添加新磁盘

  4. 指定下列内容,将其他设置保留默认值:

属性 值(按照说明输入值或选择选项)
名称 minecraft-disk
磁盘来源类型 空白磁盘
磁盘设置 SSD 永久性磁盘
大小 (GB) 50
加密 由 Google 管理的加密密钥
  1. 点击保存。这会创建磁盘,并在创建虚拟机时自动将其挂接到虚拟机。

  2. 点击网络

  3. 指定下列内容,将其他设置保留默认值:

属性 值(按照说明输入值或选择选项)
网络标记 minecraft-server
网络接口 点击默认以修改接口
外部 IPv4 地址 预留静态外部 IP 地址
名称 mc-server-ip
  1. 点击预留,然后点击完成

  2. 点击安全

  3. 指定下列内容,将其他设置保留默认值:

属性 值(按照说明输入值或选择选项)
身份和 API 访问权限 > 访问权限范围 针对每个 API 设置访问权限
存储 读写
  1. 点击创建

任务 2. 准备数据磁盘

在此任务中,您将格式化并装载 Minecraft 磁盘。

创建目录,格式化并装载磁盘

磁盘会挂接到实例,但尚未装载,也没有格式化。

  1. 对于 mc-server,点击 SSH 以打开终端并建立连接。
  2. 如需创建一个目录,并将其作为数据磁盘的装载点,请运行以下命令:
sudo mkdir -p /home/minecraft
  1. 如需格式化磁盘,请运行以下命令:
sudo mkfs.ext4 -F -E lazy_itable_init=0,\ lazy_journal_init=0,discard \ /dev/disk/by-id/google-minecraft-disk

结果(这是示例输出)

mke2fs 1.47.0 (5-Feb-2023) Discarding device blocks: done Creating filesystem with 13107200 4k blocks and 3276800 inodes Filesystem UUID: 3d5b0563-f29e-4107-ad1a-ba7bf11dcf7c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
  1. 如需装载磁盘,请运行以下命令:
sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft

磁盘装载后不会显示任何输出信息。

点击“检查我的进度”以验证是否完成了以下目标:

创建虚拟机并准备数据磁盘

任务 3. 安装并运行应用

在此任务中,您将安装并运行 Minecraft 应用。Minecraft 服务器运行在 Java 虚拟机 (JVM) 之上,因此需要 Java 运行时环境 (JRE) 才能运行。服务器不需要图形界面,因此可使用 JRE 的无头版本。

这样能减少 JRE 占用的机器资源,有助于确保 Minecraft 服务器有充足的空间按需扩展资源用量。

安装 Java 运行时环境 (JRE) 和 Minecraft 服务器

  1. mc-server 的 SSH 终端中运行如下命令,以更新虚拟机上的 Debian 代码库:
sudo apt-get update
  1. 完成代码库的更新后,如需安装无头 JRE,请运行以下命令:
sudo apt-get install -y default-jre-headless
  1. 如需导航到装载永久性磁盘的目录,请运行以下命令:
cd /home/minecraft
  1. 如需安装 wget,请运行以下命令:
sudo apt-get install wget
  1. 如果系统提示您继续,请输入 Y

  2. 如需下载最新版 Minecraft 服务器 JAR 文件 (1.11.2 JAR),请运行以下命令:

sudo wget https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar

初始化 Minecraft 服务器

  1. 如需初始化 Minecraft 服务器,请运行以下命令:
sudo java -Xmx1024M -Xms1024M -jar server.jar nogui

结果(输出示例)

[21:01:54] [main/ERROR]: Failed to load properties from file: server.properties [21:01:54] [main/WARN]: Failed to load eula.txt [21:01:54] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. 注意:您需要接受最终用户许可协议 (EULA) 的条款,才能运行 Minecraft 服务器。

点击“检查我的进度”以验证是否完成了以下目标:

安装 Java 运行时环境 (JRE) 和 Minecraft 服务器
  1. 如需查看在首次初始化 Minecraft 服务器的过程中创建的文件,请运行以下命令:
sudo ls -l 注意:您可以修改 server.properties 文件,以更改 Minecraft 服务器的默认行为。
  1. 如需修改 EULA,请运行以下命令:
sudo nano eula.txt
  1. 将该文件的最后一行从 eula=false 更改为 eula=true
  2. 依次按 Ctrl+OENTER 键保存文件,然后按 Ctrl+X 退出 nano。
注意:现在请勿尝试重启 Minecraft 服务器。在接下来的过程中,您将使用另外一种不同的方法。

创建一个虚拟终端 screen 来启动 Minecraft 服务器

如果此时再次启动 Minecraft 服务器,它将与 SSH 会话的生命周期绑定:也就是说,在您关闭 SSH 终端时,服务器也会终止。为避免出现此问题,您可以使用 screen 应用来创建一个虚拟终端,该虚拟终端可以“分离”以作为后台进程运行,也可通过“重新附加”变为前台进程。当虚拟终端分离到后台时,无论您是否已登录系统,它都会保持运行状态。

  1. 如需安装 screen,请运行以下命令:
sudo apt-get install -y screen
  1. 如需在 screen 虚拟终端内启动 Minecraft 服务器,请运行以下命令(使用 -S 标志为终端 mcs 命名):
sudo screen -S mcs java -Xmx1024M -Xms1024M -jar server.jar nogui

结果(输出示例)

... [21:06:06] [Server-Worker-1/INFO]: Preparing spawn area: 83% [21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 85% [21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 86% [21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 88% [21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 89% [21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 91% [21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 93% [21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 95% [21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 98% [21:06:11] [Server-Worker-1/INFO]: Preparing spawn area: 99% [21:06:11] [Server thread/INFO]: Time elapsed: 55512 ms [21:06:11] [Server thread/INFO]: Done (102.484s)! For help, type "help"

从 screen 分离并关闭 SSH 会话

  1. 如需分离 screen 终端,请按 Ctrl+ACtrl+D。该终端会继续在后台运行。如需重新附加终端,请运行以下命令:
sudo screen -r mcs
  1. 需要时按 Ctrl+ACtrl+D 退出 screen 终端。
  2. 如需退出 SSH 终端,请运行以下命令:
exit

恭喜!您已经设置并自定义了一个虚拟机,还安装并配置了 Minecraft 服务器这个应用软件!

任务 4. 允许客户端流量

在此任务中,您将配置一条防火墙规则,以便允许客户端连接到 Minecraft 服务器。到目前为止,该服务器虽然具有外部静态 IP 地址,但由于没有防火墙规则,还不能接收流量。

Minecraft 服务器默认使用 TCP 端口 25565。

创建防火墙规则

  1. 在 Google Cloud 控制台的导航菜单 (导航菜单) 中,依次点击 VPC 网络 > 防火墙
  2. 点击创建防火墙规则
  3. 指定下列内容,将其他设置保留为默认值:
属性 值(按照说明输入值或选择选项)
名称 minecraft-rule
目标 指定的目标标记
目标标记 minecraft-server
来源过滤条件 IPv4 范围
来源 IPv4 范围 0.0.0.0/0
协议和端口 指定的协议和端口
  1. 对于 tcp,指定端口 25565
  2. 点击创建。用户现在即可通过其 Minecraft 客户端访问您的服务器。

验证服务器可用性

  1. 在 Cloud 控制台的导航菜单 (导航菜单) 中,点击 VPC 网络
  2. 在左侧窗格中,点击 IP 地址
  3. 找到并复制 mc-server 虚拟机的外部 IP 地址
  4. 使用 Minecraft Server Status 测试您的 Minecraft 服务器。

注意:如果上面的网站不能正常使用,您可以使用其他网站或下面的 Chrome 扩展程序:

点击“检查我的进度”以验证是否完成了以下目标:

允许客户端流量

任务 5. 安排定期备份

在本任务中,您将对系统进行配置,以便将 Minecraft 游戏世界数据备份到 Cloud Storage。备份应用数据是很常见的活动。

创建 Cloud Storage 存储桶

  1. 在 Google Cloud 控制台的导航菜单 (导航菜单) 中,依次点击 Compute Engine > 虚拟机实例
  2. 对于 mc-server,点击 SSH
  3. 创建全局唯一的存储桶名称,并将其存储在环境变量 YOUR_BUCKET_NAME 中。为确保其唯一性,您可以使用项目 ID。运行以下命令:
export YOUR_BUCKET_NAME=<在此处输入您的存储桶名称>
  1. 使用 echo 进行验证:
echo $YOUR_BUCKET_NAME
  1. 如需使用 Cloud SDK 中的 gcloud 存储工具创建存储桶,请运行以下命令:
gcloud storage buckets create gs://$YOUR_BUCKET_NAME-minecraft-backup 注意:如果此命令失败,可能是因为您创建的存储桶的名称不唯一。如果确实如此,请选择使用其他存储桶名称,更新环境变量,然后再次尝试创建存储桶。 注意:为确保此环境变量永久存在,您可以运行以下命令将其添加到根层级的 .profile
echo YOUR_BUCKET_NAME=$YOUR_BUCKET_NAME >> ~/.profile

创建备份脚本

  1. 在 mc-server SSH 终端中,切换到您的主目录:
cd /home/minecraft
  1. 如需创建脚本,请运行以下命令:
sudo nano /home/minecraft/backup.sh
  1. 将如下脚本复制并粘贴到文件中:
#!/bin/bash screen -r mcs -X stuff '/save-all\n/save-off\n' /usr/bin/gcloud storage cp -R ${BASH_SOURCE%/*}/world gs://${YOUR_BUCKET_NAME}-minecraft-backup/$(date "+%Y%m%d-%H%M%S")-world screen -r mcs -X stuff '/save-on\n'
  1. 依次按 Ctrl+OENTER 键保存文件,然后按 Ctrl+X 退出 nano。
注意:该脚本会保存服务器游戏世界数据的当前状态,并暂停服务器的自动保存功能。然后会备份服务器的游戏世界数据目录 (world),并将其内容存放在 Cloud Storage 存储桶中带时间戳的目录 (<时间戳>-world) 内。该脚本在完成数据备份之后,即会恢复 Minecraft 服务器上的自动保存功能。
  1. 为使该脚本可执行,请运行如下命令:
sudo chmod 755 /home/minecraft/backup.sh

测试备份脚本,并安排 Cron 作业

  1. 在 mc-server SSH 终端中,运行备份脚本:
. /home/minecraft/backup.sh
  1. 在脚本运行完毕后,返回 Cloud 控制台。
  2. 如需验证是否已写入备份文件,请在导航菜单 (“导航菜单”图标) 中点击 Cloud Storage > 存储桶
  3. 点击备份存储桶名称。您应该会看到一个名称中包含日期时间戳的文件夹。现在您已经确认了备份可以正常发挥作用,接下来就可以安排 Cron 作业来自动处理这项任务了。
  4. 在 mc-server SSH 终端中,打开 Cron 表进行修改:
sudo crontab -e
  1. 当系统提示您选择编辑器时,输入与 nano 对应的数字,然后按 ENTER 键。
  2. 在 Cron 表底部粘贴以下代码行:
0 */4 * * * /home/minecraft/backup.sh 注意:这行代码指示 Cron 每 4 小时运行一次备份作业。
  1. 依次按 Ctrl+OENTER 键保存 Cron 表,然后按 Ctrl+X 退出 nano。
注意:此设置每个月会在 Cloud Storage 中创建大约 300 个备份,因此您需要定期删除备份,以免产生额外的费用。Cloud Storage 提供了对象生命周期管理功能,支持为对象设置存留时间 (TTL)、归档对象的较旧版本,或者将对象的存储类别“降级”以帮助管理费用。

点击“检查我的进度”以验证是否完成了以下目标:

安排定期备份

任务 6. 服务器维护

在此任务中,您将连接到服务器并将其关闭,以便执行服务器维护。

通过 SSH 连接到服务器,将服务器停止,然后关停虚拟机

  1. 在 mc-server SSH 终端中,运行如下命令:
sudo screen -r -X stuff '/stop\n'
  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击 Compute Engine > 虚拟机实例
  2. 选择 mc-server
  3. 点击停止
  4. 在确认对话框中,点击停止进行确认。 您将退出 SSH 会话。
注意:如需再次启动实例,请访问实例页面,然后点击启动。如需再次启动 Minecraft 服务器,您可以与实例建立 SSH 连接,重新装载永久性磁盘,然后在新 screen 终端中启动您的 Minecraft 服务器,就像之前一样。

使用启动和关停脚本实现服务器维护自动化

您不必手动装载永久性磁盘并在 screen 中启动服务器应用,而是完全可以使用元数据脚本创建启动脚本和关停脚本,通过脚本来自动执行这些任务。

  1. 点击 mc-server

  2. 点击修改

  3. 对于元数据,点击 + 添加项,然后指定以下内容:

    startup-script-url https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh
    shutdown-script-url https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh
注意:您必须点击添加项以添加 shutdown-script-url。当您重启实例时,启动脚本会自动将 Minecraft 磁盘装载到相应的目录,在一个 screen 会话中启动您的 Minecraft 服务器,然后分离该会话。当您停止实例时,关停脚本会先关停您的 Minecraft 服务器,然后再关停实例。最好将这些脚本存储到 Cloud Storage 中。
  1. 点击保存

点击“检查我的进度”以验证是否完成了以下目标:

服务器维护

任务 7. 回顾

在本实验中,您通过安装基础软件(无头 JRE)和应用软件(Minecraft 游戏服务器)创建了自定义虚拟机实例。您对虚拟机进行了自定义,为其挂接并准备了高速 SSD 数据磁盘,您还预留了一个静态外部 IP,以确保该地址保持一致。随后,您在线验证了该游戏服务器的可用性。

您设置了备份系统,将服务器的数据备份到 Cloud Storage 存储桶,并对备份系统进行了测试。然后,您使用 Cron 作业实现了备份的自动化。最后,您使用元数据设置了维护脚本,用于安全启动和关停服务器。

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

星级数的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。