OpenLava Installation

지난 1주일간, 분산되어 관리되고 있던 연구실 컴퓨터에 OpenLava를 설치했다[1]. OpenLava는 컴퓨터 클러스터에 작업 스케쥴링을 해주는 오픈 소스 스케쥴러이다[2]. 클러스터에 작업 스케쥴링을 한다는 개념 자체가 생소했기에 설치도 어려울 것으로 생각했는데, 생각보다 설치는 어렵지 않았다. Quickstart 또는 documentation을 참고해 설치하면 된다.

1. OpenLava 설치
다음의 명령어로 OpenLava를 설치할 수 있다.
/opt/openlava-3.0 디렉토리 아래에 OpenLava 3.0이 설치된다.

#wget http://www.openlava.org/tarball/openlava-3.0.tar.gz
#tar -xzvf ./openlava-3.0.tar.gz
#cd openlava-3.0
#./configure
#make
#make install

다음으로, 설정 파일을 복사한다.

#cd ./config
#for f in `ls | grep -v in | grep -v Makefile` ; do cp $f /opt/openlava-3.0/etc; done

OpenLava를 root 계정으로 실행할 것이므로, openlava 계정을 따로 생성하지 않는다.
동일한 이유로 /opt/openlava-3.0의 소유자를 변경하지 않는다.
(필요하다면 Quickstart를 참고해 openlava 계정 생성)

OpenLava를 서비스에 등록하고 실행한다.

#cp /opt/openlava-3.0/etc/openlava /etc/init.d
#cp /opt/openlava-3.0/etc/openlava.* /etc/profile.d
#service openlava start

2. 설정 파일 변경
하지만, 이렇게 실행한 OpenLava는 정상적으로 실행되지는 않는다.
클러스터에 속하는 컴퓨터들의 정보를 모르기 때문이다.
설정 파일들이 /opt/openlava-3.0/etc 아래에 있다. 이를 수정해주어야 한다.

lsb.hosts - 호스트 정보에 대한 파일 (중요)
lsb.params
lsb.queues - 작업 대기 행렬의 정의
lsb.users - 사용자 및 사용자 그룹 정의
lsf.cluster.openlava - 클러스터 정의 (중요)
lsf.conf - 
lsf.shared - 자원 타입 등의 정의. 개별 호스트의 연산 능력을 정의할 수 있다.
lsf.task

반드시 수정해주어야 하는 것은 lsb.hosts와 lsf.cluster.openlava이다.

2.1 lsb.hosts
lsb.hosts는 호스트 정보를 정의하는 파일이다.
MXJ은 해당 노드에서 실행할 수 있는 최대 작업 수이다.
그 외의 필드는 [5] 또는 [6]을 참고하면 확인할 수 있다.
man 명령어를 사용해 확인할 수도 있다. (man lsb.hosts)
중요하지 않은 값은 () 또는 -을 사용해 생략할 수 있다.
다음은 우리 연구실 클러스터의 lsb.hosts 파일이다.

#
# The section "host" is optional.  If no hosts are listed here, all hosts 
# known by LSF will be used by Batch.  Otherwise only the hosts listed will 
# be used by Batch.  The value of keyword HOST_NAME may be an official host
# name (see gethostbyname(3)), a host type/model name (see lsf.shared(5)), or
# the reserved word "default".  The type/model name represents each of the 
# hosts which are of that particular host type/model.  The reserved
# word "default" represents all other hosts in the LSF cluster. 

# MXJ is the maximum number of jobs which can run on the host at one time.
# JL/U is the maximum number of jobs belonging to a user that can run on the 
# host at one time.  The default is no limit.

# DISPATCH_WINDOW is the time windows when the host is available to run
# batch jobs.  The default dispatch window is always open.

# Other columns specify scheduling and stopping thresholds for LIM load 
# indices.  A "()" or "-" is used to specify the default value in a column 
# and cannot be omitted.

