Windows HPC Cluster 구축 절차

본 포스팅은 단순 설치 및 기초 테스트만을 목적으로 하며, 기타 설정 등은 생략한다.

HPC에 대한 상세한 설명은 다른 인터넷 사이트에 많으니 넘어가도록 하고, 심플하게 테스트 환경을 구축하기 위해서 Proxmox 위에서 윈도우 VM 두 개를 사용하여 구축하기로 결정하였다.

1. Windows Server 2019 (Head)
2. Windows 10 Pro (Workstation)

심플하게 위의 두 노드를 사용하여 HPC 환경을 구축하고 테스트를 진행하고자 한다.

1. Windows 설치

사실 Windows 설치는 쉽다. 어려운게 전혀없이 Next만 눌러주면 되는 일이므로 여기서는 생략한다.

단, Windows Server 2019에서 Head 설치 시… 이상하게 디스플레이 언어를 한국어로 설정하면 HPC 2019 Server Component 설치 시 오류가 발생하니, 영어로 설정해야 한다. (한글로 설치 후 영어로 변경할 경우 오류가 발생하는 경우도 있었음.)

윈도우 10의 경우 한글로 설정하여도 정상 설치되는 것을 확인하였다.

2. Head 노드 준비(기본 설정 및 Active Directory 설치)

위의 화면을 보면 Windows Server 2019를 설치하고 난 직후의 화면이다. 위의 화면이 나온 상태에서 기본적인 IP 설정과 컴퓨터 이름을 설정하도록 한다.

IP 설정은 상단 우측처럼 고정 IP를 할당하였고, 서브넷과 게이트웨이를 입력해주었다. DNS는 자기가 사용하는 DNS를 입력하면 된다. 그리고 컴퓨터 이름은 HEAD로 정해주었다.

위와 같이 설정하고 나면 재부팅을 권유한다. 재부팅을 해주자. 다음은 Active Directory를 설치해줘야 한다.

재부팅 후, 잠시 기다리면 서버 매니저가 실행되는데 이 때 실행되지 않는다면 시작 버튼을 눌러 Server Manager를 실행해준다. 잠시 기다렸다고 로딩이 완료되면 아래 순서로 설치를 진행한다.

1. Quick Start
2. (2) Add roles and features
3. Next
4. Role-base or feature-based installation 선택 후, Next
5. HEAD 노드 선택 후, Next
6. Active Directory Domain Services 선택
7. Add Feature 선택 후, Next
8. DNS Server 선택
9. Add Features 선택
10. Next
11. Next
12. Next
13. Install 클릭 후, 설치가 완료 될 때까지 대기
14. 완료 후, "Promote this server to a domain controller" 클릭
15. "Add a new forest" 선택 후, 도메인 명 입력, Next 클릭
16. 복구용 패스워드 및 패스워드 확인 입력 후, Next 클릭
17. Next 클릭
18. 대기 후, 도메인 명이 나타나면 확인, Next 클릭
19. Next 클릭
20. Next 클릭
21. Install 클릭 후 자동 재부팅

3. Head 노드 설치

HEAD 노드가 제부팅 되면, 로그인 화면이 [설정한_도메인]/administrator 로 뜨게 될 것이다.

이 상태에서 이제 HPC Pack 2019를 설치한다. 다운로드 링크는 아래와 같다.

위의 링크에서 설치 파일을 다운받아서 압축을 푼 후에 setup.exe를 실행해준다. 본 포스팅에서는 refreshed 버전을 다운받아 설치하였다.

