OpenMosix Cluster Server Farm 구성하기
#### OpenMosix Cluster Server Farm 구성하기 ####
작성일 : 2006년 1월 4일
작성자 : 서진우 / 시스존
OpenMosix는 NUMA 와 같이 분산된 시스템의 CPU, Memory 자원을 커널 레벨에서 서로
공유하는 분산 시스템의 일종이다.
분산 시스템이나 클러스터 시스템의 경우 흔히 로드밸랜서처럼 작업을 분산하거나
병렬 프로그램(MPI)을 통해 프로그램 자체에서 프로세스간의 통신을 통해 병렬프로세싱
을 구현하는 방법을 통해 성능을 향상 시킬 수 있다.
로드밸랜서의 경우 작은 단위의 프로세싱 처리 작업이 수없이 많은 경우 이 프로세싱
작업을 여러대의 시스템이 나누어 처리 하여 성능을 향상 시키는 방식이고 MPI의 경우는
하나의 큰 단위의 작업을 프로세스간의 통신을 통해 작업을 나누어 처리하여 큰 단위의
작업의 처리 속도를 빠르게 하는 방식이다. 즉 전자는 대용량 클러스터 시스템이고
후자는 초고속 클러스터 시스템이라 할 수 있다.
이때 초고속의 경우 MPI 프로그래밍 기반에서 어플리케이션이 제작되어 있어야 한다는
제약이 따르게 되어 일반 단일 프로세스나, SMP 방식으로 설계된 어플리케이션에서는
MPI 방식을 적용할 수 없게 된다. 이때 이런 SMP 방식의 어플리케이션의 경우 초고속
과 같은 효과를 나타내게 해주는 클러스터 방식이 MOSIX에 해당한다.
Mosix는 openmosix 와 mosix 로 크게 분류되어 관리 되어 진다. 처음 시작은 mosix
프로젝트에서 시작되었는데 mosix의 경우 적은 인원이 한정된 리눅스 환경에서만
개발을 진행하고 있다. openmosix의 경우 여러 인원이 많은 리눅스 환경에 맞게 적용
하여 관리 함으로 openmosix가 그 발전 속도가 빠르다고 볼 수 있다.
이제 openmosix 구축 방법에 대해 알아 보도록 하자.
기본 시스템 요구 사항은 다음과 같다.
* Kernel 2.4.26 버전의 리눅스 운영체제 ( Redhat7, 8, 9, ES3 )
* NFS+Automount 를 이용한 공유 홈폴더 제공
1. OpenMosix 커널 환경 구성
http://openmosix.sourceforge.net/ 에서 Openmosix kernel patch 와 openmosix_tools
를 다운 받는다.
http://kernel.org 에서 2.4.26 에 대한 kernel 을 다운 받는다.
커널 환경 구성과 유틸리티 설치 설정은 Mosix 클러스터 그룹의 모든 노드들에 동일하게
적용한다.
다운 받은 kernel source 를 /usr/src 밑에 옮겨 놓는다.
[root@xeon01 src]# tar xjvf linux-2.4.26.tar.bz2
[root@xeon01 src]# ln -sf linux-2.4.26 linux
[root@xeon01 src]# ln -sf linux-2.4.26 linux-openmosix
;; openmosix-tools 설치 시 필요한 header 파일 등을 include 하는 경로가 /usr/src/linux-openmosix
로 정의 되어 있어 관련 link를 걸지 않으면 에러가 발생한다.
[root@xeon01 src]# cd linux-openmosix/
[root@xeon01 linux-openmosix]# bzcat ../openMosix-2.4.26-1.bz2 | patch -p1
[root@xeon01 linux-openmosix]# cp /boot/config-2.4.21-20.ELsmp config
;; 기존의 kernel 설정이 저장된 파일이 /boot 밑에 config-xxx 형식으로 생성되어
있을 것이다. 이것을 이용하여 현재 커널 환경을 유지 하도록 한다.
[root@xeon01 linux-openmosix]# make menuconfig
;; kernel 설정이 나타나면 최 상단에 openmosix 항목으로 들어 간다.
openMosix —>
[*] openMosix process migration support
[*] Support clusters with a complex network topology
(4) Maximum network-topology complexity to support (2-10)
[*] Stricter security on openMosix ports
(1) Level of process-identity disclosure (0-3)
[*] Poll/Select exceptions on pipes
[*] Disable OOM Killer
[*] Enable Extension: Local Time
[root@xeon01 linux-openmosix]# make dep && make clean && make bzImage
[root@xeon01 linux-openmosix]# make modules && make modules_install
Kernel Compile 완료 후..
[root@xeon01 linux-openmosix]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26-om
[root@xeon01 linux-openmosix]# cp System.map /boot/System.map-2.4.26-om
[root@xeon01 linux-openmosix]# cd /boot
[root@xeon01 boot]# ln -sf vmlinuz-2.4.26-om vmlinuz
[root@xeon01 boot]# ln -sf System.map-2.4.26-om System.map
[root@xeon01 boot]# vi grub/menu.lst
——————————————————————————-
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
… 추가 …………………………………
title Red Hat OpenMosix (2.4.26-1.smp)
root (hd0,0)
kernel /vmlinuz ro root=LABEL=/
initrd /initrd-2.4.26-om1.img
…………………………………………
title Red Hat Enterprise Linux ES (2.4.21-20.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.4.21-20.ELsmp ro root=LABEL=/
initrd /initrd-2.4.21-20.ELsmp.img
title Red Hat Enterprise Linux ES-up (2.4.21-20.EL)
root (hd0,0)
kernel /vmlinuz-2.4.21-20.EL ro root=LABEL=/
initrd /initrd-2.4.21-20.EL.img
——————————————————————————-
리부팅하여 성공하면 Mosix 커널환경이 구축 되어 있다.
2. OpenMosix Tools 설치
Openmosix 사이트에서 openmosix-tools-0.3.6-2.src.rpm 파일을 다운 받는다.
[root@xeon01 src]# rpm -ivh openmosix-tools-0.3.6-2.src.rpm
[root@xeon01 src]# cd /usr/src/redhat/SPECS/
[root@xeon01 src]# rpmbuild -ba openmosix-tools.spec
와 같은 방식으로 플랫폼에 맞는 openmosix-tools rpm 패키지를 rebuild 한다.
root@xeon01 src]# rpm -Uvh /usr/src/Redhat/RPMS/i386/openmosix-tools-0.3.6-2.i386.rpm
3. OpenMosix 설정 및 시작
[root@xeon02 root]# vi /etc/openmosix.map
——————————————————————————-
1 192.168.123.91 2
#3 192.168.123.101 1
#4 192.168.123.102 1
——————————————————————————-
openmosix 설정은 /etc/openmosix.map 파일만 설정하면 정상적인 mosix cluster 구성이
가능하다.
설정 방식은 다음과 같다.
Mosix_ID IP Count
——————————————————————————-
1 192.168.123.91 2
Mosix_ID는 Mosix 클러스터 상에 하나의 노드를 의미하는 것으로 이 설정이 정확하지
많으면 0x???? 식으로 자동으로 생성하여 만들어 낸다.
IP 는 mosix 클러스터 노드의 IP 로 클러스터 노드의 IP 중 제일 앞에 해당하는 IP를
적으면 된다.
count 는 IP에 정의된 IP에서 순차적으로 증가하는 전체 노드 수를 의미 한다.
위 설정을 풀이 하면 ..
Mosix_ID 1 부터 시작하고, IP 는 192.168.123.91 부터 시작하는 92로 끝나는 노드
구성으로 이루어져 있다는 의미다.
만일 192.168.123.100~192.168.123.150 으로 구성된 클러스터 노드라고 하면…
1 192.168.123.100 50
으로 설정하면 될것이다.
IP 구성이 아래와 순차적으로 이루어 있지 않은 네트워크 구성에서는 다음과 같이
정의하면 된다.
IP 구성 :
192.168.123.100-110, 192.168.123.200-209, 192.168.123.225
openmosix.map 구성 :
1 192.168.123.100 10
11 192.168.123.200 9
20 192.168.123.225 1
위와 같은 방식으로 설정된 /etc/openmosix.map 파일을 모든 노드에 동기화 한다.
그런 후 모든 클러스터 노드에서 openmosix 데몬을 start 한다.
[root@xeon01 root]# /etc/rc.d/init.d/openmosix start
4. OpenMosixView 유틸리티 설치
http://www.openmosixview.com/ 사이트에 접속해서 관련 Source를 다운 받는다.
[root@xeon01 root]# rpm -Uvh openmosixview-1.5.i386.rpm
[root@xeon01 root]# /etc/rc.d/init.d/openmosixcollector start
[root@xeon01 root]# openmosixview
5. OpenMosix 테스트
openmosixview 를 실행한 후 아래 스크립터를 실행 하도록 한다.
[root@xeon01 home]# vi stress.sh
—————————————————————————-
for i in `ls /etc/`
do
./test_mosix
done
—————————————————————————-
[root@xeon01 home]# vi test_mosix
—————————————————————————-
awk ‘BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}’&
—————————————————————————-
[root@xeon01 home]# sh stress.sh
이때 해당 스크립터는 공유 파일 서버 상에 존재하거나 모든 클러스터 노드의 같은
경로상에 동일한 스크립터가 존재 해야 한다.
이제 Mosix 노드간의 프로세스 migrade 되는 상황이 비주얼하게 보여 질것이다.
6. OpenMosix 관리