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

160 lines
10 KiB
Markdown
Raw Normal View History

2025-12-24 19:28:15 +08:00
---
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)
2025-12-24 22:21:10 +08:00
## 下载地址
- 官方下载地址
- 服务端:https://github.com/EpicGames/UnrealEngine/releases/download/5.5.0-release/UnrealHordeServer.msi
- 也可以从Horde服务器下载地址
- http://10.219.103.35:13340/tools
2025-12-24 19:28:15 +08:00
2025-12-24 22:21:10 +08:00
# 大致步骤
1. 使用docker部署服务。
2. 服务器配置。
1. 默认端口Http 13340、Http 2 13342。
1. 默认情况下Horde配置为使用端口5000通过未加密的HTTP提供数据。在默认情况下代理通过端口5002使用未加密的HTTP/2上的gRPC与Horde服务器通信。这些设置在服务器启动时显示在控制台上。
2. [相关配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-orientation-for-unreal-engine?application_version=5.5)
- [服务器配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)将配置该服务器与其他服务器的通信,定义静态参数等。它由与该服务器一同部署的 `Server.json` 文件驱动。
- [完整配置参数清单](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)
- [全局配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-schema-for-unreal-engine?application_version=5.5#globals)在部署后控制所有面向用户的元素,该配置存于名为 `Globals.json` 的文件中。设置好部署参数后,大多数配置都在此处完成。
3. [验证相关配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-authentication-tutorial-for-unreal-engine?application_version=5.5)
1. [[#OIDC身份验证]]
3. 代理机配置。详见 http://10.219.103.35:13340/docs/Landing.md
1. 配置文件位置:安装目录\Agent\Defaults\agent.json
2.
2025-12-24 19:28:15 +08:00
# 部署笔记
## 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设备的访问。
2025-12-24 22:21:10 +08:00
## 部署流程
- [Horde服务器](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-server-for-unreal-engine?application_version=5.5)
2025-12-24 19:28:15 +08:00
### Windows
相关服务安装都集成在安装包里。
### Docker(Linux)
要下载镜像首先从你的账号设置页面的开发者部分创建一个GitHub个人访问令牌PAT然后将其作为密码传递给
```shell
docker login ghcr.io
```
2025-12-24 22:21:10 +08:00
***注意这里需要用Token不然容易登录失败,Token需要开启Package Read 权限***
```c++
# Github
docker login ghcr.io -u 378100977@qq.com -p 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
```
2025-12-24 19:28:15 +08:00
下载镜像:
```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
```
2025-12-24 22:21:10 +08:00
如需更多指导请参阅YAML文件中的注释。
## Https配置流程
要通过HTTPS协议提供数据请在[Server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)中设置 `HttpsPort` 属性。
通过在同一文件中设置默认证书,为[Kestrel](https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-8.0)NET Core web服务器配置证书。
跨平台:
```json
"Kestrel": {
"Certificates": {
"Default": {
"Path": "C:\\cert\\test.pfx",
"Password": "my-password"
}
}
}
```
## 验证配置流程
如果你现在没有与OIDC兼容的身份提供商Horde将提供自有身份提供商 - 本指南将介绍该提供商。
### 先决条件
- Horde服务器安装参阅[Horde安装教程](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-installation-tutorial-for-unreal-engine?application_version=5.5))。
- 具有有效证书,并且在你的服务器上启用[HTTPS支持](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-server-for-unreal-engine?application_version=5.5#https)。
### 步骤
1. 在你的[server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-orientation-for-unreal-engine?application_version=5.5)文件中将 `AuthMode` 属性设置为 `Horde` ,然后重新启动服务器。
2. 第一次启动服务器时,系统会提示你输入管理员密码。
3. 登录后, `服务器Server` 菜单中会有一个 `账户Accounts` 菜单项。从此处,你可以管理允许登录到服务器的用户,以及他们拥有的[声明](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-glossary-for-unreal-engine?application_version=5.5#%E6%8E%88%E6%9D%83)。Horde的账户系统会将 `http://epicgames.com/ue/horde/group` 声明用于用户所属组,并且操作面板将建议并自动填写在部署的配置文件中找到的组。
服务器的 `default.globals.json` 文件中定义了两个标准组,默认情况下包含于标准 `globals.json` 文件中:`查看` 和 `运行` 。
```cpp
"acl": {
"entries": [
{
"claim": {
"type": "http://epicgames.com/ue/horde/group",
"value": "View"
},
"profiles": [
"default-read"
]
},
{
"claim": {
"type": "http://epicgames.com/ue/horde/group",
"value": "Run"
},
"profiles": [
"default-run"
]
}
]
}
```
`default-read` 和 `default-run` 配置文件在代码( `AclConfig.cs` )中定义。你可以在每个[AclConfig](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-schema-for-unreal-engine?application_version=5.5#aclconfig)对象的 `profiles` 元素中定义自己的配置文件。
### OIDC身份验证
要配置外部OIDC提供程序需要在[Server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)中进行以下设置:
- `AuthMethod` :将其设置为`OpenIdConnect` 。
- `OidcAuthority` OIDC授权的URL。你可以在浏览器中访问 `{{Url}}/.well-known/openid-configuration` 检查此处指定的URL是否正确该地址应返回OIDC发现文档。
- `OidcClientId` 向OIDC提供程序标识应用程序Horde。它由OIDC提供程序生成。
- `OidcClientSecret` OIDC提供程序提供的一个机密值用于识别请求授权的应用程序。
此外,还可以指定以下设置:
- `OidcRequestedScopes` 指定向OIDC提供程序请求的权限范围。权限范围决定了Horde向OIDC提供程序请求的访问权限以及将返回的且可用于在Horde ACL中进行检查的声明。这些值的含义取决于你的OIDC 提供程序配置。
- `OidcClaimNameMapping` :指定在尝试显示用户真实姓名时按偏好顺序检查的声明的列表。
- `OidcClaimEmailMapping` :指定在尝试显示用户邮件地址时按偏好顺序检查的声明的列表。
- `OidcClaimHordePerforceUserMapping` 指定在尝试确定用户的Perforce用户名时按偏好顺序检查的声明的列表。