2021.02.14 - [Domjudge] - Domjudge 7.3 - 3rd (Judgehost 연결)
Domjudge 7.3 - 3rd (Judgehost 연결)
1st, 2nd에서 DOMserver를 실행시키고 관리자로 로그인해보았습니다. 마지막으로 제출된 코드를 채점해주는 Judhost를 연결해주겠습니다. Docker Hub에 게시되어 있는 공식 메뉴얼에는 단일 judgehost를 실
heo-seongil.tistory.com
이전 글(3rd)에서 실행중인 domsever에 judgehost를 연결했습니다.
정상적으로 잘 실행되었습니다.
그런데 참가자가 제출한 submission에 대한 피드백에서 두가지 문장이 항상 출력되는 것을 확인하였습니다.
대회 운영에 문제가 될 부분은 전혀 없지만 참가자 입장에서 오답을 제출했을 때 자신의 코드이상이 아닌 서버의 이상이라고 생각할 수도 있기 때문에 해당 메시지가 출력 되지 않도록 해야될 것 같습니다.
그래서 judgehost 컨테이너를 실행할 때 로그를 다시 확인하니 이쪽에서도 출력이 되어있네요.
연결하는 과정에서 문제가 있겠구나하고 구글링을 해보았습니다.
그 결과 /etc/hostname 에 입력되어 있는 이름과 /etc/hosts 에 로컬 IP로 지정되어 있는 호스트 이름이 달라 생기는 문제로 두 곳의 호스트명을 일치시켜주면 해결할 수 있다고 합니다.
docker exec -it judgehost bash
위의 명령어로 docker container에 hosts, hostname 파일을 확인해보겠습니다.
두가지 파일이 의미하는 것을 찾아보았습니다.
먼저 hostname
호스트 네임(Hostname, NodeName)이란, 네트워크에 연결된 장치들에게 부여되는 각각의 고유한 이름
/etc/hosts
/etc/hosts 파일은 도메인 네임 주소를 해석할때 가정 먼저 참고하는 곳입니다. 캐시역할을 하며, 여기서 찾고자 하는 해당 도메인과 ip주소를 찾을 수 있으면 해당 주소를 반환합니다. 소규모 내부 네트워크에서는 해당 파일을 통해서 DNS 역할을 할 수 있습니다.
(127.0.0.1은 자기 자신을 의미하는 localhost를 의미하며, 127.0.1.1은 자신의 컴퓨터 이름을 의미합니다.)
docker container의 hostname와 실제 컴퓨터이름이 같아야 되겠네요.
$ sudo docker run -it --network host --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost --hostname judgedaemon0 -e CONTAINER_TIMEZONE=Asia/Seoul -e DOMSERVER_BASEURL=http://3.35.210.229/ -e JUDGEDAEMON_USERNAME=judgehost -e JUDGEDAEMON_PASSWORD=judgehostpw -e DAEMON_ID=0 -e RUN_USER_UID_GID=62860 domjudge/judgehost:latest
이전에 실행 명령어를 이렇게 입력했는데 --hostname judgedaemon0 지워주시면 됩니다.
$ sudo docker run -it --network host --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost --hostname judgedaemon0 -e CONTAINER_TIMEZONE=Asia/Seoul -e DOMSERVER_BASEURL=http://3.35.210.229/ -e JUDGEDAEMON_USERNAME=judgehost -e JUDGEDAEMON_PASSWORD=judgehostpw -e DAEMON_ID=0 -e RUN_USER_UID_GID=62860 domjudge/judgehost:latest
관리자 페이지에서 확인해보면
hostname이 변경된 것을 확인할 수 있고 아래 사진을 보면 참가자 입장에서도 오류 메시지가 출력되지 않는 것을 확인할 수 있습니다.
이후에는 Domjudge로 부분채점하는 기능을 추가해보겠습니다.
'Domjudge' 카테고리의 다른 글
Domjudge 7.3 - 3rd (Judgehost 연결) (0) | 2021.02.14 |
---|---|
Domjudge 7.3 - 2nd (Mariadb, DOMserver Docker container실행) (0) | 2021.02.13 |
Domjudge 7.3 - 1st (AWS EC2실행 및 Docker 설치) (1) | 2021.01.01 |