# All the host names (except default) in this example are commented out,
# since they are just examples which may not be suitable for some sites.
# Don't use non-default thresholds unless job dispatch needs to be controlled.
Begin Host
HOST_NAME    MXJ   JL/U    r1m    pg     ls     tmp  DISPATCH_WINDOW
cluster      10    ()      ()     ()     ()     ()       ()  
taurus00     16    ()      ()     ()     ()     ()       ()  
taurus01     12    ()      ()     ()     ()     ()       ()  
taurus02     12    ()      ()     ()     ()     ()       ()  
taurus03     12    ()      ()     ()     ()     ()       ()  
taurus04     12    ()      ()     ()     ()     ()       ()  
taurus05     12    ()      ()     ()     ()     ()       ()  
taurus06     12    ()      ()     ()     ()     ()       ()  
taurus07     12    ()      ()     ()     ()     ()       ()  
taurus08     12    ()      ()     ()     ()     ()       ()  
taurus09     12    ()      ()     ()     ()     ()       ()  
taurus10     12    ()      ()     ()     ()     ()       ()  
taurus11     12    ()      ()     ()     ()     ()       ()  
taurus12     12    ()      ()     ()     ()     ()       ()  
taurus13     12    ()      ()     ()     ()     ()       ()  
taurus14     12    ()      ()     ()     ()     ()       ()  
taurus15     12    ()      ()     ()     ()     ()       ()  
taurus16     12    ()      ()     ()     ()     ()       ()  
taurus17     12    ()      ()     ()     ()     ()       ()  
taurus18     12    ()      ()     ()     ()     ()       ()  
taurus19     12    ()      ()     ()     ()     ()       ()  
ursus01      16    ()      ()     ()     ()     ()       ()  
ursus02      16    ()      ()     ()     ()     ()       ()  
ursus03      16    ()      ()     ()     ()     ()       ()  
ursus04      16    ()      ()     ()     ()     ()       ()  
ursus05      16    ()      ()     ()     ()     ()       ()  
ursus06      16    ()      ()     ()     ()     ()       ()  
ursus07      16    ()      ()     ()     ()     ()       ()  
ursus08      16    ()      ()     ()     ()     ()       ()  
ursus09      16    ()      ()     ()     ()     ()       ()  
ursus10      16    ()      ()     ()     ()     ()       ()  
ursus11      16    ()      ()     ()     ()     ()       ()  
canis01       6    ()      ()     ()     ()     ()       ()  
canis02       6    ()      ()     ()     ()     ()       ()  
canis03       6    ()      ()     ()     ()     ()       ()  
canis04       6    ()      ()     ()     ()     ()       ()  
canis05       6    ()      ()     ()     ()     ()       ()  
canis06       6    ()      ()     ()     ()     ()       ()  
canis07       6    ()      ()     ()     ()     ()       ()  
canis08       8    ()      ()     ()     ()     ()       ()  
canis09       8    ()      ()     ()     ()     ()       ()  
canis10       8    ()      ()     ()     ()     ()       ()  
canis11       6    ()      ()     ()     ()     ()       ()  
canis12       6    ()      ()     ()     ()     ()       ()  
canis13       8    ()      ()     ()     ()     ()       ()  
canis14       8    ()      ()     ()     ()     ()       ()  
canis15       4    ()      ()     ()     ()     ()       ()  
canis16      12    ()      ()     ()     ()     ()       ()  
canis17       8    ()      ()     ()     ()     ()       ()  
End Host

# Host groups can be referenced by the queue file.  Each line defines a host
# group.  The first line contains key words; each subsequent line contains a 
# group name, followed by white space, followed by the list of group members.
# The list of members should be enclosed in parentheses and separated by white 
# space.  This section is optional.
Begin HostGroup
GROUP_NAME    GROUP_MEMBER
taurus       (taurus00 taurus01 taurus02 taurus03 taurus04 taurus05 taurus06 taurus07 taurus08 taurus09 taurus10 taurus11 taurus12 taurus13 taurus14 taurus15 taurus16 taurus17 taurus18 taurus19)
ursus        (ursus01 ursus02 ursus03 ursus04 ursus05 ursus06 ursus07 ursus08 ursus09 ursus10 ursus11)
canis        (canis01 canis02 canis03 canis04 canis05 canis06 canis07 canis08 canis09 canis10 canis11 canis12 canis13 canis14 canis15 canis16 canis17)
End HostGroup

중요한 것은, hostname과 /etc/hosts의 hostname, 각 노드의 hostname이 일치해야 한다는 점이다. 이것이 일치하지 않으면 해당 노드에서 서비스가 제대로 시작되지 않는다.

2.2 lsf.cluster.openlava
lsf.cluster.openlava는 클러스터를 정의하는 파일이다.
관리자 아이디, 그리고 클러스터를 구성하는 호스트들을 입력한다.
관리자 아이디는 서비스를 실행하는 사용자와 일치해야 하며,
/opt/openlava-3.0/ 아래의 모든 파일 또한 관리자 소유여야 한다.

