update docs

This commit is contained in:
virusdefender 2017-12-22 22:51:44 +08:00
parent 07bd66ecb5
commit d1a560b9f8

View File

@ -1,24 +1,22 @@
# 多个评测机
!>不建议在一台机器上运行多个评测服务, 因单个评测服务已经利用了多核计算,多个服务可能会导致判题性能降低
多个评测机只需确保两点即可正常运行:
+ JudgeServer Token一致
+ 进行test_case多机同步
- JudgeServer Token 一致
- 进行测试用例的多机同步
本OJ使用`rsync`进行同步,大致步骤如下:
本OJ使用 `rsync` 进行同步,步骤如下:
1. 修改OnlineJudgeDeploy里的`docker-compose.yml`文件
### 在部署好的机器上开启测试用例同步 master 服务
将下列代码合并进去(即添加一个service), 并运行`docker-compose up -d`:
在已经部署好的服务器上,修改 `OnlineJudgeDeploy` 里的 `docker-compose.yml` 文件
将下列代码合并进去(即添加一个service注意缩进), 并运行`docker-compose up -d`:
```yaml
version: "3"
services:
oj-rsync-master:
image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsync
container_name: oj-rsync
container_name: oj-rsync-master
volumes:
- $PWD/data/backend/test_case:/test_case:ro
- $PWD/data/rsync_master:/log
@ -30,56 +28,39 @@ services:
- "0.0.0.0:873:873"
```
!> 请务必修改`RSYNC_USER`和`RSYNC_PASSWORD`否则会导致test_case的泄露
!> 请务必修改`RSYNC_PASSWORD`,否则会导致测试用例的泄露
2. 新的JudgeServer配置
### 在新的机器上配置 JudgeServer 和测试用例同步 slave 服务
在另外的机器上新建目录并创建`docker-compose.yml`,粘贴进如下代码:
在新的的机器上按照 `OnlineJudgeDeploy` 项目初始化环境,修改 `docker-compose.yml`,只需要保留 `judge-server` 一个 service然后添加下面的 service 到文件中。
```yaml
version: "3"
services:
judge-server:
image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server
container_name: judge-server
read_only: true
cap_drop:
- SETPCAP
- MKNOD
- NET_BIND_SERVICE
- SYS_CHROOT
- SETFCAP
- FSETID
tmpfs:
- /tmp
- /judger_run:exec,mode=777
- /spj:exec,mode=777
volumes:
- $PWD/data/test_case:/test_case:ro
- $PWD/data/judge_server:/log
environment:
- service_url=http://judge-server:8080
- service_discovery_url=http://oj-backend:12358/api/judge_server_heartbeat/
- TOKEN=CHANGE_THIS
ports:
- "0.0.0.0:12358:8000"
oj-rsync-slave:
image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsync
container_name: oj-rsync-slave
volumes:
- $PWD/data/test_case:/test_case
- $PWD/data/backend/test_case:/test_case
- $PWD/data/rsync_slave:/log
environment:
- RSYNC_MODE=slave
- RSYNC_USER=ojrsync
- RSYNC_PASSWORD=CHANGE_THIS_PASSWORD
- RSYNC_MASTER_ADDR=YOUR_BACKEND_ADDR
```
需要对`environment`里的变量根据实际情况进行修改:
!> 请同步修改 `RSYNC_PASSWORD`,并将 `RSYNC_MASTER_ADDR` 修改为运行了 `oj-rsync-master` 服务的地址,不需要端口号,如 `example.com` 或者 `192.168.1.10`
+ `service_url`: 将`judge-server`改为OJ后台所在服务器的地址默认为8080端口
+ `service_discovery_url`: 将`oj-backend`改为本地地址
+ `TOEKN` 需要与后台的`JUDGE_SERVER_TOEKN`保持一致
+ `RSYNC_USER`和`RSYNC_PASSWORD`与上面的相同
然后给 JudgeServer 添加
运行`docker-compose up -d`即可启动一台新的JudgeServer
```
ports:
- "0.0.0.0:80:8080"
```
的端口配置,同时还需要修改
- `SERVICE_URL` 为新的机器的地址
- `BACKEND_URL` 的域名为已部署好的主机的地址
- `TOKEN` 和已部署好主机 `TOKEN` 一致。
运行 `docker-compose up -d` 即可启动一台新的 JudgeServer`tail -f data/rsync_slave/rsync_slave.log` 可以看到测试用例同步进度,在已部署好主机的后台可以看到新的 JudgeServer 的心跳状态。