HUSTOJ-建立分布式判题系统
原文:http://blog.csdn.net/zhblue/article/details/7366381
HUSTOJ 支持一台数据库服务器,多台web服务器和多台判题服务器,以承担较高的访问负荷。
首先,需要创建用于从远程连接数据库的帐号。
- GRANT ALL PRIVILEGES ON jol.* TO 'judge'@'%'
- IDENTIFIED BY 'judge_pass' WITHOUT GRANT OPTION;
-
flush privileges
其中jol为数据库,judge为帐号,judge_pass为密码。
注意:
检查/etc/mysql/my.cnf 确保
- bind-address = 0.0.0.0
高负载的情况下最好设置更多的连接数。
max_connections = 512
其次,配置各web程序连接到数据库。
修改include/db_info.inc.php
- static $DB_HOST="数据库服务器ip";
- static $DB_NAME="jol";
- static $DB_USER="judge";
- static $DB_PASS="judge_pass";
第三,配置各判题程序连接到数据库,分配任务。
- OJ_HOST_NAME=数据库服务器ip
- OJ_USER_NAME=judge
- OJ_PASSWORD=judge_pass
- OJ_DB_NAME=jol
- ...
- OJ_TOTAL=判题机总数
- OJ_MOD=本机编号,从0开始
- ...
其中OJ_TOTAL=判题机总数,OJ_MOD=本机编号,从0开始,例如
有3台机器判题,分别编号0,1,2
OJ_TOTAL都设为3,OJ_MOD分别设为0,1,2
* 自R784版本开始,不再需要分别配置OJ_TOTAL和OJ_MOD,全部设为1和0即可,所有正常工作的judge节点将自动分配当前任务。
第四,复制测试数据目录到各判题机。
先要准备好远程访问,在主服务器执行:
sudo apt-get install openssh-server
- scp -r /home/judge/data [email protected]判题机ip:/home/judge/
- rsync -vzrtopg --progress --delete /home/judge/data [email protected]判题机ip:/home/judge/
- scp -r [email protected]主机ip:/home/judge/data /home/judge/
- rsync -vzrtopg --progress --delete [email protected]主机ip:/home/judge/data /home/judge/
- sudo pkill judged&&sudo judged