#-----------------------------------------------------------------------
# T H I S   I S   A    O N E   P E R   C L U S T E R    F I L E
#
# This is a sample cluster definition file.  There is a cluster
# definition file for each cluster.  This file's name should be 
# lsf.cluster.<cluster-name>.  
# See lsf.cluster(5) and the "LSF Administrator's Guide".
#

Begin   ClusterAdmins
Administrators = root 
End    ClusterAdmins 

Begin   Host
HOSTNAME      model      type      server  r1m  RESOURCES
cluster       ursus      linux     1       3.5  ()  
taurus00      taurus     linux     1       3.5  ()  
taurus01      taurus     linux     1       3.5  ()  
taurus02      taurus     linux     1       3.5  ()  
taurus03      taurus     linux     1       3.5  ()  
taurus04      taurus     linux     1       3.5  ()  
taurus05      taurus     linux     1       3.5  ()  
taurus06      taurus     linux     1       3.5  ()  
taurus07      taurus     linux     1       3.5  ()  
taurus08      taurus     linux     1       3.5  ()  
taurus09      taurus     linux     1       3.5  ()  
taurus10      taurus     linux     1       3.5  ()  
taurus11      taurus     linux     1       3.5  ()  
taurus12      taurus     linux     1       3.5  ()  
taurus13      taurus     linux     1       3.5  ()  
taurus14      taurus     linux     1       3.5  ()  
taurus15      taurus     linux     1       3.5  ()  
taurus16      taurus     linux     1       3.5  ()  
taurus17      taurus     linux     1       3.5  ()  
taurus18      taurus     linux     1       3.5  ()  
taurus19      taurus     linux     1       3.5  ()  
ursus01       ursus      linux     1       3.5  ()  
ursus02       ursus      linux     1       3.5  ()  
ursus03       ursus      linux     1       3.5  ()  
ursus04       ursus      linux     1       3.5  ()  
ursus05       ursus      linux     1       3.5  ()  
ursus06       ursus      linux     1       3.5  ()  
ursus07       ursus      linux     1       3.5  ()  
ursus08       ursus      linux     1       3.5  ()  
ursus09       ursus      linux     1       3.5  ()  
ursus10       ursus      linux     1       3.5  ()  
ursus11       ursus      linux     1       3.5  ()  
canis01       canis      linux     1       3.5  ()  
canis02       canis      linux     1       3.5  ()  
canis03       canis      linux     1       3.5  ()  
canis04       canis      linux     1       3.5  ()  
canis05       canis      linux     1       3.5  ()  
canis06       canis      linux     1       3.5  ()  
canis07       canis      linux     1       3.5  ()  
canis08       ursus      linux     1       3.5  ()  
canis09       ursus      linux     1       3.5  ()  
canis10       ursus      linux     1       3.5  ()  
canis11       canis      linux     1       3.5  ()  
canis12       canis      linux     1       3.5  ()  
canis13       canis      linux     1       3.5  ()  
canis14       canis      linux     1       3.5  ()  
canis15       canis      linux     1       3.5  ()  
canis16       canis      linux     1       3.5  ()  
canis17       canis      linux     1       3.5  ()  
End     Host

Begin ResourceMap
RESOURCENAME  LOCATION
# tmp2          [default]
# nio           [all]
# console   [default]
End ResourceMap

2.3 그 외
더 효율적인 클러스터 구성을 위해서 lsb.queues, lsf.shared를 수정해주면 좋다.
lsb.queues는 대기 행렬을 정의하는데, 설치하면 기본으로 normal 대기 행렬만 정의하고 있다. 다른 대기 행렬을 주석 해제하거나, 값을 변경해 사용할 수 있다.
lsf.shared는 일종의 전역 변수를 정의하는데, 호스트 타입과 연산 능력을 정의할 수 있다.
다음은 연구실에서 클러스터 구성에 사용한 lsf.shared 파일이다.

# $Id: lsf.shared,v 1.1.4.4 2006/04/28 21:36:01 mblack Exp $

# ----------------------------------------------------------------------
# T H I S   F I L E:  Is shared by all clusters in the openlava system.
#
# This file contains all definitions referenced by individual
# lsf.cluster.<clustername> files. The definitions in this file can be
# a superset, i.e., not all definitions in this file need to be used in
# other files.
#
# See lsf.cluster(5)
# ----------------------------------------------------------------------

Begin Cluster
ClusterName                     # Keyword
openlava
End Cluster

Begin HostType
TYPENAME                        # Keyword
linux
End HostType

