본문 바로가기

IT n Linux

클러스터 시스템 만들기 #4 Perceus 설치


드디어 고대하고 고대하던 클러스터 만들기 4번째 시간입니다. 이게 도대체 얼마만에 글인지..그동안 결혼도 하고 CASP 도 하느라 정말 너무 너무 바빴습니다. 5번째 글은 빨리 적으로 테니 용서를.. 쿨럭^^:;



이전 글에서 Cluster 시스템에 대한 소개와 전체 시스템의 구성을 알아보았습니다. 이번 글부터 Perceus를 이용한 본격적인 Diskless 시스템 구성을 해보겠습니다. Perceus 는 Infiscale 에서 만든 Diskless 클러스터 구축용 프로그램 패키지 입니다. 이런 프로그램이 나오기 전에는 복잡하고 어려운 과정을 거쳐야 했지만, 이제는 쉽게 구축할 수 있습니다. Diskless Cluster 를 구축하는데 사용되는 tftp, dhcp 서버를 별도로 설치할 필요도 없고, node 구성부터 등록까지 자동으로 처리해 줍니다.

CentOS 의 설치에 대한 내용은 별도로 언급하지 않겠습니다. 여기서 사용한 시스템은 CentOS 5.5 이며, 2010년 8월 12일자로 "# yum update" 명령을 통해서 갱신된 버젼입니다. CentOS 설치시에 SELinux 와 방화벽 설정을 끄길 바랍니다. SELinux는 사용하지 않기를 권장하고, 방화벽은 Perceus 설치 끝내고 정상적으로 작동이 되는 것을 확인하고 다시 활성 시키는게 정신건강에 좋습니다.^^


Perceus 를 설치를 위한 네트웍설정

Perceus 설치하기 전에 몇 가지 설정을 먼저 합니다. 우리가 구성하는 시스템의 Master 는 랜카드를 3개 가지고 있습니다.
  • eth0 : 내부 네트웍에서 통신을 위해서 사용되며 10.0.0.XXX 주소를 가진다.
    • master : 10.0.0.1
    • nodeXX : 10.0.0.1XX
  • eth1 : 내부 네트웍에서 NFS를 위해서 사용되며 192.168.0.XXX 주소를 가진다.
    • master : 192.168.0.1
    • nodeXX : 192.168.0.1XX
  • eth2 : 외부 네트웍과 연결한다.

eth0 에 대한 설정을 해보겠습니다. CentOS 에서 eth0 카드에 대한 환경 설정 파일은 /etc/sysconfig/network-scripts/ifcfg-eth0 에 존재합니다. 이 파일을 열어서 다음과 같은 내용으로 바꿔 줍니다. 이때 HWADDR= 로 시작하는 라인이 있으면 그 라인을 다음 내용 뒤에 추가합니다 (만약 HWADDR 라인을 지워버리면 시스템 재부팅시 eth0, eth1, eth2 장치가 바뀔 수 있으니 꼭 뒤에 추가하시기 바랍니다.).

DEVICE=eth0
BOOTPROTO=static
BROADCAST=10.0.255.255
IPADDR=10.0.0.1
NETMASK=255.255.0.0
NETWORK=10.0.0.0
ONBOOT=yes
TYPE=Ethernet

eth1 의 경우 /etc/sysconfig/network-scripts/ifcfg-eth1 파일을 편집하시면 됩니다. 역시 HWADDR 라인이 있으면 다음 내용 뒤에 추가해 주세요.

DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet

그리고 네트워크를 재시작 합니다.

# /etc/init.d/network restart

다음은 /etc/hosts 파일을 편집해야 합니다. 다음 내용을 /etc/hosts 파일에 추가해 줍니다.

10.0.0.1    master
192.168.0.1   master


Perceus 설치를 위한 관련 라이브러리 설치

Perceus 가 동작하기 위한 관련 라이브러리들이 먼저 설치되어 있어야 합니다(너무 당연하가요?^^;). 먼저 yum 에서 제공되는 것들을 설치 합니다.

