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 root@判題機ip:/home/judge/
複制代碼 或用同步指令。
- rsync -vzrtopg --progress --delete /home/judge/data root@判題機ip:/home/judge/
複制代碼 判題機從主機複制
- scp -r root@主機ip:/home/judge/data /home/judge/
複制代碼 或用同步指令。
- rsync -vzrtopg --progress --delete root@主機ip:/home/judge/data /home/judge/
複制代碼 最後,在各判題機重新開機判題程式。
- sudo pkill judged&&sudo judged
複制代碼
虛拟機測試,用3台虛拟機+1台真機,4機同步判題