1. 다운로드
2. 압축해제
3. setup.exe 실행
4. "New installation or add new features to an existing installation" 선택
5. Next 클릭
6. 동의하고 Next 클릭
7. 제일 위의 "Create a new HPC cluster by creating a head node" 선택 후, Next 클릭
8. HEAD 노드 타입을 결정하고 Next 클릭, 본 포스팅에서는 하나의 HEAD 노드만 사용할 것이므로 제일 아래의 옵션을 선택하고 Next 클릭
9. 다 녹색으로 뜨는 것을 확인하고 Next 클릭
10. Head 노드에서 모든 데이터베이스를 관리 할 것이므로 전체 선택 후, Next
11. 데이터베이스 세팅, Next
12. 데이터베이스 저장 위치, 기본으로 설정하고 Next... 잠시 기다려야합니다.
13. HPC 설치 디렉토리 설정, 기본으로 설정하고 Next
14. SSL 키를 불러오기 위해서 Import 클릭
15. 별도의 키가 없으므로 자체적으로 생성함을 클릭하고 원하는 이름을 지정, 본 포스팅에서는 기본값 사용. Create 클릭
16. Next 클릭
17. Azure 서비스와 연동을 위한 부분이나, 본 포스팅에서는 사용하지 않으므로 Next
18. 설치할 컴포넌트 목록을 보여줌. Install 클릭. 설치되는 동안 대기
19. 마지막으로 Finish를 클릭하여 HPC Cluster Manager를 실행한다.
20. "Configure your network"를 실행해 네트워크를 설정한다.

21. 네트워크 토폴로지에 따라 설정을 해준다. 본 포스팅에서는 하나의 네트워크에 병렬로 연결되므로 5번을 선택하고 Next를 누른다.

22. 네트워크 어뎁터를 선택한다. 본 포스팅에서는 하나의 네트워크 디바이스만 있으므로 Next를 누른다.
23. 방화벽을 자동으로 설정할지 수동으로 설정할지 정한다. 자동이 추천이므로 추천으로 진행한다. Next를 누른다.
24. 설정 내용을 확인하고 Configure를 눌러 설정한다.
25. Finish를 눌러 종료한다.
26. 아이디/패스워드를 입력하여 관리자 권한을 획득한다.
27. 도메인 이름을 붙여서 administrator로 로그인한다. 본 포스팅에서는 "UNKNOWN-TEST\administrator가 아이디로 쓰인다.
28. 마지막으로 새로운 노드 추가 시 할당할 이름을 설정한다.
29. 기본설정은 해당 노드 이름 뒤에 1000번 부터 시작하도록 되어 있다.
30. 노드 이름이 NODE로 시작하고 숫자는 01부터 시작하도록 설정하였다.

4. Compute Node, Workstation Node 설치 전에

HEAD 노드의 설치가 완료되었다면, 이제 Compute 혹은 Workstation 노드를 설치할 차례다. 그래도 클러스터인데 한 대는 더 연결되어 있어야 하지 않겠는가.

추가 노드를 설치하기 전에 설명할 것이 하나, 해야할 일이 하나 있다.

설명할 것은….

HEAD 노드를 설치하고 나면, 공유폴더가 활성화 된다. HEAD 노드를 설치할 때 처럼 다운로드를 받거나 할 필요 없이 해당 공유폴더에 들어가서 작업을 수행하면 되는 것이다. 공유폴더의 접근 방법은 파일 탐색기 패스 입력 부분에

\\head.unknown-test.com

을 입력해주면 된다. 제일 앞에 \\ 를 써주고 그 다음에 HEAD 노드 이름, 그 다음에 ., 그 다음에 도메인 이름을 적어주면 된다.

위의 화면이 HEAD 노드에 접속한 모습인데 그 중 REMINST 폴더에 설치파일이 들어 있다. 그리고 여기에 해야할 것을 통해 생성된 파일을 넣어줄 것이다.

해야할 것은…

HEAD 노드 설치 중에 만든 SSL키가 기억이 나는가? 해당 SSL 키가 있어야 다른 노드도 설치할 수 있기 때문에 해당 키를 추출해야 한다. 그래서 “마이크로소프트 매니지먼트 콘솔”을 이용해서 해당 키를 추출한다.

마이크로소프트 매니지먼트 콘솔을 실행하는 방법은 “시작 키” + R 을 눌러서 실행창을 실행해주고 mmc를 입력 실행해주면 된다.

위와 같이 콘솔화면이 뜨면 먼저

1. 상단 메뉴 File에서 "Add/Remove Snap-in..."을 선택해준다.
2. 왼쪽 항목 중 Certificates를 더블 클릭
3. 컴퓨터 전체의 인증서를 보기 위해서 Computer account를 선택
4. 현재 컴퓨터를 선택
5. OK 클릭
6. Certificates(Local Computer) -> Personal -> Certificates를 선택하여 HEAD 노드 설치 시 생성한 인증서가 존재하는지 확인
7. 해당 인증서를 오른쪽 클릭한 후, All Tasks 아래 Export...를 클릭
8. Next 클릭
9. Yes, export the private key 선택 후, Next
10. 최하단의 "Enable certificate privacy"를 체크해제하고 Next
11. 패스워드를 체크하고 패스워드와 패스워드 확인을 입력한 후, Next
12. 파일 저장할 곳을 정하기 위해 Browse... 클릭
13. 직전에 설명한 공유폴더로 이동하기 위해 주소창에 "\\[HEAD NODE NAME].[DOMAIN_NAME]" 입력. 본 포스팅에서는 "\\head.unknown-test.com"
14. REMINST 폴더로 이동
15. Certificates 폴더로 이동
16. 해당 폴더에 HEAD_KEY라는 파일명을 입력하고 Save 클릭
17. Next 클릭
18. Finish 클릭 후 콘솔 닫기. 닫을 때 별도의 저장은 필요 없음.

5. Workstation 노드 설치

Compute 노드를 설치하기 위해서는 별도의 Windows Server 2019를 설치하고 진행하면 되지만 어차피 Workstation 노드 설치와 동일하므로 생략하고 Workstation 노드를 설치해본다.

1. Workstation 노드로 사용할 윈도우 10을 켜준다.
2. 설정 -> 네트워크 및 인터넷 -> 이더넷 인스턴스 0 속성으로 이동하여 IP 설정에서 IP와 서브넷 게이트웨이를 설정하고, DNS를 설정한다. 이 때 DNS는 HEAD 노드 아이피를 입력한다.
3. 설정 -> 시스템 -> 정보로 이동하여 "이 PC의 이름 바꾸기(고급)"을 클릭한다.
4. 변경을 클릭한다.
5. 컴퓨터 이름을 NODE1으로 수정하고 도메인을 선택, HEAD에 사용된 도메인을 입력한다. 본 포스팅에서는 unknown-test.com으로 입력하였다.
6. 아이디 / 패스워드 입력창이 뜨면 HEAD 노드의 사용자명과 패스워드를 입력해준다.
7. 정상 적용이 된 것을 확인하고 확인을 누른다. 재부팅하면 적용되므로 재부팅을 수행한다.
8. 컴퓨터 재부팅이 완료된 후, 파일 탐색기를 열고 "\\head.unknown-test.com"을 입력하여 HEAD의 공유폴더로 접근한다.
9. HEAD 노드의 아이디 / 패스워드를 입력하고 귀찮으므로 내 자격 증명 기억을 누른다.
10. REMINST 폴더로 들어간다.
11. setup을 실행해준다. 실행 여부를 물어보는데 모두 예를 누른다.
12. 반가운 화면이다. 제일 위에 "New installation..."을 눌러준다.
13. Next
14. 동의 후, Next
15. 설치할 Workstation 노드를 선택한 후, Next
16. 설치 요건 확인 후, Next
17. HEAD 노드를 입력해준다. 노드 이름만 적어줘도 되는 것으로 보이지만, 네트워크 문제인지 도메인까지 적어주지 않으면 오류가 발생해 도메인까지 적어주었다. 만약 여러대의 HEAD 노드가 있다면 콤마로 구분해 적어주면 된다. 입력 후, Next
18. 설치 위치는 기본으로 하고, Next
19. SSL 인증서를 불러오기 위해 Import...를 클릭해준다.
20. Browse...를 눌러 인증서 파일을 찾는다.
21. 주소 창에 HEAD 주소를 입력하여 HEAD 공유폴더로 이동
22. REMINST 폴더로 이동
23. Certificates 폴더로 이동
24. 4번 챕터에서 만든 HEAD_KEY를 선택하고 열기해준다.
25. 4번 챕터에서 만든 HEAD_KEY 암호를 입력하고 Import를 눌러준다.
26. Next
27. Install 클릭 후, 설치 완료 시 까지 기다린다.
28. Finish를 눌러 종료한다.

6. Workstation 노드 연결

Workstation 노드 설치가 끝났다면, HEAD 노드로 돌아가 Workstation 노드를 연결해준다.

1. HEAD 노드에서 HPC Cluster Manager를 실행해준다.
2. 노드 템플릿을 생성하기 위해 Node Templates로 이동한다.
3. 새로운 템플릿 생성을 위해 New를 눌러준다.
4. Workstation node를 선택한 후, Next
5. 이름과 설명을 적은 후, Next
6. 노드를 언제 온라인으로 시킬지 정하는 부분이다. 기본값은 수동으로 되어 있으나, 전용으로 사용한다면 자동으로 선택하고 스케쥴을 지정한다.
7. 하단의 자동을 클릭하고, 아래쪽 설정을 눌러 준다.
8. 본 예제에서는 모든 시간에 동작하도록 설정한 화면이다. 마우스 클릭 및 드래그로 설정할 수 있다. Save를 누르고 종료한다.
9. Next
10. 최종 설정을 확인하고 Create를 눌러준다.
11. 노드 추가를 하기 위해 Resource Management로 이동한다.
12. NODE01이 화면에서 벌써 보이나, 아직 추가가 되지 않은 상태이다. 해당 노드를 클릭한다.
13. Add node wizard를 클릭한다.
14. Workstation을 선택하고 Next
15. Next
16. 추가를 원하는 노드를 선택하고 Add를 클릭
17. Finish 클릭
18. 잠시 기다린 후, 상단의 Node를 눌러 NODE01이 online 상태가 되었는지 확인한다.

6. 테스트용 코드 작성

테스트를 위해서 배치 파일을 하나 작성한다. 이 배치 파일의 역할은 단순하다. 실행하면 자기 이름을 말하고 옵션으로 받은 값을 출력하는 배치 파일이다.

1. HEAD 노드의 공유폴더로 이동한다.
2. REMINST 폴더로 이동한다. 
3. 테스트 폴더를 생성한 후, 테스트 폴더로 들어간다.
4. 상단 메뉴 View, 보기에서 파일 확장자 보이기를 체크한다. 
5. 마우스 오른쪽 클릭 후, NEW -> Text Document를 선택한다.
6. 파일 이름을 test.bat으로 하고 뒤에 txt가 안 붙도록 지워준다.
7. 경고가 뜨면 Yes를 눌러준다.
8. 해당 파일을 오른쪽 클릭 한 후, Edit을 눌러 편집을 실행한다.
9. 경고가 뜨면 Run을 클릭한다.
10. 메모장이 뜨면 위와 같이 코드를 입력한다. 코드는 아래와 같다.
@Echo off

echo %COMPUTERNAME% %1
11. 파일을 저장하고 닫는다.

7. 테스트용 코드 실행 및 확인

먼저 테스트용으로 설치한 클러스터가 두대로 구성되어 있으므로 HEAD도 작업에 참여하도록 설정한 후, 새로운 작업을 생성하여 테스트 코드를 실행한다.

1. Cluster Manager를 실행한 후, Resource Management로 이동한다. 
2. HEAD 노드를 선택한다.
3. Bring Online 버튼을 눌러 Online 상태로 변경한다.
4. 모두 온라인 상태가 된 것을 확인하고 "Job Management"로 이동한다.
5. "New Job"을 클릭한다.
6. 원하는 이름을 입력한 후, Edit Tasks로 이동한다.
7. Add 옆에 화살표를 클릭하여 메뉴를 연다.
8. Parametric Sweap Task...를 선택한다.
9. 실행 창이 뜨면 먼저 실행 위치를 정하기 위해 Working directory에 공유폴더 패스를 입력한다. 본 포스팅에서는 \\head.unknown-test.com\REMINST\TEST 폴더이다.
10. 상단 명령창에 "test.bat *"으로 입력한 후, OK를 눌러준다.
11. 작업이 추가된 것을 확인 한 후, 하단 Submit을 눌러준다.
12. 잠시 기다린 후, 작업이 완료되면 해당 작업을 더블클릭하여 결과를 확인한다.
13. 결과는 View Tasks에서 확인 가능하다. View Tasks를 클릭한다.
14. 최상단의 내용이 전체 요약이고 그 하위에 실제 작업 내용이 나열되어 있으니, 확인하면 된다.

이렇게 Microsoft HPC Cluster를 VM으로 구축해보았다. 실제 테스트를 해보니 각각의 노드에 분산되어 동작하는 것을 확인할 수 있었다.

한글로 된 메뉴얼을 찾을 수 없어 이렇게 작성해본다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다