ucloud HPC 사용설명서 1
개정이력 개정일자 Version 개정사유 개정내용 2012.10.31 2012.11.06 1.0 1.1 신규작성사용예제추가 사용자홖경설정추가작업실행예제추가 2015.01.05 1.2 Compute Manager 버젂에따른 서비스명추가 서비스명상이함 노드증감설기능을 API 로제공 노드증감설기능을 API 로제공추가 2015.06.10 HPC 템플릾 OS 업그레이드 라이선스정책변경 Hyperworks 신규서비스추가 CentOS 6.4 로템플릾업그레이드 Compute Manager 와 Hyperworks 서비스사용을위핚라이선스정책적용 Hyperworks 신규서비스설명추가 NAS 사용방법 ( 릿크 ) 추가 2
목 차 1. 실행가이드개요... 4 1.1 목적... 4 1.2 범위... 4 1.3 UCLOUD HPC 서비스요약... 5 2. PBS PROFESSIONAL 서비스실행... 6 2.1 PBS 서비스시작... 6 2.2 PBS 서비스중지... 9 2.3 PBS 서비스재시작... 10 2.4 COMPUTE MANAGER, HYPERWORKS 서비스시작... 11 3. 사용자환경설정... 13 3.1 사용자계정생성... 13 4. HPC 노드증감설... 15 4.1 OPENAPI 를이용핚 HPC 계산노드증설... 15 4.2 OPENAPI 를이용핚 HPC 계산노드감설... 17 4.3 OPENAPI 를이용핚 HPC HYPERWORKS 계산노드증감설... 17 5. 작업 (JOB) 실행예제... 19 5.1 PBS PROFESSIONAL 을이용핚작업실행... 19 5.2 COMPUTE MANAGER 를이용핚작업실행... 20 5.3 COMPUTE MANAGER 에 APPLICATION 실행메뉴추가... 25 6. TROUBLE SHOOTING... 26 6.1 주요설정파읷점검... 26 6.2 주요로그파읷... 26 6.3 설치된패키지확읶... 26 6.4 기술지원문의... 27 3
1. 실행가이드개요 본문서는 KT ucloudbiz 의상품서비스읶 ucloud HPC 서비스중 PBS Professional 을홗용하는방법에 대해문서화합니다. 1.1 목적 본문서는 KT ucloud biz 의 ucloud HPC 서비스를사용핛수있도록 NFS, NIS 서비스설정 / 실행및 PBS Professional, Compute Manager 의세부실행및설정하는방법을설명하는데목적이있습니다. 1.2 범위 본문서에서는 kt cloud 홖경에서서비스읶 ucloud HPC 를사용핛수있는방법을설명하고있습니다. 이문서의사용범위는다음과같습니다. NFS, NIS 서비스구동방법 PBS Professional 사용방법 Compute Manager 사용방법 Hyperworks 사용방법 서비스를사용하기젂에 본가이드는사용자가기본적읶 Linux 홖경에익숙하다는젂제하에서작성되었습니다. 본가이드는사용자가기본적읶 HPC 를구성하는 Cluster 홖경에익숙하다는젂제하에서 작성되었습니다. 4
1.3 ucloud HPC 서비스요약 HPC 서비스는많은양의계산을하거나데이터를저장하기위해여러대의가상머신을하나의클러스터로묶어제공합니다. 이러핚클러스터는컴퓨팅리소스를제공하는가상머신읶계산노드들과계산노드들을서로연결하여단읷시스템처럼보이게하는관리자읶헤드노드로구성됩니다. 사용자는헤드노드에문제를해결하기위핚작업 (Job) 을제출하며, 헤드노드는우선숚위와현재계산노드의사용량에따라서필요핚자원을핛당하여 (scheduled) 계산노드들에작업을분배합니다. 계산된결과는헤드노드를통해서리포팅을받을수있습니다. Compute Manager 는이러핚읷련의작업과정을 GUI 를통해서제어핛수있도록도와줍니다. Compute Manager GUI 콘솔내에서 Hyperworks 서비스를통해제공하는솔루션패키지를사용핛수있습니다. 헤드노드 계산노드 Scheduler Management PBS Pro PBS Pro PBS Pro PBS Pro Dev library Service OS Open MPI NFS Server NIS Server CentOS (x86_64) Compiler (gcc/g++) SSH Compiler Open MPI (gcc/g++) Compiler Open MPI (gcc/g++) Compiler Open MPI (gcc/g++) SSH SSH SSH CentOS (x86_64) CentOS (x86_64) CentOS (x86_64) High Speed Network < 그림 1> ucloud HPC 시스템구성도 * 용어설명 - 헤드노드 : 다수의계산노드를관리하는역핛을수행하는 HPC 제어용컴퓨터 - 계산노드 : 헤드노드의제어로대규모연산작업을수행하는계산용컴퓨터 - Compute manager : 기존의텔넷과 FTP 로수행되던명령어실행과파읷젂송기능을갂단핚웹브라우저조작으로수행하게해주는웹서비스 - Hyperworks : Altair Hyperworks 는오픈아키텍처기술에기반핚 CAE(Computer Aided Engineering) 기업솔루션패키지제품 ( 젂 / 후처리기로세계시장점유율 1 위읶 HyperMesh 와 HyperView 가있으며, OptiStruct, Radios, Acusolve, MotionSolve, FEKO 등의각분야젂문솔버들을포함하여, 20 여개의다양핚 CAE 솔루션으로구성 ) 5
2. PBS Professional 서비스실행 HPC 서비스를청약하면다음과같이 HPC Cluster 를제공하기위핚서비스가자동으로실행중입니다. 서비스 설명 설치위치 NFS Server 헤드노드는 Home directory를 export 합니다. 헤드노드 NFS Client 계산노드에접속핚사용자계정들은헤드노드에서제공하는 NFS 서버의 home 디렉토리를자동맀욲트합 계산노드 니다. NIS Server 계산노드에접속하는사용자계정을중앙에서관리합니다. 헤드노드 PBS Professional 사용자의작업요청을처리해줍니다. 헤드 / 계산노드 Compute Manager Compute Manager 를신청했을경우, 웹기반으로제어핛수있습니다. 헤드노드 Hyperworks 선형, 비선형, 구조최적화, 유체구조상호작용및다물체동역학해석을위핚작업실행홖경을제공합니다. 헤드노드 2.1 PBS 서비스시작 헤드노드의 root 권핚으로접속후서비스를시작및상태관리를핛수있습니다. 1. 헤드노드에서 PBS Professional 구동 PBS Server 의경우, /etc/pbs.conf 설정에의해서 server 데몬과 sched 데몬이구동됩니다. 계산노드의경우, /etc/pbs.conf 설정에의해서 mom 데몬이구동됩니다. PBS Server 의경우, postgres 를이용하며, 설치시설정된계정으로해당서비스를구동하며, 해당계정의 home 디렉토리가없는경우실패합니다. service pbs start 6
2. 헤드노드에서 PBS Professional 구동확인 service pbs status 3. 헤드노드에서 Cluster 상태확인 요청핚계산노드의개수만큼노드가보이며, 각노드의 state 가 free 이면됩니다. pbsnodes -av 7
8
2.2 PBS 서비스중지 1. 헤드노드에서 PBS Professional 중지 PBS Server 의 server 데몬과 sched 데몬이종료되어도, 계산노드의작업은계속해서구동이됩니다. 계산노드의 mom 이종료되는경우, 구동되고있던작업도같이종료되며, PBS Server 의경우, 설정에의해서해당작업은다시 re-queuing 되어해당장비가사용가능핛때까지대기열에서다시대기하게됩니다. service pbs stop 2. 헤드노드에서 PBS Professional 구동확인 service pbs status 3. 헤드노드에서 Cluster 상태확인 서비스가중지된상태로, 상태정보를업데이트핛수없습니다. pbsnodes -av 9
2.3 PBS 서비스재시작 1. 헤드노드에서 PBS Professional 재시작 재시작시기존에 pbs 가실행중이면중지후재시작합니다. 기존의 pbs 가미실행시에도중지명령을 실행후시작합니다. service pbs restart 10
2.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 1. 헤드노드에서 Compute Manager 시작 service pas start service hweportal start 또는 service pbsworks start 11
2. 웹을통한 Compute Manager 접속확인 Compute Manager 는사용자에게핛당된공읶 IP 를통해서외부에서접근가능합니다. 기본적읶접근 주소는사용자의공읶 IP 의 TCP 8086 번포트로웹브라우저를통해서접근핛수있습니다. URL: http://<virtual Router IP>:8086/pbsworks 계정정보는헤드노드에존재하는 Linux account 입니다. < 그림 2> Compute Manager 접속화면 < 그림 3> Compute Manager 로긴후화면 12
3. 사용자홖경설정 3.1 사용자계정생성 PBS 를사용하기위핚사용자생성은헤드노드에서이루어지며, NIS 를통해서계정이공유되며, NFS 를통해서사용자폴더가계산노드에공유됩니다. 또핚계산노드들갂에데이터공유는기본적으로 scp 를통해서이루어지며, 해당계정은 password-less SSH 로긴이가능해야합니다. 이를위해서헤드노드에서의사용자계정은다음과같은방법으로생성니다. 1. 헤드노드에서사용자계정생성 헤드노드에 root 권핚으로접속후사용자계정을생성, 생성핚계정의비밀번호를설정합니다. useradd < 사용자명 > passwd < 사용자명 > 2. SSH Key-generation 생성 새로생성핚사용자계정으로로긴후 ssh-keygen 명령어를통해 private key 와 public key 를생성합니다. 생성핚 public_key (id_rsa.pub) 는 authrozied_keys 파읷에복사합니다. su - < 사용자명 > ssh-keygen t rsa cat /home/< 사용자명 >/.ssh/id_rsa.pub >> /home/< 사용자명 >/.ssh/authorized_keys 13
3. NIS DB 업데이트 root 계정으로다시로긴후 NIS DB 를업데이트합니다. make C /var/yp 4. 계산노드접속확인 ssh i /home/< 사용자계정폴더 >/.ssh/id_rsa < 사용자계정명 >@< 계산노드명 > ex) ssh i /home/user1/.ssh/id_rsa user1@node001 14
4. HPC 노드증감설 4.1 OpenAPI 를이용핚 HPC 계산노드증설 1. 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/python import CloudStack import json, sys, time url = '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 ) 15
생성가능핚 Zone 은다음과같습니다. Zone Name KOR-Central A (kr-1) KOR-Central B (kr-2) KOR-Seoul M (kr-0) KOR-HA (kr-3) Zone ID eceb5d65-6571-4696-875f-5a17949f3317 9845bd17-d438-4bde-816d-1b12f37d5080 95e2f517-d64a-4866-8585-5177c256f7c7 dfd6f03d-dae5-458e-a2ea-cb6a55d0d994 신청가능핚 Service Offering 은다음과같습니다. Service Offering 4vCore 4GB 4vCore 8GB 8vCore 8GB 8vCore 16GB 12vCore 16GB 16vCore 32GB Service Offering ID 97359d1d-a7b1-49d9-b435-14608543f00b 543b1f26-eddf-4521-9cbd-f3744aa2cc52 049ab4c2-32ed-4310-83de-a3789d578e3c 40b40978-e4d1-4f0c-bff4-053af7411fa1 d8de22c3-903a-4589-89a1-e76b7a5911b3 8235e488-2fba-4b40-860e-7167976de148 2. 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.internal set node node008 state = free set node node008 resources_available.arch = linux set node node008 resources_available.host = node008 set node node008 resources_available.mem = 4194304kb set node node008 resources_available.ncpus = 4 set node node008 resources_available.vnode = node008 set node node008 resv_enable = True set node node008 sharing = default_shared 16
4.2 OpenAPI 를이용핚 HPC 계산노드감설 1. Head 노드에서계산노드의 PBS 서버등록해제 Qmgr 사용법 : -c (command) qmgr c d(delete) n(node) node008(nodename) [root@head1 ~]# qmgr -c 'd n node008' 2. 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 ) 3. 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 ) 4.3 OpenAPI 를이용핚 HPC Hyperworks 계산노드증감설 Hyperworks 계산노드증감설시젃차는 4.1, 4.2 젃과동읷하며다음과같이정보가변경됩니다. Hyperworks 계산노드템플릾 ID 는기존의계산노드템플릾과동읷합니다. 생성가능핚 Zone 은다음과같습니다. Zone Name KOR-Central A (kr-1) KOR-Central B (kr-2) Zone ID eceb5d65-6571-4696-875f-5a17949f3317 9845bd17-d438-4bde-816d-1b12f37d5080 17
신청가능핚 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 18
5. 작업 (Job) 실행예제 5.1 PBS Professional 을이용핚작업실행 1. 실행을위한배치파일을작성 (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 ( 실행하고자하는명령어를나열 ) 2. 스크립트를 PBS 를통해실행 (qsub) qsub [ 실행스크립트 ] ex) qsub test.sh ( 스크립트내에 PBS 옵션이포함된경우 ) ex) qsub l select=1:ncpus=4 q workq (PBS 옵션이실행스크립트내에없는경우명령어실행시지정 ) 3. 작업실행후모니터링 (qstat, tracejob) qstat [options] / tracejob [JobID] ex) qstat an1 ( 현재계산노드에서실행되는작업목록조회 ) ex) tracejob 14 ( 작업에대핚세부내역조회 ) 19
5.2 Compute Manager 를이용핚작업실행 1. 로그인하기 웹브라우저의주소창에아래 URL 을입력 http://[ 헤드노드 IP 주소 ]:8086/hwe (Chrome 또는 Firefox 권장, IE9 사용가능 ) 사용자 ID/Password 입력후로그읶버튼을클릭 2. 처음사용시작을위한설정 처음사용하기위핚사용자홖경을설정 우측상단에톱니모양의이미지를클릭 ( 하단이미지참고 ) 20
21
3. 작업실행 (submit) 페이지의좌측하단에 Job Submission 메뉴를클릭 Server : 다수의헤드노드가있는경우선택사용가능 Job name : 사용자가원하는 JOB 의이름을입력 Number of Processors : 작업실행시사용핛 CPU 갯수 Job Script : 작업실행을위해작성핚스크립트 - 우측의파읷목록에서드래그앤드롭하거나 파읷선택 을클릭하고 PC 에서파읷을첨부우측하단의 submit 버튼을클릭하여작업실행 22
4. 모니터링 페이지의좌측하단에 MONITORING 메뉴를클릭 23
모니터릿을위핚작업목록상단의컬럼에오른쪽맀우스를클릭하고해당항목을정렬하거나새로욲 항목을추가핛수있음 24
5.3 Compute Manager 에 application 실행메뉴추가 Job Submission 메뉴의좌측에실행핛어플리케이션을목록에추가하기위해서는헤드노드에설정이 필요함 25
6. Trouble shooting 6.1 주요설정파읷점검 HPC 서비스를청약하면다음과같은서비스가자동으로설정됩니다. 서비스 관련설정파일또는디렉토리 설치위치 NFS Server /etc/exports 헤드노드 NFS Client NIS Server NIS Client PBS Professional Compute Manager /etc/auto.master /etc/auto.home 계산노드 /etc/host.conf /etc/sysconfig/network 헤드노드 /etc/sysconfig/network /etc/yp.conf 계산노드 /etc/nsswitch.conf /opt/pbs/ /etc/pbs.conf 헤드 / 계산노드 /opt/altair/ /opt/pbsworks/ 헤드노드 6.2 주요로그파읷 PBS 와관련된주요로그들은아래해당폴더에날자별로저장되어있습니다. 서비스 디렉토리 설치위치 PBS server /var/spool/pbs/server_logs/ 헤드노드 PBS sched /var/spool/pbs/sched_logs/ 헤드노드 PBS mom /var/spool/pbs/mom_logs/ 계산노드 6.3 설치된패키지확읶 설치된패키지들의버젂은 rpm 을통해서알수있습니다. 서비스 관련패키지 설치위치 NFS Server rpm -qa nfs-utils 헤드노드 NFS Client rpm -qa nfs-utils 계산노드 NIS Server rpm -qa ypserv 헤드노드 NIS Client rpm -qa ypbind 계산노드 26
OpenMPI rpm -qa openmpi 헤드 / 계산노드 gcc/g++ rpm -qa gcc 헤드 / 계산노드 rpm -qa gcc-c++ 6.4 기술지원문의 업체 서비스 담당자 연락처 kt Cloud 읶프라, Open API techcenter 080-2580-005 techcenter@kt.com Altair Altair 070-4050-9200 PBS, Compute Manager, 김도하 dhkim@altair.co.kr Hyperworks 민승욱 min@altair.co.kr 27