Azure 上的基本游戏服务器托管
该参考体系结构以 《我的世界》(Minecraft) 服务器为例,详细介绍了如何设置将在 Windows 或 Linux 上托管游戏服务器的基本 Azure 后端。
体系结构关系图
相关服务
- Azure Windows 虚拟机和 Azure Linux 虚拟机 - 在 Azure 上获取计算能力的最基本方法。
- Azure 磁盘存储 - 基本的永久性存储。
分步操作
要完成的步骤摘要如下:
- 设置资源组。
- 设置 Azure 虚拟机、附加持久性磁盘并打开端口。
- 通过维护端口远程访问新的 Azure 虚拟机。
- 设置操作系统防火墙。
- 初始化并格式化永久性数据磁盘。
- 安装游戏服务器依赖项。
- 安装游戏服务器本身。
- 配置游戏服务器。
- 运行游戏服务器,并仔细检查端口是否已打开。
设置资源组
资源组是 Azure 资源的逻辑集合。 所有资源都在资源组中进行部署和管理。 执行以下操作以创建资源组:
- 如果您没有 Azure 订阅,请在开始之前创建一个免费帐户。
- 登录到 Azure 门户。
- 在左侧导航窗格中,单击资源组。 然后单击添加。
- 为资源组输入一个唯一名称。 系统会立即检查该名称在当前选定的 Azure 订阅中是否可用。
- 在订阅中,单击要在其中创建资源组的 Azure 订阅的名称。
- 为资源组选择一个地理位置。
- 单击创建。
设置 Azure 虚拟机、附加持久性磁盘并打开端口
创建一个资源,并选择一个虚拟机,其中包含运行游戏服务器的操作系统。 在 Azure 门户中搜索以下各项,它们通常是最受欢迎的:
Windows Linux Windows Server 2016 Datacenter 或 Windows Server 2016 VM Ubuntu Server 18.04 LTS 或 Ubuntu Server 18.04 VM 选择 Azure 订阅、资源组、虚拟机名称和区域。
选择满足您自己的 I/O 和资源需求的计算机类型、磁盘类型以及磁盘大小。 就《我的世界》服务器而言,具有 2 个虚拟 CPU (vCPU) 和 4 GB RAM 的小型 Azure 虚拟机(如标准 B2s)足以应对少于 10 个用户的情况。
设置计算机管理员用户名和密码,以便日后进行远程访问。
允许公共入站端口在以后以管理员身份连接到虚拟机(维护端口),随后将启用游戏服务器中的特定端口:
Windows Linux RDP(远程桌面协议)端口:TCP/3389
还可以选择添加 SSH 端口:TCP/22SSH 端口:TCP/22 切换到磁盘部分,选择创建新数据空白磁盘并将其附加 Azure 虚拟机,以存储游戏服务器可执行文件和它生成的数据文件。 源类型为无(空白磁盘)。
Azure 虚拟机有一个操作系统磁盘和一个用于短期存储的临时磁盘,但是存储的信息将在 Azure 虚拟机停止运行后立即丢失。 如果使用永久性磁盘,即使运行服务器的 Azure 虚拟机停止,数据仍将继续保留。
切换到网络部分,使游戏服务器需要的端口接受玩家请求并创建一个公用 IP。
要打开这些端口,您将需要利用虚拟网络、子网和网络安全组 (NSG)。
默认情况下将创建虚拟网络和子网,就《我的世界》服务器而言,您无需进行任何更改。 若要创建网络安全组,请选择单选按钮以启用高级 NIC 网络安全组、单击旁边的“新建”链接配置新的网络安全组 (NSG),并添加一个或多个相关的入站规则。
对于《我的世界》,只需要一个端口,数量和协议因《我的世界》版本(Java 版本、Bedrock 版本)而异,值的来源为 server.properties 文件,其格式如此处所述。 单击“添加入站规则”链接后,使用以下值:
《我的世界》Java 版 《我的世界》Bedrock 版 源 任何 任何 源端口范围 * * 目标 任何 任何 目标端口范围 25565 19132 协议 TCP UDP 操作 允许 允许 优先级 100 100 名称 MinecraftJava_Port MinecraftBedrock_Port 若要创建公用 IP,请执行以下步骤:单击此设置旁边的“新建”链接,然后使用静态分配进行配置。
审查并创建 Azure 虚拟机。 请注意,需要几分钟时间才能完成部署。
通过维护端口远程访问新的 Azure 虚拟机
您需要使用公用 IP 或 DNS 名称才能连接到 Azure 虚拟机,要查找这些内容,请按以下步骤操作:
- 访问您创建的资源组。
- 选择您创建的虚拟机。
- 公用 IP 地址或 DNS 名称字段即为您要查找的内容,二者皆可。 要设置 DNS,请单击 DNS 名称下的“配置”链接、在 DNS 名称标签下提供一个名称并将其保存。
完成之后,请遵循以下教程来远程访问 Azure 虚拟机:
远程桌面协议 (TCP/3389) | SSH (TCP/22) |
---|---|
如何使用远程桌面 | 安全 Shell 协议 |
连接到 Azure 虚拟机后,您可以继续执行以下剩余步骤。
设置操作系统防火墙
您的虚拟机已配置为接受对维护和游戏服务器特定端口的请求,但操作系统防火墙也需要进行配置。 请按照以下教程打开游戏服务器需要的端口以接受玩家请求。
Windows | Linux |
---|---|
在 Windows Server 2016 上创建入站端口规则 | Ubuntu 简单防火墙 例如,对于《我的世界》,命令为: - sudo ufw allow 25565/tcp (《我的世界》Java 版)- sudo ufw allow 19132/udp (《我的世界》Bedrock 版) |
提醒一下,对于《我的世界》服务器,默认端口因游戏版本而异:《我的世界》Java 版使用 TCP/25565,而《我的世界》Bedrock 版使用 UDP/19132。
初始化并格式化永久性数据磁盘
Windows | Linux |
---|---|
使用磁盘管理 (diskmgmt.msc) 要打开“磁盘管理”,请右键单击“开始”按钮,然后选择“磁盘管理”。 请注意,磁盘 2 未分配,这就是需要初始化并格式化的永久性磁盘。 |
连接到 Linux VM 以装载新磁盘 这包括以下步骤: 1. 发现磁盘 2. 对它进行分区 3. 在其中写入文件系统 4. 将其装载到目录 5. 重新启动后设置自动装载 |
安装游戏服务器依赖项
对于《我的世界》服务器,依赖项如下:
《我的世界》服务器版本 | Windows | Linux |
---|---|---|
《我的世界》Java 版 | Java 8 64 位版本 | 在 Ubuntu 上安装 Java 8 |
《我的世界》Bedrock 版 | Microsoft Visual C++ Redistributable for Visual Studio | 不适用 |
安装游戏服务器本身
要通过 SSH 访问 Azure 虚拟机,请执行以下操作:
- 查看 Wget 命令文档以了解如何使用非交互式网络下载程序。
- 依次运行
sudo apt-get install unzip
和sudo unzip THEZIPFILE
以解压缩《我的世界》Bedrock 版服务器,从而安装解压缩文件。
配置游戏服务器
对于《我的世界》Java 版服务器,首先更改 eula.txt 文件参数 (eula=true) 以接受他们的 EULA。 如果您要通过 SSH 访问 Azure 虚拟机,请查看 Nano 编辑器文档以通过 SSH 编辑文件。
按照官方《我的世界》Wiki 中的本教程,为两个《我的世界》服务器版本配置《我的世界》服务器。
运行游戏服务器并仔细检查端口是否已打开
要运行《我的世界》Java 版服务器,请在命令行 (Windows) 或终端 (Linux) 使用以下命令:
java -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -jar server.jar nogui
如果您想要使用其图形用户界面启动服务器,可以省略“nogui”部分。 为方便起见,您可以创建批处理文件(Windows) 或脚本 (Linux)。
要运行《我的世界》Bedrock 版服务器:
- 在 Windows 上,只需双击
bedrock_server.exe
可执行文件。 - 在 Linux 上,从安装有服务器的目录使用
LD_LIBRARY_PATH=. ./bedrock_server
。 该服务器无需以 root 用户身份运行。
总之,在服务器开始运行后,仔细检查游戏服务器所需的端口是否处于打开状态,切记在端口显示为正在侦听之前,您需要运行游戏服务器:
查看位置 | Windows | Linux |
---|---|---|
在 Azure 虚拟机内 | 从命令行运行 netstat -an | find "LISTENING" 并验证端口是否显示为正在侦听 |
从终端运行 sudo netstat -ntlp | grep LISTEN |
在 Azure 虚拟机外 | 1. 按照以下步骤启用 Telnet:单击“开始”、“控制面板”、“程序”,然后打开或关闭 Windows 功能;接下来,向下滚动并选择“Telnet 客户端”,然后单击“确定” 2. 之后,从命令行运行 telnet host port 并验证连接是否显示为已接受 |
运行 telnet host port 并验证连接是否显示为已接受 |
安全注意事项
公用入站端口将向 Internet 公开,因此您应该使用 Azure 门户高级控件来限制到已知 IP 地址的维护入站流量,这意味着只有您可以远程访问 Azure 虚拟机。
其他资源和示例
使用 Azure 市场《我的世界》服务器产品部署《我的世界》服务器
定价
如果您没有 Azure 订阅,可以创建免费帐户,开始使用 12 个月的免费服务。 除非您超出这些服务的使用限制,否则无需为 Azure 免费帐户中包含的这些免费服务付费。 了解如何通过 Azure 门户或使用情况文件查看服务使用情况。
您需要承担运行这些参考体系结构时使用的 Azure 服务的费用,总金额取决于将通过分析管道运行的事件数。 请参阅参考体系结构中使用的每项服务的定价网页:
您还可以使用 Azure 定价计算器,以配置和估算您计划使用的 Azure 服务的成本。