Membangun infrastruktur HPC cluster dengan Linux

Posted by gentur

Tulisan ini adalah dokumentasi dari infrastruktur cluster yang dibangun oleh tim hpc teknik elektro UGM. Sebelum membahas mengenai teknis pembuatan infrastruktur cluster, terlebih dahulu akan dibahas mengenai perencanaan dan perancangan cluster yang akan dibuat.

Cluster yang kami bangun adalah cluster yang ditujukan untuk HPC atau high performance computing. Cluster ini harus memiliki kemampuan untuk melakukan proses komputasi secara parallel. Mekanisme komputasi paralel yang kami gunakan adalah MPI (Message Passing Interface). Dengan MPI, sebuah proses komputasi dapat di distribusikan ke mesin - mesin komputasi yang lain.

Untuk mengimplementasikan HPC cluster yang memanfaatkan MPI sebagai mekanisme pendistribusian proses, dibutuhkan sebuah dedicated private network. Di dalam jaringan privat tersebut perlu dijalankan service - service yang mengintegrasikan mesin - mesin yang ada pada jaringan tersebut. Service - service tersebut adalah NFS, NIS SSH dan MPI. NFS digunakan sebagai global file system yang dapat diakses oleh semua mesin di dalam jaringan cluster. NIS digunakan sebagai sistem administrasi file - file (passwd,group,user,dll) terpusat termasuk administrasi user. SSH digunakan sebagai sistem komunikasi untuk menjalankan sebuah proses di mesin - mesin komputasi. MPI digunakan sebagai mekanisme pendistribusian proses komputasi.

Jaringan Cluster yang kami bangun memiliki sebuah head node dan dua buah compute node. Head node adalah mesin yang digunakan sebagai inisialisasi proses atau pemberi proses ke mesin - mesin compute node sedangkan compute node adalah mesin - mesin yang digunakan untuk menjalankan suatu proses komputasi yang diberikan oleh head node. Topologi jaringan berbentuk star. Head node memiliki dua buah NIC(Network Interface Card) satu NIC terhubung ke jaringan Cluster dan NIC yang lain terhubung ke jaringan internet supaya dapat diakses oleh user atau pengguna cluster. Compute node hanya memiliki sebuah NIC saja yang menghubungkan ke jaringan cluster. Masing2 mesin di dalam jaringan cluster kami beri sistem penamaan pada nama host-nya. Head node kami berinama cluster0, dua compute node yang lain kami berinama cluster1 dan cluster2. Untuk memberikan nama pada mesin cukup dengan mengedit file /etc/sysconfig/network pada bagian HOSTNAME=”nama host” (beda distro linux beda letak file konfigurasinya).

Mesin Head node perlu mengetahui nama-nama host mesin - mesin komputasi, untuk itu perlu di konfigurasi file /ets/hosts dengan memberikan nama hosts dan ip dari mesin - mesin komputasi (baca man hosts).

Sistem operasi yang digunakan di dalam cluster sebaiknya sama. Kami menggunakan Linux Fedora Core 6 (karena pada waktu mau nginstall adanya cuma Fedora hehehehe). Penggunaan sistem operasi yang sama dimaksudkan untuk mempermudah di dalam administrasi sistem.

1. NFS server

Cluster membutuhkan sebuah file system yang dapat diakses secara global oleh semua mesin di dalam jaringan cluster. Untuk itu digunakan NFS(Network File System). NFS adalah sebuah aplikasi client server yang digunakan untuk mengeksport sebuah local file system ke jaringan sehingga file system tersebut dapat diakses oleh mesin2 yang lain.Di dalam cluster yang kami buat, Head node kami jadikan NFS server sedangkan Compute node sebagai NFS client. Directory yang dieksport adalah /home dan /usr/local. Kedua directory tersebut terletak pada partisi hard disk yangterpisah. Di bawah ini adalah partisi hard disk Head node kami:

/dev/sda1       /               ext3    9.5G
/dev/sda2       /usr/local      ext3    29G
/dev/sda3       /home           ext3    29G
/dev/sda6       /var            ext3    1.9G
/dev/sda7       /tmp            ext3    1.9G
swap                                    2G

Untuk menjalankan sebuah NFS server diperlukan service portmap,nfsd,mountd (semoga benar, hehehe). File konfigurasi