# yum -y groupinstall "Development Tools"
# yum -y install nasm
# yum -y install perl-DBI

이제 추가로 패키지로

  • bash-completion
  • perl-IO-Interface
  • perl-Net-ARP
  • perl-Unix-Syslog

를 설치해야 합니다. 이 패키지는 Perceus 에서 제공되는 버젼을 설치 해야 합니다.

# wget http://altruistic.infiscale.org/rhel/5/RPMS/x86_64/bash-completion-20060301-1.redhat.noarch.rpm
# rpm -Uvh bash-completion-20060301-1.redhat.noarch.rpm
# wget http://altruistic.infiscale.org/rhel/5/RPMS/x86_64/perl-IO-Interface-0.98-1.redhat.noarch.rpm
# rpm -Uvh perl-IO-Interface-0.98-1.redhat.noarch.rpm
# wget http://altruistic.infiscale.org/rhel/5/RPMS/x86_64/perl-Net-ARP-1.0-2.redhat.noarch.rpm
# rpm -Uvh perl-Net-ARP-1.0-2.redhat.noarch.rpm
# wget http://altruistic.infiscale.org/rhel/5/RPMS/x86_64/perl-Unix-Syslog-0.99-1.redhat.noarch.rpm
# rpm -Uvh perl-Unix-Syslog-0.99-1.redhat.noarch.rpm


Perceus 설치

사전 준비는 끝났습니다. Perceus 1.5.3 파일을 받아서 rpm 파일로 만들겠습니다. 혹시 기본 컴파일러(환경변수 CC)를 gcc 가 아닌 다른 것으로 설정해 놓으신 분은 gcc 로 돌리시기 바랍니다.

# cd /root/
# mkdir perceus
# cd perceus/
# wget http://altruistic.infiscale.org/src/perceus-1.5.3.tar.gz
# export TAR_OPTIONS=--wildcards
# rpmbuild -ta perceus-1.5.3.tar.gz

이제 이런 저런 메세지를 내뿜으면서 perceus  의 rpm 패키지가 만들어 집니다. 만들어진 패키지는 "/usr/src/redhat/RPMS/x86_64" 에 존재합니다. rpm 파일은 총 4개가 생성됩니다. 이중에서 우리가 필요한 파일은 perceus-1.5.3.rpm 파일입니다. 이 파일을 설치합니다. rpm 파일이므로 쉽게 설치할 수 있습니다.

# rpm -Uvh /usr/src/redhat/RPMS/x86_64/perceus-1.5.3.rpm


Perceus 설정

Perceus RPM 파일의 설치를 했습니다. 이제 설정을 해야할 차례인데요. perceus 의 기본 설정 파일은 /etc/perceus 에 존재합니다. 먼저 설정해야 할 파일은 /etc/perceus/perceus.conf 파일입니다. 이 파일에서 다음 두 줄을 수정해 줍니다.

master network device = eth0
vnfs transfer master =  10.0.0.1

이 두 줄은 master 의 eth0 을 이용해서 각 node 들과 연결하도록 하고, vnfs 파일을 가지고 있는 컴퓨터가 10.0.0.101 이라는 IP 를 사용한다는 의미입니다. master 가 vnfs 를 가지고 있기 때문에 master 의 eth0 의 IP 를 적어주었습니다.

이 다음 /etc/perceus/defaults.conf 파일을 수정합니다. 이 파일은 node 가 새롭게 추가될때 어떤 이름을 가질 것인지를 정하는 일을 하고 있습니다.

Node Name = n###
......
First Node = 1
......
Total Nodes = 999

이렇게 수정하면, node 가 새롭게 추가될 때 이름이 n001, n002, ..... , n999 순으로 들어가게 됩니다. (응용해서 자유롭게 바꾸시면 됩니다.)



Perceus 초기화 하기

perceus 를 처음실행하면 몇 가지 설정을 해야 합니다. 저는 다음과 같이 했습니다.
Do you wish to have Perceus do a complete system initialization (yes/no)? yes

What IP address should the node boot address range start at?
(192.168.10.192)> 10.0.0.151

