기본 준비
이번 글에서는 노드들을 만든 후 연결해서 hello world를 출력하는 작업까지 제출을 해볼 것이다. 이를 위해 central 노드, submit 노드, execute 노드 이렇게 3가지 역할을 만든 후 연결할 것이다.
노드 구성
지난 글에서 진행한 방법으로 5개의 노드를 만들었다.
노드 구성은 다음과 같다
- 1개의 central 노드
- 1개의 submit 노드
- 3개의 execute 노드
3개의 execute 노드를 만들었지만 1개만 쓸꺼다! 다음 글부터 execute 노드를 모두 연결해볼 예정이다.
여기서 ssh연결을 이용하여 접속하기 위해virsh net-dhcp-leases default명령어를 통해 각 노드의 주소를 확인했다.
방화벽 설정
각 노드에서 방화벽 설정을 진행해 주어야 한다. HTCondor에서 노드끼리 통신하는방법은 기본적으로 TCP이며, 9618번 포트를 사용한다.
설치에 앞서 방화벽 설정을 먼저 해주지 않는 경우 HTCondor 설치 후 제대로 연결이 안될 수 있으니 방화벽 설정부터 진행하자. 본 글에서는 firewalld를 사용할 것이다.
Firewalld 설치 및 실행
아래 명령어를 통해 firewalld 를 설치하도록 하자
sudo apt update
sudo apt install firewalld
이후 아래의 명령어를 통해firewalld를 시작하고 자동실행이 될 수 있도록 설정해줄 것이다.
sudo systemtcl enable --now firewalld
잘 설치되고 실행되었다면 아래의 명령어를 통해 다음과 같은 화면을 확인할 수 있다.
sudo systemctl status firewalld

포트 개방
firewalld의 설치 및 실행이 끝났으므로 이제 사용할 포트인 9618번 포트를 개방해야 한다. 아래와 같은 명령어를 통해 가능하다.
sudo firewall-cmd --permanent --add-port=9618/tcp
success가 뜨면 성공이다.
이후 리로딩을 한번 해주어야 한다.
sudo firewall-cmd --reload
Node 설정
포트개방이 끝났으면 이제 HTCondor를 설치하고 각 노드를 연결할 시간이다. 이번 글에서는 연결 및 테스트 실행까지 진행을 할 예정이며 자세한 config 설정은 다음 글에서 진행하도록 하겠다.
Central Node 설정
먼저 중심이 되어줄 Central 노드를 설정해 줄 것이다. 공식 레퍼런스에서 제공하는 방법으로 아래의 명령어를 사용할 것이다.
curl -fsSL https://get.htcondor.org | sudo GET_HTCONDOR_PASSWORD="PASSWORD" /bin/bash -s -- --no-dry-run --central-manager <central node address | CONDOR_HOST>
CONDOR_HOST 부분은 central node의 IP 주소를 입력해주면 되며, 비밀번호는 자유롭게 바꾸면 된다.
이후 config 설정을 확인해주기 위해 아래와 같이 condor를 재시작해주면 좋다.
sudo systemctl restart condor
Submit Node 설정
submit node에서도 설정은 유사하다. central node에서 설정하던 것과 비슷한 명령어를 입력하는데 역할이 --central-manager에서 --submit으로 바뀌었을 뿐이다.
curl -fsSL https://get.htcondor.org | sudo GET_HTCONDOR_PASSWORD="PASSWORD" /bin/bash -s -- --no-dry-run --submit <central node address | CONDOR_HOST>
여기서도 여전히 central manager의 주소를 입력해 주어야 한다.
submit 노드도 config 설정을 다시 넣어주기 위해 condor를 재시작해주자
sudo systemctl restart condor
Execute Node 설정
여기서도 submit노드와 동일한 방법으로 진행하면 된다.
curl -fsSL https://get.htcondor.org | sudo GET_HTCONDOR_PASSWORD="PASSWORD" /bin/bash -s -- --no-dry-run --execute <central node address | CONDOR_HOST>
execute 노드도 config 설정을 다시 넣어주기 위해 condor를 재시작해주자
sudo systemctl restart condor
연결 확인 및 테스트
연결 확인
submit 노드와 execute 노드 모두 동일한 작업을 마쳤다면 central 노드에서 condor_status를 치면 아래와 같은 결과를 얻을 수 있을 것이다.

어떤 노드에서 치더라도 전체 상황이 나오게 되며, 현재 execute 노드가 유휴 상태임을 알 수 있다. 여기서 submit노드에서 5초 휴식 후 Hello World를 출력하는 스크립트를 작성해 제출해보자
테스트
이전 장에서 central은 매칭의 역할을, submit 노드에서는 작업 제출의 역할을 그리고 execute 노드에서는 작업 실행의 역할을 맡는다고 했다.
아래와 hello.sh 같은 스크립트를 작성해보자
#!/bin/bash
sleep 5
echo "Hello World"
이 파일에chmod +x hello.sh를 통해 실행권한을 부여하고 작업queue에 넣기 위해 hello.sub 를 작성할 것이다. 해당 파일을 작업 queue에 넣게 되면, 이를 받아 central_manager에서 매칭을 진행하고 결과적으로 execute node에서 실행된다.
아래는 hello.sub이다.
executable = hello.sh
output = out/hello.out
error = err/hello.err
log = log/hello.log
queue
각 요소에 대해서는 아래와 같다
- executable = 실행할 작업 파일
- output = 출력 결과를 저장할 파일
- error = 에러 결과를 저장할 파일
- log = 로그를 저장할 파일
- queue
<cnt>= 위의 작업을<cnt>번 제출함(없을 시 1번으로 간주)
이제condor_submit명령어를 이용해 작업을 제출해보자
작업을 제출한 후condor_submit hello.subcondor_q명령어를 입력하면 현재 작업 queue의 상황을 알 수 있다.hello.sub파일에서 queue 값을 5로 준후 condor_q를 하면 아래와 같은 화면을 볼 수 있다.

실행중인 것과 아직 실행되지 않은것, 끝난 것을 확인할 수 있다.
결과는 hello.sub에서 적은대로 output/hello.out에서 확인이 가능하다.
'Study Notes > HTCondor' 카테고리의 다른 글
| 1. SVM 을 이용한 VM 설정 (0) | 2025.08.03 |
|---|---|
| 0. HTCondor와 그 구조 (0) | 2025.08.01 |
댓글