# 多个判题机
# 前言
不同判题机之间是通过rsync进行数据同步的,所以需要配置相应的rsync服务。
同时注意以下两点:
- 保证rsync-slave服务的密码与主服务rsync-master的数据同步密码一致
- rsync-slave服务(判题机服务器)拉取主服务rsync-master的评测数据是每100s一次,所以后台上传评测数据后,需等待大概100s才能正常判题。
# 单体部署
如果之前是选择了单体部署,也就是主服务器既有backend和judgeserver服务,那么部署更多不同服务器的判题机应该如下修改:
在原先运行的服务器上,修改
hoj-deploy/standAlone
文件夹里面的docker-compose.yml
,添加以下rsync-master服务,数据同步密码请自行修改,如下:hoj-rsync-master: image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0 container_name: hoj-rsync-master volumes: - ./hoj/testcase:/hoj/testcase:ro environment: - RSYNC_MODE=master - RSYNC_USER=hojrsync - RSYNC_PASSWORD=hoj123456 # 请修改数据同步密码 ports: - "0.0.0.0:873:873"
1
2
3
4
5
6
7
8
9
10
11在其它服务器(判题机服务器)中使用docker-compose运行judgeserver服务,具体操作如下:
下载文件,进入到指定文件夹
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy/distributed/judgeserver
1修改配置
.env
文件,里面的nacos参数,judgeServer,rsync的参数请正确修改!# nacos的配置 # 修改为nacos所在服务的ip NACOS_HOST=NACOS_HOST # 修改为nacos启动端口号,默认为8848 NACOS_PORT=8848 # 修改为nacos的管理员账号 NACOS_USERNAME=root # 修改为nacos的管理员密码 NACOS_PASSWORD=hoj123456 # judgeserver的配置 #修改为当前服务器公网ip JUDGE_SERVER_IP=172.20.0.7 JUDGE_SERVER_PORT=8088 JUDGE_SERVER_NAME=judger-1 # -1表示最大并行任务数为cpu核心数*2 MAX_TASK_NUM=-1 # 当前判题服务器是否开启远程虚拟判题功能 REMOTE_JUDGE_OPEN=true # -1表示最大并行任务数为(cpu核心数*2)*2 REMOTE_JUDGE_MAX_TASK_NUM=-1 # rsync评测数据同步的配置 # 写入主服务器ip RSYNC_MASTER_ADDR=127.0.0.1 # 与主服务器的rsync密码一致 RSYNC_PASSWORD=hoj123456
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27启动即可
docker-compose up -d
1
# 分布式部署
如果之前已经选择了分布式部署,那么增加判题机,则与原先启动判题机的操作一样即可,在新的服务器上操作如下:
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy/distributed/judgeserver vim .env
1
2修改
.env
的配置# nacos的配置 # 修改为nacos所在服务的ip NACOS_HOST=NACOS_HOST # 修改为nacos启动端口号,默认为8848 NACOS_PORT=8848 # 修改为nacos的管理员账号 NACOS_USERNAME=root # 修改为nacos的管理员密码 NACOS_PASSWORD=hoj123456 # judgeserver的配置 #修改为当前服务器公网ip JUDGE_SERVER_IP=172.20.0.7 JUDGE_SERVER_PORT=8088 JUDGE_SERVER_NAME=judger-1 # -1表示最大并行任务数为cpu核心数*2 MAX_TASK_NUM=-1 # 当前判题服务器是否开启远程虚拟判题功能 REMOTE_JUDGE_OPEN=true # -1表示最大并行任务数为(cpu核心数*2)*2 REMOTE_JUDGE_MAX_TASK_NUM=-1 # rsync评测数据同步的配置 # 写入主服务器ip RSYNC_MASTER_ADDR=127.0.0.1 # 与主服务器的rsync密码一致 RSYNC_PASSWORD=hoj123456
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27修改完保存,启动即可。
docker-compose up -d
1