mirror of
https://github.com/QingdaoU/oj-docs.git
synced 2024-12-28 07:21:43 +00:00
update docs
This commit is contained in:
parent
07bd66ecb5
commit
d1a560b9f8
@ -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 的心跳状态。
|
||||
|
Loading…
Reference in New Issue
Block a user