From d1a560b9f835a2d6731f045d007cd6404d063985 Mon Sep 17 00:00:00 2001 From: virusdefender Date: Fri, 22 Dec 2017 22:51:44 +0800 Subject: [PATCH] update docs --- docs/onlinejudge/guide/multi_judge_server.md | 75 ++++++++------------ 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/docs/onlinejudge/guide/multi_judge_server.md b/docs/onlinejudge/guide/multi_judge_server.md index 04e99f9..2f4d2c1 100644 --- a/docs/onlinejudge/guide/multi_judge_server.md +++ b/docs/onlinejudge/guide/multi_judge_server.md @@ -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 的心跳状态。