Files
BlueRoseNote/03-UnrealEngine/流程管理与部署/UnrealHorde/Unreal Horde 相关笔记.md

82 lines
4.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Unreal Horde
date: 2024-06-28 10:58:10
excerpt:
tags:
rating: ⭐
---
# 前言
- 官方文档UE5.5
- https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-in-unreal-engine?application_version=5.5
- Horde README.md https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/README.md
- [**Deploying Horde**](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/Docs/Deployment.md)
- - 有关 Horde 的架构和组件的信息,以及部署它们的最佳实践。
**受众:** IT、系统管理员、打算修改 Horde 的程序员。
- [**Configuring and Operating Horde**](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/Docs/Config.md)
- - 描述如何设置和管理 Horde。
**受众:**构建/开发运营团队、管理员。
- [**Horde Internals**](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/Docs/Internals.md)
- - 描述如何构建和修改 Horde 及其架构。
**受众:**希望扩展 Horde 的开发人员。
- 视频
- [Horde and Unreal Build Accelerator: Operating at Epic Scale](https://youtu.be/ZUlwqNbYWBQ?si=DgFvrvepK67v-iTi)
## 代理客户端下载地址
- https://github.com/EpicGames/UnrealEngine/releases/download/5.5.0-release/UnrealHordeServer.msi
# Internals
## Server
Horde 默认配置为支持本地开发。您可以通过打开`Engine/Source/Programs/Horde/Horde.sln`并将 Horde.Server 设置为默认项目来启动它。默认情况下,您可以通过 访问服务器`http://localhost:5000/account`
## Docker
Horde 包含`Dockerfile`用于创建 Docker 映像的 。但是,它在虚幻引擎源代码树中的位置要求事先暂存文件,以减少复制到构建映像中的数据大小。
执行这些操作的 BuildGraph 脚本包含在 中`Engine\Source\Programs\Horde\HordeBuild.xml`,可按如下方式运行:
```
RunUAT.bat Engine/Source/Programs/Horde/HordeBuild.xml -Target="Build HordeServer"
```
# 部署笔记
## Epic Games的Horde部署
Epic Games内部部署的Horde托管在AWS上包括以下部分
- Amazon Load Balancer用于SSL的终止和路由
- 2个Linux容器服务于由Amazon ECS管理的操作面板每个配置0.25 vCPU、0.5GB RAM
- 10个Horde Server实例使用'Server' [runmode](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#runmode-enum)配置在由Amazon ECS托管的Linux容器上运行每个配备4 vCPU、16GB RAM
- 这些实例负责处理面向用户的轻量级请求。
- 2个Horde Server实例使用'Worker' [runmode](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#runmode-enum)配置在由Amazon ECS托管的Linux容器上运行每个配备4 vCPU、16GB RAM
- 这些实例负责处理更繁重的计划任务例如复制Perforce元数据、读取和更新配置状态以及启动计划作业。
- Amazon DocumentDB与MongoDB兼容
- Amazon ElastiCache与Redis兼容
- 数百个EC2实例运行包含Horde代理的AMI。
- 约100台机器本地托管用于提供对移动设备、主机以及非托管平台例如Mac设备的访问。
## 流程
### Windows
相关服务安装都集成在安装包里。
### Docker(Linux)
要下载镜像首先从你的账号设置页面的开发者部分创建一个GitHub个人访问令牌PAT然后将其作为密码传递给
```shell
docker login ghcr.io
```
***注意这里需要用Token不然容易登录失败***
下载镜像:
```shell
docker pull ghcr.io/epicgames/horde-server:latest
```
请注意在这种形式下外部MongoDB和Redis实例必须通过配置文件或环境变量来配置详见下文
只要每台服务器都指向同一个MongoDB和Redis实例则在负载均衡器后面运行多个Horde服务器就无需进行显式配置。
在Linux系统上使用Docker容器是[Epic的首选Horde运行方式](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-deployment-for-unreal-engine?application_version=5.5)。
### Docker ComposeLinux
[Docker Compose](https://docs.docker.com/compose/)通过提供一组预配置的Docker容器简化了基于Docker的安装设置这些容器中包含MongoDB和Redis的实例。
这种方法与MSI安装程序类似适用于测试Horde或在小规模环境中进行部署。要访问预构建镜像请参阅上文Docker小节。必要的Docker Compose配置可以在 `Engine/Source/Programs/Horde.Server/docker-compose.yml` 文件中找到。 https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/HordeServer/docker-compose.yml
在同一目录下,可以使用以下命令启动容器:
```shell
docker compose up
```
如需更多指导请参阅YAML文件中的注释。