介绍

Unity Accelerator是一种本地网络代理和缓存服务,可以在资源管线的导入和使用Collaborate云服务下载源码这两种主要迭代场景下减少迭代时间。

与之前的 Unity Cache Server 类似,但是功能更强大。

官方博客

中文翻译

由于 Unity 2019 中新增了资源处理管线 V2,修正了大量之前管线的问题

并且 Unity 2020 中删除了资源处理管线 V1

考虑到要支持这两个版本的 Unity,需要使用新版本的缓存服务器。

Accelerator 的一个特点是支持设置磁盘配额及对应的策略,并且支持自动清理不必要的缓存。

环境

  • Unity 2020.3.3f1
  • Unity 2019.4.21f1
  • CentOS 7.6.1810
  • docker-ce.x86_64 3:20.10.6-3.el7
  • docker-compose version 1.29.0, build 07737305

调研

首先仔细阅读官方文档,因为确定要支持 Unity 2019.4 与 Unity 2020.3 两个版本,文档只看 Unity 2020.3 的版本:

在官方文档中下载的 Linux 版本1文件名是 unity-accelerator-app-v1.0.909+g1e7dfa1.AppImage,这是分发Linux桌面应用程序的格式2,无法在命令行下使用。

通过搜索到的一个结果 Unity 2019.3.x Unity Accelerator 加速器安装配置 – bilibala 发现文章中使用的方法是安装脚本,而现在官方已不再提供安装脚本。

官方现在提供的非图形化方案就是使用 Docker,因此决定使用 Docker部署,主要搜索 Docker 相关的实践以作参考。

主要找到下面两个方案,都是使用 Docker Compose 管理:

英文

日文

需求

  1. 缓存需要放到专用的固态硬盘上。
  2. 支持在机器重启后自动启动。
  3. 使用 Docker Compose 管理服务,这样所有的配置不用放在命令行参数中,而是可以都放到文件里。

Docker

Docker 安装

官方文档提供了几种方法,这里使用仓库的安装方法,由于对版本并无要求,安装最新版本即可:

1
2
3
4
5
6
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker

Docker Compose

1
2
3
4
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.29.0, build 07737305

bind mounts

Volume 存储由 Docker 在自己的安装目录自行管理,而我们需要自行指定存储位置,因此需要使用 bind mounts

1
2
    volumes:
      - ./agent:/agent

使用相对路径指定存储,这样 docker-compose.yml 所在目录的 ./agent 目录会作为存储使用。

自启动

Docker

Docker 默认安装完是不会自启动的

1
2
3
4
5
6
7
8
# 检查 docker 是否自启动
$ systemctl is-enabled docker
disabled
# 设置 docker 自启动
$ sudo systemctl enable docker
# 再次检查 docker 是否自启动
$ systemctl is-enabled docker
enabled

Docker Compose 配置

需要在 docker-compose.yml 中增加自动重启的指令:

1
    restart: always

Unity Accelerator

创建安装目录

1
mkdir -p /data/unity-accelerator

编辑配置文件

vi docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
version: '3.8'

services:
  accelerator:
    image: unitytechnologies/accelerator:v1.0.909-g1e7dfa1
    restart: always
    volumes:
      - ./agent:/agent
    env_file:
      - ./accelerator.env
    ports:
      - "10080:10080"

在这里必须显式地指定 Accelerator 镜像版本,这样部署过程可以重复。

配置文件需要参考其他例子,还有官方文档,确定版本号:

配置管理员账号密码

vi accelerator.env

1
2
USER=admin
PASSWORD=admin

端口冲突检查

1
$ netstat -tupln

虽然官方文档中提到使用了 80, 443, 10080, 10443 这四个端口,但实际上并不需要 HTTPS,可以只检查端口 10080 是否重复。

1
Current Asset Import Pipeline V2 Port 10080

其他服务

由于暂时不需要监控,并且之前安装的 GitLab 自带 Prometheus 与 Grafana,已经占用了端口,因此没有启用 Prometheus 与 Grafana。

启动停止

1
2
3
4
# 启动
docker-compose up -d
# 停止
docker-compose down

运行后检查端口是否正常开启

1
2
3
$ netstat -tupln
tcp        0      0 0.0.0.0:10080           0.0.0.0:*               LISTEN      32645/docker-proxy
tcp6       0      0 :::10080                :::*                    LISTEN      32652/docker-proxy

维护

控制台

使用 10080 端口访问后台可以看到相关的配置,点击 Configuration 输入 accelerator.env 中的用户名与密码可以查看修改配置。

升级版本

Accelerator 服务会在维护期间自动自我更新。当前,该维护期根据运行 Accelerator 的计算机而设置为当地时间凌晨 01:00–02:00。仅当 Accelerator 发现可用的更新版本时,才会进行自我更新。

Accelerator 的安装日志和卸载日志保存在操作系统的标准临时目录中,名为 unity-accelerator-*install.log。Accelerator 的日志保存在存储目录中,名为 unity-accelerator.log

现在 Accelerator 可以自己自动升级了,也就是一次安装,无须手动升级。

Unity 配置

只需要在 Unity | Edit | Preferences | Cache Server,在 Default IP address 中填入 cache.example.com(这里只写域名或IP,无需填写端口号),然后点击 Check Connection 按钮确认是否成功即可。

引用


  1. https://accelerator.cloud.unity3d.com/api/v1/accelerator/download/installer?target_os=linux&download_location=manual ↩︎

  2. AppImage | 让 Linux 应用随处运行 ↩︎