Bagaimana membuat PC cluster sangat sederhana menggunakan openmpi, paketnya bisa di download disini http://www.open-mpi.org/software/
definisi cluster:Cluster secara umum bisa disebut kumpulan komputer-komputer yang bekerja parallel dalam mengerjakan proses-prosesnya. Pada dasarnya, dua atau lebih komputer yang digunakan untuk memecahkan sebuah masalah bersama-sama, dapat dikategorikan sebagai cluster. Cluster biasanya digunakan untuk tujuan HA (High Availability) atau HPC (High Performance Computing). Tipe yang pertama lebih ditujukan kepada reliabilitas tinggi atau kestabilan dari sebuah sistem. Sedangakan tipe yang kedua menjanjikan tenaga komputasi yang jauh lebih besar dibandingkan tenaga komputer uniprocessor. Cluster HPC sering disebut sebagai cluster Beowulf. Cluster jenis ini merupakan sistem dengan performa dan skalabilitas tinggi, menggunakan infrastruktur jaringan private dan sistem operasi open-source seperti Linux. Kinerja dapat ditingkatkan dengan menambahkan mesin kedalam suatu sistem. Hardware mesin yang digunakan sangat bervariasi, sebanyak yang dapat ditemukan di pasaran, mulai dari 2 (dua) node PC stand-alone dengan Linux dan pemakaian file system bersama, sampai 1024 node di atas jaringan low-latency, berkecepatan sangat tinggi.
Cluster terbagi kedalam 2 (dua) kelas, yaitu:
- Class I Cluster yang dibangun menggunakan hardware/software umum yang ada dipasaran, dengan teknologi standar seperti IDE, SCSI, dan Ethernet.
- Class II Cluster berbiaya tinggi, yang dibangun menggunakan hardware khusus berkecepatan tinggi, untuk mencapai tingkat performa terbaik
disini ane mencoba membangun PC cluster class1,terdiri dari 1 master node dan 2 slave node, semua node menggunakan Linux OS Fedora core4 dengan versi kernel 2.6.15-1
paket-paket utama yang dibutuhkan:
- OpenSSH-server dan client (untuk remote shell antar master-node dan slave-node)
- NFS-server dan client
- GCC (C compiler), GCC-C++ (C++ compiler), GCC-Fortran (Fortran compiler).
- make, dan
- OpenMPI (Message Passing Interface)
topologi:
- Code:
-
Master_node-------switch------Slave_node1
|
|
slave_node2
dimana:
IP master_node=192.168.1.3/24 <--kalo subneting yg baik ga begini ;p
IP slave_node1=192.168.1.4/24
IP slave_node1=192.168.1.5/24
step 1(konfigurasi ini dilakukan di master dan slave)
konfigurasikan IP semua node hingga semua bisa saling terhubung dan berkomunikasi (ga perlu ada tutor set IP ya ;p, skip..)
step 2 edit file
/etc/hosts:(konfigurasi ini dilakukan di master dan slave)
- Code:
-
# Do not remove the following line or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.3 master
192.168.1.4 node01
192.168.1.5 node02
step 3(konfigurasi ini dilakukan di master dan slave)
instalasi paket yg dibutuhkan jika belum ada
- Code:
-
yum install openssh-server nfs gcc gcc-c++ gcc-fortran make
step 4(konfigurasi ini hanya dilakukan di master)
konfigurasi NFS(Network File System). edit file
/etc/exports:
- Code:
-
/home node01(rw,no_root_squash,sync) node02(rw,no_root_squash,sync)
Pada konfigurasi tersebut direktori /home di sharing oleh master-node untuk slave-node node01 dan node02 dengan opsi (rw,no_root_squash,sync). Nantinya /home menjadi direktori kerja untuk proses cluster.
step 5(konfigurasi ini hanya dilakukan di master)
Setelah sharing direktori server dilanjutkan dengan pemberian hak akses pada path-path konfigurasi /etc/hosts.allow untuk host-host yang diperbolehkan mengakses master-node dan file /etc/hosts.deny digunakan untuk memblok akses host-host tertentu. Penambahan host-host node dalam file /etc/hosts.allow dan blok semua akses selain host node pada file /etc/hosts.deny dapat dilakukan dengan memasukkan service name dan host name yang bersangkutan, sebaliknya jika ingin memberikan akses ke semua pengguna, maka file /etc/hosts.deny tidak perlu diubah, berikut contoh konfigurasi agar semua host dapat mengakses file share
edit file
/etc/hosts.allow:
- Code:
-
portmap : ALL
mountd : ALL
statd : ALL
rquotad : ALL
lockd : ALL
jika ingin memfilter untuk host-host tertentu (slave-node) maka konfigurasi menjadi seperti ini:
/etc/hosts.allow - Code:
-
portmap : 192.168.1.4 , 192.168.1.5
mountd : 192.168.1.4 , 192.168.1.5
statd : 192.168.1.4 , 192.168.1.5
rquotad : 192.168.1.4 , 192.168.1.5
lockd : 192.168.1.4 , 192.168.1.5
/etc/hosts.deny - Code:
-
portmap : ALL
mountd : ALL
statd : ALL
rquotad : ALL
lockd : ALL
step 6(konfigurasi ini dilakukan di master dan slave)
siapkan paket openmpi, kemudian extract dan install:
- Code:
-
tar xvjf [nama file openMPI]
masuk ke direktori openmpi yg dibuat lalu:
- Code:
-
./configure
kemudian compile mpi:
- Code:
-
make all install
step 7(konfigurasi ini hanya dilakukan di slave)
mounting direktori yang di share sebelumnya oleh master dengan perintah:
- Code:
-
mount -t nfs master:/home /direktori_mounting
kita anggap direktori mounting = /home
tambahkan command dibawah ini pada
/etc/fstab:
- Code:
-
master:/home /home nfs rw 0 0
step 8(konfigurasi ini hanya dilakukan di master)
pembuatan file authorized_keys pada path direktori ~/.ssh/ dengan menyalin file id_rsa.pub yang telah dibuat sebelumnya di master-node. Untuk ujicoba, dapat melakukan cek kondisi untuk login dari master-node ke slave-node dengan menuliskan perintah “ssh [hostname slave-node]” pada master-node, jika sukses maka authentifikasi user secure shell tidak akan melakukan verifikasi dengan root password.
uji cobaane asumsikan dengan membuat sebuah program "helloword" sederhana menggunakan C (namafilenya helloparalel) kemudian eksekusi file tersebut melalui OpenMPI sebagai Message Passing Interface dengan menuliskan perintah:
- Code:
-
mpirun -v -np 2 -host node01,node02 helloparalel
pada direktori tempat program berada, dimana “-np” adalah number of process, “-v” adalah mode verbose, dan “-host” diisi dengan node yang akan memproses program, dalam contoh disini adalah node01 dan node02. Jika jumlah host cukup banyak maka bisa membuat daftar host dalam bentuk file .txt, dan menggunakan perintah “—hostfile [nama file]”. Untuk contoh proses eksekusi program tersebut dapat dilihat pada gambar dibawah
pada gambar tersebut terlihat jika direktori eksekusi salah atau file eksekusi tidak ada namun host aktif akan menampilkan pesan error dari tiap slave-node. Sedangkan jika semua slave-node mati maka akan tampil pesan error seperti terlihat pada gambar dibawah:
Hal ini membuktikan bahwa konfigurasi cluster sederhana telah berjalan meskipun dengan kondisi standar, dalam artian ane tidak mengatur pola proses, maupun handling kegagalan proses untuk tiap-tiap node. Kondisi ini merupakan kondisi sederhana dari pembangunan komputer-cluster, MPI merupakan library yang mengatur komunikasi antar node pada jaringan cluster termasuk pembagian proses yang akan dikerjakan slave-node, oleh sebab itu konfigurasi dan instalasi harus dilakukan serupa baik pada master-node maupun slave-node.
NB:jangan buang/jual kalau punya PC bekas meskipun low-end, kerjanya bisa membantu PC utama kita untuk melakukan proses-proses berat, misal: bruteforce hash ;p
regards.
5ynL0rd