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

10 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
Unreal Horde 2024-06-28 10:58:10

前言

下载地址

大致步骤

  1. 使用docker部署服务。
  2. 服务器配置。
    1. 默认端口Http 13340、Http 2 13342。
      1. 默认情况下Horde配置为使用端口5000通过未加密的HTTP提供数据。在默认情况下代理通过端口5002使用未加密的HTTP/2上的gRPC与Horde服务器通信。这些设置在服务器启动时显示在控制台上。
    2. 相关配置
      • 服务器配置将配置该服务器与其他服务器的通信,定义静态参数等。它由与该服务器一同部署的 Server.json 文件驱动。
      • 全局配置在部署后控制所有面向用户的元素,该配置存于名为 Globals.json 的文件中。设置好部署参数后,大多数配置都在此处完成。
    3. 验证相关配置
      1. #OIDC身份验证
  3. 代理机配置。详见 http://10.219.103.35:13340/docs/Landing.md
    1. 配置文件位置:安装目录\Agent\Defaults\agent.json

部署笔记

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配置在由Amazon ECS托管的Linux容器上运行每个配备4 vCPU、16GB RAM
    • 这些实例负责处理面向用户的轻量级请求。
  • 2个Horde Server实例使用'Worker' runmode配置在由Amazon ECS托管的Linux容器上运行每个配备4 vCPU、16GB RAM
    • 这些实例负责处理更繁重的计划任务例如复制Perforce元数据、读取和更新配置状态以及启动计划作业。
  • Amazon DocumentDB与MongoDB兼容
  • Amazon ElastiCache与Redis兼容
  • 数百个EC2实例运行包含Horde代理的AMI。
  • 约100台机器本地托管用于提供对移动设备、主机以及非托管平台例如Mac设备的访问。

部署流程

Windows

相关服务安装都集成在安装包里。

Docker(Linux)

要下载镜像首先从你的账号设置页面的开发者部分创建一个GitHub个人访问令牌PAT然后将其作为密码传递给

docker login ghcr.io

注意这里需要用Token不然容易登录失败,Token需要开启Package Read 权限

# Github
docker login ghcr.io -u 378100977@qq.com -p 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

下载镜像:

docker pull ghcr.io/epicgames/horde-server:latest 

请注意在这种形式下外部MongoDB和Redis实例必须通过配置文件或环境变量来配置详见下文。 只要每台服务器都指向同一个MongoDB和Redis实例则在负载均衡器后面运行多个Horde服务器就无需进行显式配置。 在Linux系统上使用Docker容器是Epic的首选Horde运行方式

Docker ComposeLinux

Docker 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

在同一目录下,可以使用以下命令启动容器:

docker compose up

如需更多指导请参阅YAML文件中的注释。

Https配置流程

要通过HTTPS协议提供数据请在Server.json中设置 HttpsPort 属性。 通过在同一文件中设置默认证书,为KestrelNET Core web服务器配置证书。 跨平台:

"Kestrel": {
    "Certificates": {
        "Default": {
            "Path": "C:\\cert\\test.pfx",
            "Password": "my-password"
        }
    }
}

验证配置流程

如果你现在没有与OIDC兼容的身份提供商Horde将提供自有身份提供商 - 本指南将介绍该提供商。

先决条件

步骤

  1. 在你的server.json文件中将 AuthMode 属性设置为 Horde ,然后重新启动服务器。
  2. 第一次启动服务器时,系统会提示你输入管理员密码。
  3. 登录后, 服务器Server 菜单中会有一个 账户Accounts 菜单项。从此处,你可以管理允许登录到服务器的用户,以及他们拥有的声明。Horde的账户系统会将 http://epicgames.com/ue/horde/group 声明用于用户所属组,并且操作面板将建议并自动填写在部署的配置文件中找到的组。

服务器的 default.globals.json 文件中定义了两个标准组,默认情况下包含于标准 globals.json 文件中:查看 和 运行 。

"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对象的 profiles 元素中定义自己的配置文件。

OIDC身份验证

要配置外部OIDC提供程序需要在Server.json中进行以下设置:

  • 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用户名时按偏好顺序检查的声明的列表。