What IP address should the node boot address range end at?
(192.168.10.254)> 10.0.0.200

What domain name should be appended to the DNS records for each entry in DNS?
This won't require you to specify the domain for DNS lookups, but it prevents
conflicts from other non-local hostnames.
(compbio.net)>

What device should the booting node direct its console output to? Typically
this would be set to 'tty0' unless you are monitoring your nodes over the
serial port. A typical serial port option might be 'ttyS0,115200'.
note: This is a global option which will affect all booting nodes.
(tty0)>
Perceus ssh keys are already present at /root/.ssh/perceus
Created Perceus ssh host keys
Created Perceus ssh rsa host keys
Created Perceus ssh dsa host keys
No local NFS server required for Perceus (as defined by perceus.conf)

Perceus is now ready to begin provisioning your cluster!

이렇게 설정하면 node 가 처음 추가될 때는 10.0.0.151 ~ 10.0.0.200 사이의 IP를 할당 받게 됩니다. (이후에 처음 목적한대로 10.0.0.[NODE NO] 형식의 IP로 변경되게 됩니다.). 이제 Perceus 를 구동시켜 봅니다.

# /etc/init.d/perceus start
Starting perceus vnfs daemon (xget):                       [  OK  ]
Starting perceus network manager:                          [  OK  ]
Starting perceusd:                                         [  OK  ]
위처럼 OK 메세지가 나오면 정상적으로 구동된 것입니다.


작동 시험
위에서 OK 가 나오면 perceus 설치와 작동이 정상적으로 이루어 진것입니다. 하지만 그렇다고 클러스터가 정상적으로 잘 작동한다는 것은 아닙니다. node 가 정상적으로 연결이 되나 시험을 해봐야합니다.

node 중에 1번으로 사용할 컴퓨터가 네트웍이 잘 연결되있나 확인한 뒤에 켜봅니다. 당연한 이야기지만, CMOS 상에서 네트웍 부팅을 지원하도록 설정되 있어야 합니다. node 를 키면, 처음에 네트웍을 찾으면서 master 를 찾는 메세지가 나옵니다. 그리고 다음과 같은 perceus 초기 화면이 나옵니다.


당연히 첫번째를 선택해야 합니다. 10초가 지나면 자동으로 선택되니 잠시 기다리셔도 되고, enter 를 누르셔도 됩니다. 그리고 다음과 같은 메세지가 나오면 정상적으로 작동하고 있는 것입니다.


perceus 는 새로운 node 가 발견되면 defaults.conf 에 설정에 따라 이름을 자동으로 할당하고 등록을 하게 됩니다. 위 화면의 경우 밑에 n64002 가 node 의 이름입니다. 저는 n64### 형식의 이름을 사용하고 2번째 노트를 테스트 하던 화면 이어서 그렇습니다.

마지막 줄에 보면  VNFS 파일이 없다고 에러를 냈는데요. 아직 설치하지 않았으니 당연히 에러가 나는 겁니다. 큰 걱적은 안해도 되는 부분입니다.

앞서 말씀 드렸지만, perceus 는 새로운 node 가 나타나면 이름을 할당하고 자동으로 등록을 하게 됩니다. 그래서 다음에 이루어질 VNFS 설정을 위해서 테스트때 등록된 node 를 모두 제거해 하도록 하겠습니다. 다음 명령어로 나타나는 모든 node 를 제거해 주시면 됩니다.(1대만 테스트 했으면 예제와 동일할 겁니다.)

# perceus node list
n001
# perceus node delete n001


마무리
이번 글에서는 Perceus 를 설치했습니다. 조금 어려울 수도 있는 부분이지만, 2-3년 전에 나온 리눅스 클러스터링 시스템 만들기 책을 10분만 읽어 보면, 얼마나 쉬워졌는지 알 수 있습니다. 다음 글에서는 본격적인 Node 이미지 만드는 작업을 하겠습니다.


참고자료

http://www.redbarnhpc.com/v2/images/pdf/perceus-centos.pdf