업데이트일 : 2018-11-23 II. 컴퓨팅 3. HPC 목차 3.1 ucloud HPC 서비스소개 3.2 ucloud HPC FAQ 3.3 ucloud HPC 서비스이용방법 3.4 사용자환경설정방법 3.5 컴퓨팅서버증가및삭제방법 3.6 Job 실행예제 3.7 문제해결방법 3.8 ucloud HPC 동영상 3.1 ucloud HPC 서비스소개 본문서는 KT ucloudbiz 의상품서비스읶 ucloud HPC 서비스중 PBS Professional 을활용하는방법에대해문서화합니다. 3.1.1 목적 본문서는 KT ucloud biz 의 ucloud HPC 서비스를사용할수있도록 NFS, NIS 서비스설정 / 실행및 PBS Professional, Compute Manager 의세부실행및설정하는방법을설명하는데목적이있습니다. 3.1.2 범위 본문서에서는 kt cloud 환경에서서비스읶 ucloud HPC 를사용할수있는방법을설명하고있습니다. ㅁ문서의사용범위ㅇ NFS, NIS 서비스구동방법ㅇ PBS Professional 사용방법ㅇ Compute Manager 사용방법ㅇ Hyperworks 사용방법 ㅁ서비스를사용하기전에ㅇ본가이드는사용자가기본적인 Linux 홖경에익숙하다는전제하에서작성되었습니다. ㅇ본가이드는사용자가기본적인 HPC 를구성하는 Cluster 환경에익숙하다는전제하에서작성되었습니다.
3.1.3 ucloud HPC 서비스요약 ㅁ HPC 서비스는많은양의계산을하거나데이터를저장하기위해여러대의가상머신을하나의클러스터로묶어제공합니다. ㅁ이러한클러스터는컴퓨팅리소스를제공하는가상머신읶계산노드들과계산노드들을서로연결하여단일시스템처럼보이게하는관리자읶헤드노드로구성됩니다. ㅁ사용자는헤드노드에문제를해결하기위한작업 (Job) 을제출하며, 헤드노드는우선순위와현재계산노드의사용량에따라서필요한자원을할당하여 (scheduled) 계산노드들에작업을분배합니다. ㅁ계산된결과는헤드노드를통해서리포팅을받을수있습니다. ㅁ Compute Manager 는이러한일련의작업과정을 GUI 를통해서제어핛수있도록도와줍니다. ㅁ Compute Manager GUI 콘솔내에서 Hyperworks 서비스를통해제공하는솔루션패키지를사용할수있습니다. * 용어설명 ㅁ헤드노드 : 다수의계산노드를관리하는역할을수행하는 HPC 제어용컴퓨터ㅁ계산노드 : 헤드노드의제어로대규모연산작업을수행하는계산용컴퓨터ㅁ Compute manager : 기존의텔넷과 FTP 로수행되던명령어실행과파일전송기능을간단한웹브라우저조작으로수행하게해주는웹서비스ㅁ Hyperworks : Altair Hyperworks 는오픈아키텍처기술에기반한 CAE(Computer Aided Engineering) 기업솔루션패키지제품 ( 전 / 후처리기로세계시장점유율 1 위인 HyperMesh 와 HyperView 가있으며,OptiStruct, Radios, Acusolve, MotionSolve, FEKO 등의각분야전문솔버들을포함하여, 20 여개의다양한 CAE 솔루션으로구성 ) 3.2 ucloud HPC FAQ 3.2.1 ucloud HPC FAQ ㅁ ucloud Server 와 ucloud HPC(High Performance Computing) 의차이점이무엇인가요? ㅇ ucloud HPC 는 ucloud Server 와동일한템플릿을사용하며기본 OS 도동일합니다. 리눅스계열 CentOS 위에클러스터구성, 환경설정, Job 스케쥴러설치등 HPC Job 실행을위한환경을자동으로구성하여제공합니다. ㅁ클러스터구성은몇대까지가능한가요? ㅇ Head 서버 1 대와 Computing 서버최대 30 대까지생성가능합니다. ㅁ Job 스케쥴러는어떤솔루션을사용하고있나요? ㅇ Altair 사의 PBSworks, Hyperworks 를사용하고있으며, 해당솔루션에서제공하는어플리케이션을직접실행할수있습니다. ㅁ실제로어떤 Job 을실행할수있나요? ㅇ기업 / 대학연구소에서시간이오래걸리는 HPC Job 을 Cloud 환경에서클러스터를자동으로생성하여유전체분석, 모바일어플리케이션개발시뮬레이션, 차량충돌시뮬레이션분석등빠른시간내에원하는결과를얻을수있습니다. 뿐만아니라, 분석한결과를 GPU 서버에서실행하여가시화해서볼수있습니다.
3.3 ucloud HPC 서비스이용방법 HPC 서비스를청약하면다음과같이 HPC Cluster 를제공하기위핚서비스가자동으로실행중입니다. 서비스설명설치위치 NFS Server 헤드노드는 Home directory 를 export 합니다헤드노드 NFS Client 계산노드에접속한사용자계정들은헤드노드에서제공하는 NFS 서버의 home 디렉토리를자동마운트합니다. 계산노드 NIS Server 헤드노드는 Home directory 를 export 합니다. 헤드노드 PBS Professional 사용자의작업요청을처리해줍니다. 헤드 / 계산노드 Compute Manager Compute Manager 를신청했을경우, 웹기반으로제어할수있습니다. 헤드노드 Hyperworks 선형, 비선형, 구조최적화, 유체구조상호작용및다물체동역학해석을위한작업실행환경을제공합니다. 헤드노드 3.3.1 PBS 서비스시작 헤드노드의 root 권한으로접속후서비스를시작및상태관리를할수있습니다. ㅁ헤드노드에서 PBS Professional 구동 ㅇ PBS Server 의경우, /etc/pbs.conf 설정에의해서 server 데몬과 sched 데몬이구동됩니다. 계산노드의경우, /etc/pbs.conf 설정에의해서 mom 데몬이구동됩니다. ㅇ PBS Server 의경우, postgres 를이용하며, 설치시설정된계정으로해당서비스를구동하며, 해당계정의 home 디렉토리가없는경우실패합니다. service pbs start ㅁ헤드노드에서 PBS Professional 구동확인 service pbs status
ㅁ헤드노드에서 Cluster 상태확인 ㅇ요청한계산노드의개수만큼노드가보이며, 각노드의 state 가 free 이면됩니다. pbsnodes -av 3.3.2 PBS 서비스중지 ㅁ헤드노드에서 PBS Professional 중지 ㅇ PBS Server 의 server 데몬과 sched 데몬이종료되어도, 계산노드의작업은계속해서구동이됩니다. ㅇ계산노드의 mom 이종료되는경우, 구동되고있던작업도같이종료되며, PBS Server 의경우, 설정에의해서해당작업은다시 re-queuing 되어ㅇ해당장비가사용가능할때까지대기열에서다시대기하게됩니다. service pbs stop ㅁ헤드노드에서 PBS Professional 구동확인 service pbs status
ㅁ헤드노드에서 Cluster 상태확인 ㅇ서비스가중지된상태로, 상태정보를업데이트할수없습니다. pbsnodes -av 3.3.3 PBS 서비스재시작 ㅁ헤드노드에서 PBS Professional 재시작 ㅇ재시작시기존에 pbs 가실행중이면중지후재시작합니다. 기존의 pbs 가미실행시에도중지명령을실행후시작합니다. service pbs restart 3.3.4 Compute Manager, Hyperworks 서비스시작 Compute Manager 는기존의헤드노드에서콘솔기반의서비스제어를웹을통해서수행할수있습니다.Hyperworks 는 Compute Manager 웹콘솔내부에서실행할수있습니다. Compute Manager 를실행하기위해서는 pas 서비스와 hweportal(cm 11.1 버전 ) 또는 pbsworks(cm 12.1 버젂 ) 서비스를시작하여야합니다. 최초청약시 Compute Manager 서비스를신청하였을경우, 해당서비스는자동으로설치되어있으며, 동작중입니다. Compute Manager 와 Hyperworks 서비스사용을위해서는라이선스정책적용이필요합니다. Altair(6.4 절기술지원문의처 ) 로문의해주시기바랍니다. Hyperworks 서비스사용을위한작업공간 (SSD 480GB) 을무료로제공하며데이터보관을위한 NAS 1TB 신청이별도로필요합니다. 포탈을통해신청해주시고 NAS 사용을위해 Altair 로문의해주시기바랍니다. Cloud NAS 상세내용은 olleh ucloudbiz 포탈을참고해주시기바랍니다. URL: https://ucloudbiz.olleh.com/portal/ktcloudportal.epc.productintro.nas.html ㅁ헤드노드에서 Compute Manager 시작 service pas startservice hweportal start 또는 service pbsworks start
ㅁ웹을통한 Compute Manager 접속확인 Compute Manager 는사용자에게할당된공인 IP 를통해서외부에서접근가능합니다. 기본적인접근주소는사용자의공인 IP 의 TCP 8086 번포트로웹브라우저를통해서접근할수있습니다. URL: http://:8086/pbsworks 계정정보는헤드노드에존재하는 Linux account 입니다.
3.4 사용자환경설정방법 3.4.1 사용자계정생성 PBS 를사용하기위한사용자생성은헤드노드에서이루어지며, NIS 를통해서계정이공유되며, NFS 를통해서사용자폴더가계산노드에공유됩니다. 또한계산노드들간에데이터공유는기본적으로 scp 를통해서이루어지며, 해당계정은 password-lessssh 로긴이가능해야합니다. 이를위해서헤드노드에서의사용자계정은다음과같은방법으로생성됩니다. ㅁ헤드노드에서사용자계정생성 ㅇ헤드노드에 root 권핚으로접속후사용자계정을생성, 생성핚계정의비밀번호를설정합니다. useradd < 사용자명 >passwd < 사용자명 > ㅁ SSH Key-generation 생성 ㅇ새로생성한사용자계정으로로긴후 ssh-keygen 명령어를통해 private key 와 public key 를생성합니다. 생성한 public_key (id_rsa.pub) 는 authrozied_keys 파일에복사합니다. su - < 사용자명 >ssh-keygen t rsacat /home/< 사용자명 >/.ssh/id_rsa.pub >> /home/< 사용자명 >/.ssh/authorized_keys
ㅁ NIS DB 업데이트 ㅇ root 계정으로다시로긴후 NIS DB 를업데이트합니다. make C /var/yp ㅁ계산노드접속확인 ssh i /home/< 사용자계정폴더 >/.ssh/id_rsa < 사용자계정명 >@< 계산노드명 >ex) ssh i /home/user1/.ssh/id_rsa user1@node001 3.5 컴퓨팅서버증가및삭제방법 3.5.1 OpenAPI 를이용한 HPC 컴퓨팅서버증가방법 ㅁ deployvirtualmachine API (deploy_hpc_add.py) API 호출시 account( 고객계정명 ), name( 컴퓨팅서버명 ), zone id, serviceoffering id 를수정해서사용할수있습니다. 최초 HPC 서비스를신청 (head 1 대, node001~node007) 해서사용중이라면 node008 부터증설해서사용할수있습니다. 아래코드는 Python 으로서비스포탈의 OpenAPI 를호출하는예제입니다.4.1 과 4.2 에나오는 Python 코드는 " 서비스포탈의 OpenAPI 호출 " 부분만수정해서사용하면됩니다. #!/usr/bin/pythonimport CloudStackimport json, sys, timeurl = 'https://api.ucloudbiz.olleh.com/server/v1/client/api'# 고객계정의 API key, Secret key: 포탈에서확인 apikey = 'paste_apikey_to_here'secret = 'paste_secret_to_here'## 서비스포탈의 OpenAPI 호출 cloudstack = CloudStack.Client(url, apikey, secret)node008 = cloudstack.deployvirtualmachine({ 'zoneid': '9845bd17-d438-4bde-816d-1b12f37d5080', # KOR-Central B zone 'serviceofferingid': '97359d1d-a7b1-49d9-b435-14608543f00b', # 4vCore, 4GB 'templateid': 'f102aa60-d7c7-40bf-8ce2-80780da32523', # 계산노드템플릿 : 고정 'diskofferingid': '87c0a6f6-c684-4fbe-a393-d8412bcf788d', # Root: 20GB, Data: 80GB'name': 'node008'})print json.dumps( node008, ensure_ascii=false, indent=4 ) ㅁ생성가능한 Zone 은다음과같습니다. Zone Name Zone ID KOR-Central A (kr-1) eceb5d65-6571-4696-875f-5a17949f3317 KOR-Central B (kr-2) 9845bd17-d438-4bde-816d-1b12f37d5080 KOR-Seoul M (kr-0) 95e2f517-d64a-4866-8585-5177c256f7c7
KOR-HA (kr-3) dfd6f03d-dae5-458e-a2ea-cb6a55d0d994 ㅁ신청가능한 Service Offering 은다음과같습니다 Service Offering Zone ID 4vCore 4GB 97359d1d-a7b1-49d9-b435-14608543f00b 4vCore 8GB 543b1f26-eddf-4521-9cbd-f3744aa2cc52 8vCore 8GB 049ab4c2-32ed-4310-83de-a3789d578e3c 8vCore 16GB 40b40978-e4d1-4f0c-bff4-053af7411fa1 12vCore 16GB d8de22c3-903a-4589-89a1-e76b7a5911b3 16vCore 32GB 8235e488-2fba-4b40-860e-7167976de148 ㅁ Head 서버에서증설한컴퓨팅서버를 PBS 서버로등록및확인ㅇ Qmgr 사용법 : -c (command) ㅇ qmgr -c "c(create) n(node) node008(nodename)" ㅇ qmgr c p(print) n(node) node008(nodename) 결과화면에서 state=free 이면정상등록된것입니다 [root@head1 ~]# qmgr -c 'c n node008'[root@head1 ~]# qmgr -c 'p n node008'## Create nodes and set their properties.### Create and define node node008#create node node008 Mom=node008.cs3e05cloud.internalset node node008 state = freeset node node008 resources_available.arch = linuxset node node008 resources_available.host = node008set node node008 resources_available.mem = 4194304kbset node node008 resources_available.ncpus = 4set node node008 resources_available.vnode = node008set node node008 resv_enable = Trueset node node008 sharing = default_shared 3.5.2 OpenAPI 를이용한 HPC 컴퓨팅서버삭제방법 ㅁ Head 서버에서컴퓨팅서버의 PBS 서버등록해제 ㅇ Qmgr 사용법 : -c (command) ㅇ qmgr c "d(delete) n(node) node008(nodename)" [root@head1 ~]# qmgr -c 'd n node008' ㅁ stopvirtualmachine API (Python 코드사용방법 : 4.1.1 예제 ) ㅇ컴퓨팅서버를삭제하기이전에 stop 을먼저수행해야합니다 stopnode008 = cloudstack.stopvirtualmachine({ 'id': '514a6225-e73c-4b94-bb07-37833640d858' # VM UUID})print json.dumps( stopnode008, ensure_ascii=false, indent=4 ) ㅁ destroyvirtualmachine API (Python 코드사용방법 : 4.1.1 예제 ) ㅇ Stop 시킨컴퓨팅서버를삭제합니다. 기존에사용했던컴퓨팅서버명은삭제한지 24~25 시간이후에다시사용할수있습니다. destroynode008 = cloudstack.destroyvirtualmachine({ 'id': '514a6225-e73c-4b94-bb07-37833640d858' # VM UUID})print json.dumps( destroynode008, ensure_ascii=false, indent=4 )
3.5.3 OpenAPI 를이용한 HPC Hyperworks 컴퓨팅서버증가및삭제방법 ㅁ Hyperworks 컴퓨팅서버증가및삭제시절차는 4.1, 4.2 절과동일하며다음과같이정보가변경됩니다. ㅁ Hyperworks 컴퓨팅서버의템플릿 ID 는기존의컴퓨팅서버의템플릿과동일합니다. ㅁ생성가능한 Zone 은다음과같습니다. Zone Name Zone ID KOR-Central A (kr-1) eceb5d65-6571-4696-875f-5a17949f3317 KOR-Central B (kr-2) 9845bd17-d438-4bde-816d-1b12f37d5080 ㅁ신청가능한 Hyperworks 컴퓨팅서버의 Offering(Service, Disk) 은다음과같습니다 Hyperworks 계산노드 offering ID Template (CentOS 6.4 64bit) f102aa60-d7c7-40bf-8ce2-80780da32523 Service offering (16vCore 96GB) edd6725c-d947-4340-96de-f0cb25c3bedb Disk offering (SSD 480GB) 2f65d59b-f97c-45d7-b048-92dca0bfee3e 3.6 Job( 작업 ) 실행예제 ㅁ PBS Professional 을이용할작업실행 ㅁ실행을위한배치파일을작성 (test.sh) #!/bin/sh#pbs l select=1:ncpus=4 ( 하나의계산노드에서 4 개의 CPU 를사용 )#PBS q workq ( 큐지정 )#PBS N job_name (job 의이름을사용자가원하는대로입력 ))cd $PBS_O_WORKDIR ( 현재위치핚작업디렉토리를의미함 )ping c 5 localhost ( 실행하고자하는명령어를나열 )hostname > hostname.out ( 실행하고자하는명령어를나열 ) ㅁ스크립트를 PBS 를통해실행 (qsub) qsub [ 실행스크립트 ]ex) qsub test.sh ( 스크립트내에 PBS 옵션이포함된경우 )ex) qsub l select=1:ncpus=4 q workq (PBS 옵션이실행스크립트내에없는경우명령어실행시지정 ) ㅁ작업실행후모니터링 (qstat, tracejob) qstat [options] / tracejob [JobID]ex) qstat an1 ( 현재계산노드에서실행되는작업목록조회 )ex) tracejob 14 ( 작업에대한세부내역조회 ) ㅁ포탈우측상단에 " 클라우드콘솔 "
ㅁ Compute Manager 를이용한작업실행 ㅇ로그인하기 웹브라우저의주소창에아래 URL 을입력 http://[ 헤드노드 IP 주소 ]:8086/hwe (Chrome 또는 Firefox 권장, IE9 사용가능 ) 사용자 ID/Password 입력후로그인버튼을클릭 ㅁ처음사용시작을위한설정 처음사용하기위한사용자환경을설정우측상단에톱니모양의이미지를클릭 ( 하단이미지참고 )
ㅁ작업실행 (submit) 페이지의좌측하단에 Job Submission 메뉴를클릭 Server : 다수의헤드노드가있는경우선택사용가능 Job name : 사용자가원하는 JOB 의이름을입력 Number of Processors : 작업실행시사용한 CPU 갯수 Job Script : 작업실행을위해작성핚스크립트 - 우측의파일목록에서드래그앤드롭하거나 " 파일선택 " 을클릭하고 PC 에서파일을첨부우측하단의 "submit" 버튼을클릭하여작업실행 ㅁ모니터링 페이지의좌측하단에 "MONITORING" 메뉴를클릭
모니터링을위한작업목록상단의컬럼에오른쪽마우스를클릭하고해당항목을정렬하거나새로운항목을추가할수있음 실행중인 Job 의 status 에따라하위의버튼이활성화됨 Terminate : 실행중인 Job을종료 Refresh : 전체 Job의 Status를갱신 Reload : 특정 Job의 Status 및 Monitoring 항목 More Action : Job에정의된특정작업을처리
ㅁ Overview 탭을통하여, 실행중인 ( 종료된 ) Job 의 State 를확인할수있음. ㅁ Compute Manager 에 application 실행메뉴추가 "Job Submission" 메뉴의좌측에실행한어플리케이션을목록에추가하기위해서는헤드노드에설정이필요함 3.7 문제해결방법 (Trouble shooting) 3.7.1 주요설정파일점검 ㅁ HPC 서비스를청약하면다음과같은서비스가자동으로설정됩니다. 서비스관련설정파일또는디렉토리설치위치 NFS Server /etc/exports 헤드노드 NFS Client /etc/auto.master /etc/auto.home 계산노드 NIS Server /etc/host.conf /etc/sysconfig/network 헤드노드 NIS Client /etc/sysconfig/network /etc/yp.conf /etc/nsswitch.conf 계산노드 PBS Professional /opt/pbs/ /etc/pbs.conf 헤드 / 계산노드 Compute Manager /opt/altair/ /opt/pbsworks/ 헤드노드 주요로그파일 PBS 와관련된주요로그들은아래해당폴더에날자별로저장되어있습니다. 서비스디렉토리설치위치 PBS server /var/spool/pbs/server_logs/ 헤드노드 PBS sched /var/spool/pbs/sched_logs/ 헤드노드
PBS mom m /var/spool/pbs/mom_logs/ 계산노드 3.7.2 설치된패키지확인 ㅁ설치된패키지들의버전은 rpm 을통해서알수있습니다 서비스디렉토리설치위치 NFS Server rpm -qa nfs-utils 헤드노드 NFS Client rpm -qa nfs-utils 계산노드 NIS Server rpm -qa ypserv 헤드노드 NIS Client rpm -qa ypbind 계산노드 OpenMPI rpm -qa openmpi 헤드 / 계산노드 gcc/g++ rpm -qa gcc rpm -qa gcc-c++ 헤드 / 계산노드 3.7.3 기술지원문의 업체서비스담당자연락처 kt Cloud 인프라, Open API techcenter 080-2580-005 techcenter@kt.com Altair PBS, Compute Manager,Hyperworks Altair 김도하민승욱 070-4050-9200 dhkim@altair.co.kr min@altair.co.kr 3.8 ucloud HPC 동영상