yang perlu diubah adalah /etc/exports, /etc/hosts.allow dan /etc/hosts.deny

kofigurasi /etc/exports:

 

#mengeksport /home
/home   192.168.0.0/24(rw,no_root_squash,sync)
#mengeksport /usr/local
/usr/local      192.168.0.0/24(ro,no_root_squash,sync)

konfigurasi /etc/hosts.allow#

# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the ‘/usr/sbin/tcpd' server.
#
portmap: 192.168.0.0/255.255.255.0
konfigurasi /etc/hosts.deny
#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the ‘/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

portmap: ALL

Setelah semua file diatas dikonfigurasi, restart service portmap dan nfs

#/etc/init.d/portmap restart
#/etc/init.d/nfs restart

untuk melihat apakah file system telah berhasil dieksport dapat dilakukan dengan perintah showmount -e localhostatau dengan melihat apakah service - service nfs, portmap dan mountd berjalan dengan memberikan perintah rpcinfo -p.

2. NFS client

NFS client dijalankan oleh mesin komputasi. Sebelum mengimpor file sistem dari NFS server directory /home dan/usr/local perlu diback up.

 

#mv /home /home.old
#mv /usr/local /usr/local.old

Setelah melakukan back up, buat directory baru /home dan /usr/local.

 

#mkdir /home
#mkdir /usr/local

Setelah NFS server telah berjalan perlu dilakukan konfigurasi pada NFS client pada mesin - mesin komputasi.Edit file /etc/fstab pada setiap mesin komputasi.

 

192.168.0.1:/home       /home                   nfs     rw,sync,hard,intr       0 0
192.168.0.1:/usr/local  /usr/local              nfs     ro,sync,hard,intr       0 0

3. NIS server

NIS atau Network Information System adalah sebuah servis di dalam jaringan yang memungkinkan untuk melakukan manajemen user dan konfigurasi - konfigurasi file secara terpusat. File - file yang dapat diatur secara terpusat diantaranya adalah /etc/passwd, /etc/shadow, /etc/groups, /etc/hosts, /etc/services, /etc/networks, /etc/rpc, /etc/protocols,/etc/aliases.

Komputer head node akan dijadikan sebagai NIS server sehingga mempermudah dalam melakukan pengaturan terhadap mesin - mesin compute node. Dengan adanya NIS server, penambahan node juga akan lebih mudah.

untuk membuat head node sebagai NIS server diperlukan paket paket aplikasi sebagai berikut.*ypbind*portmap*ypserv*yp-tools*nscd

konfigurasi file /etc/sysconfig/network

 

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster0
NISDOMAIN=”NIGHTLOGIN”

konfigurasi file /etc/yp.conf

domain NIGHTLOGIN server 127.0.0.1

konfigurasi /etc/nsswitch.conf

passwd: files nis

shadow:     files nis
group:      files nis

konfigurasi /etc/ypserv.conf

 

dns: no
files: 30
slp: no
slp_timeout: 3600
xfr_check_port: yes
* : * : shadow.byname : port
* : * : passwd.adjunct.byname : port

setelah file - file tersebut dikonfigurasi lakukan langkah2 berikut:

 

# nisdomainname NIGHTLOGIN
# /etc/init.d/portmap restart
# /etc/init.d/yppasswdd start
# service ypserv start
# /usr/lib/yp/ypinit -m
# make -c /var/yp
# /etc/init.d/ypbind start

4. NIS Client

NIS client adalah mesin2 komputasi.Untuk menjalankan NIS client diperlukan service2* ypbind* portmap* yp-tools* nscd

konfigurasi file /etc/sysconfig/network

 

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=cluster0
NISDOMAIN=”NIGHTLOGIN”

konfigurasi file /etc/sysconfig/yp.conf

domain NIGHTLOGIN server 192.168.0.1

konfigurasi file /etc/nsswitch.conf

 

passwd:     files nis
shadow:     files nis
group:      files nis

setelah mengkonfigurasi file - file diatas jalankan perintah:

#nisdomainname NIGHTLOGIN
#/etc/init.d/portmap start
#/etc/init.d/ypbind start
#/etc/init.d/nscd start
#/etc/init.d/yppasswd start

jika ingin menambah user di dalam jaringan cluster, cukup dengan menambah user di mesin head node kemudian lakukan perintah make di directory /var/yp

5.SSH

SSH atau Secure Shell digunakan sebagai sarana komunikasi antar proses di dalam cluster. Head node dan compute node harus saling percaya satu sama lain sehingga tidak perlu dilakukan proses authentikasi jika head node akan berkomunikasi dengan compute node. Head node harus membuat publik dan private key untuk diberikan ke mesin2 komputasi.

 

headnode$mkdir .ssh
headnode$cd .ssh
headnode$ssh-keygen -t rsa (akan muncul isian2, tekan enter saja sampai selesai)
headnode$cp id_rsa.pub authorized_keys

(Kita tidak perlu melakukan pengkopian id_rsa.pub ke mesin2 komputasi lain karena user dan directory di setiap mesinadalah sama).

setelah menjalankan perintah diatas, head node dapat melakukan ssh ke mesin komputasi tanpa authentikasi. Konfigurasi SSH tersebut di atas harus dilakukan pada setiap user.

6. LAM-MPI

LAM-MPI adalah salah satu aplikasi yang mengimplementasikan MPI. Terdapat aplikasi lain yang mengimplementasikan MPI, diantaranya adalah OpenMPI dan MPICH. LAM-MPI dapat di download dari www.lam-mpi.org. Instalasi cukupdilakukan oleh head node saja.

Instalasi LAM-MPI:

#tar -xzvf lam-7.1.4.tar.gz
#./configure –prefix=/usr/local (pastikan semua aplikasi yang akan dijalankan oleh semua mesin komputasi
diinstal di prefix=/usr/local)
#make
#make install

Setelah selesai menginstall LAM MPI, edit file /usr/local/etc/lam-bhost.def dengan memberikan nama-nama host setiap mesin yang ada di dalam cluster. Setelah itu jalankan lamboot -v. LAM-MPI hanya dapat dijalankan oleh user biasa. Untuk mencoba aplikasi MPI silakan cari tutorial tentang pemrogramman mpi. Good luck.

–capeeee deeee–

~ YUKK ~

Download artikelnya di sini :

Implementasi Linux Fedora pada Pengembangan Cluster 

 

Posted in: Cluster January 2008

7 Responses to “Membangun infrastruktur HPC cluster dengan Linux”

  1. NL Grid Documentation » Instalasi SGE (sunu gentho edyan) Says:

    […] Membangun infrastruktur HPC cluster dengan Linux […]

  2. thyspir Says:

    Makasih Tutorialnya, saya akan coba dulu. Tapi sekarang saya masih KKN di daerah pelosok…Kalo ada yang tidak dimengerti nanti saya boleh tanya kan???

  3. tomy Says:

    assalamualaikum mas kalau NFS itu bisa gak diakses oleh os yang berbeda misal window? caranya gimana? apa pakai LDAP atau samba? toloong mas di tulis diblognya.
    oh ya mas saya di lab juga bikin grid di STTTelkom berbasis SGE, GLobus grid saya bisa di gabungin gak dengan grid te ugm? bisa minta email atau no hpnya gak kirim ke email saya ya?.
    makasih ya?

  4. thyspir Says:

    oh ya, pernah bangun HPC dengan PVM g? dan apa bedanya dengan LAM/MPI???

  5. gentur Says:

    Kalo NFS setahu saya nggak bisa diakses dengan windows. UI memakai LDAP untuk memanage user dalam cluster. Kalo mau nggabungin ke sistem grid dengan Elektro bisa, hanya saja cluster di elektro belum matang 100% sekarang lagi dikembangkan portal gridnya.
    Kalo pake PVM saya belum pernah. Bedanya dengan MPI saya kurang begitu faham, hanya saja kalo dilihat dari segi pemrogramman parallel, library dan fungsi-fungsi yang dipake berbeda. Saya sarankan untuk memakai MPI saja karena MPI dijadikan standard untuk pemrograman paralel.
    Semoga penjelasan saya cukup membantu teman2.

  6. Harry Says:

    mas,pernah nyoba cluster pake DIPC gak?kalo pernah,bisa tolong tunjuk ajar?.BETe gw,dah 3 ming nyobain,ga bisa.OS nya ubuntu.maksih

  7. mukthy Says:

    Salam, untuk High Availability cluster kira2 ada nggk ya yang free, lengkap sama guidenya dan bisa dijalani di RHEL. minta pencerahannya ya:-),
    Thanks before

Leave a Reply