#
# The CPU factor values are derived from SPECfp95 given by hardware vendors
# or SpecBench (unless indicated otherwise)
# See http://www.specbench.org for more information on CPU benchmarking
# To find out an architecture string for a new model, run 'lim -t'
#
Begin HostModel
MODELNAME  CPUFACTOR   ARCHITECTURE # keyword
# CPU factors are only comparisons.
taurus       100        (x86_64)
ursus        100        (x86_64)
canis         40        (x86_64)
End HostModel

Begin Resource
RESOURCENAME  TYPE    INTERVAL INCREASING  DESCRIPTION        # Keywords
   fs         Boolean ()       ()          (File server)
   cs         Boolean ()       ()          (Compute server)
#  nio        Numeric 60       Y           (Network I/O in Kbytes/second)
#  console    String  60       ()          (Console user name)
End Resource

3. 서비스 재시작
이렇게 설정한 설정 파일을 모든 노드에 반영하고, openlava 서비스를 재시작한다.
bhosts 명령어로 올바르게 구성되었는지 확인할 수 있다.

#service openlava restart
#pssh -h ~/cluster_nodes -i 'service openlava restart'
#bhosts
HOST_NAME          STATUS       JL/U    MAX  NJOBS    RUN  SSUSP  USUSP    RSV 
canis01            ok              -      6      0      0      0      0      0
canis02            ok              -      6      0      0      0      0      0
canis03            ok              -      6      0      0      0      0      0
canis04            ok              -      6      0      0      0      0      0
canis05            ok              -      6      0      0      0      0      0
canis06            ok              -      6      0      0      0      0      0
canis07            ok              -      6      0      0      0      0      0
canis08            ok              -      8      0      0      0      0      0
canis09            ok              -      8      0      0      0      0      0
canis10            ok              -      8      0      0      0      0      0
canis11            ok              -      6      0      0      0      0      0
canis12            ok              -      6      0      0      0      0      0
canis13            ok              -      8      0      0      0      0      0
canis14            ok              -      8      0      0      0      0      0
canis15            ok              -      4      0      0      0      0      0
canis16            ok              -     12      0      0      0      0      0
canis17            ok              -      8      0      0      0      0      0
cluster            ok              -     10      0      0      0      0      0
taurus00           ok              -     16      0      0      0      0      0
taurus01           ok              -     12      0      0      0      0      0
taurus02           ok              -     12      0      0      0      0      0
taurus03           ok              -     12      0      0      0      0      0
taurus04           ok              -     12      0      0      0      0      0
taurus05           ok              -     12      0      0      0      0      0
taurus06           ok              -     12      0      0      0      0      0
taurus07           ok              -     12      0      0      0      0      0
taurus08           ok              -     12      0      0      0      0      0
taurus09           ok              -     12      0      0      0      0      0
taurus10           ok              -     12      0      0      0      0      0
taurus11           ok              -     12      0      0      0      0      0
taurus12           ok              -     12      0      0      0      0      0
taurus13           ok              -     12      0      0      0      0      0
taurus14           ok              -     12      0      0      0      0      0
taurus15           ok              -     12      0      0      0      0      0
taurus16           ok              -     12      0      0      0      0      0
taurus17           ok              -     12      0      0      0      0      0
taurus18           ok              -     12      0      0      0      0      0
taurus19           ok              -     12      0      0      0      0      0
ursus01            ok              -     16      0      0      0      0      0
ursus02            ok              -     16      0      0      0      0      0
ursus03            ok              -     16      0      0      0      0      0
ursus04            ok              -     16      0      0      0      0      0
ursus05            ok              -     16      0      0      0      0      0
ursus06            ok              -     16      0      0      0      0      0
ursus07            ok              -     16      0      0      0      0      0
ursus08            ok              -     16      0      0      0      0      0
ursus09            ok              -     16      0      0      0      0      0
ursus10            ok              -     16      0      0      0      0      0
ursus11            ok              -     16      0      0      0      0      0

References:
[1] OpenLava, http://www.openlava.org/
[2] OpenLava, Wikipedia, http://en.wikipedia.org/wiki/OpenLava
[3] Quickstart, OpenLava, http://www.openlava.org/documentation/quickstart.html
[4] Install from tarball, OpenLava, http://www.openlava.org/documentation/guide/getting_started.html#install-from-tarball
[5] Documentation, OpenLava, http://www.openlava.org/documentation/guide/index.html
[6] Configuration Files, IBM Knowledge Center, https://www-01.ibm.com/support/knowledgecenter/SSETD4_9.1.3/lsf_config_ref/part_files.dita

Advertisements
Tagged with: , , , ,
Posted in 2) Computer Engineering

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 96,190 hits
%d bloggers like this: