BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab ini membahas perancangan sistem cluster yang akan digunakan sebagai infrastruktur parallel processing. Cluster Linux dibuat menggunakan tiga buah komputer dengan salah satu komputer digunakan sebagai head node dan dua yang lain digunakan sebagai compute node. Masing-masing node menggunakan sistem operasi Linux.
III.1 Analisis Kebutuhan Sistem Cluster Cluster yang dibangun dalam penelitian ini adalah cluster yang didedikasikan untuk komputasi paralel. Cluster tersebut dibangun secara homogen yaitu dengan menyeragamkan sistem operasi dan menggunakan perangkat keras yang tidak jauh berbeda pada masing-masing komputer. Untuk membangun sebuah cluster yang didedikasikan untuk komputasi paralel diperlukan beberapa persyaratan yang ditunjukkan oleh poin-poin sebagai berikut : 1.
Cluster harus memiliki kemampuan mendistribusikan proses komputasi dari mesin head node ke mesin-mesin komputasi yang lain.
2.
Cluster harus memiliki sistem pengaturan file-file data di setiap node yang terpusat sehingga memudahkan dalam administrasi sistem.
3.
Cluster harus memiliki file system global yang dapat diakses oleh semua node untuk keperluan pengaksesan berkas-berkas.
31
32
4.
Head node harus dapat berkomunikasi dengan mesin-mesin node tanpa harus melakukan proses otentikasi.
5.
Cluster harus memiliki sebuah sistem untuk memonitor proses-proses dan beban komputasi baik di masing-masing mesin komputasi maupun beban komputasi dalam satu cluster atau seluruh node. Dari persyaratan-persyaratan yang ditunjukkan oleh poin-poin di atas,
dapat diambil beberapa solusi sebagai berikut : 1.
Pendistribusian proses komputasi menggunakan LAM/MPI. LAM/MPI adalah aplikasi yang mengimplementasikan MPI.
2.
Sistem pengaturan user dan file-file konfigurasi menggunakan Network Information System (NIS). NIS adalah sistem basis data yang terdistribusi yang menggantikan data file-file konfigurasi di masing-masing node sehingga pengaturan node-node dapat dilakukan secara terpusat.
3.
File system global menggunakan Network File System (NFS). NFS adalah file system yang dieksport oleh sebuah server untuk diakses oleh client-client yang diijinkan oleh server.
4.
Proses komunikasi antara head node dengan node dilakukan dengan Secure Shell (SSH).
5.
Sistem pemonitoran proses yang sedang dikerjakan oleh masing-masing node menggunakan ganglia. Ganglia adalah aplikasi pemonitoran proses dan beban komputasi yang dikerjakan oleh cluster
Tabel III.1 menunjukkan ringkasan persyaratan yang harus dipenuhi untuk
33
membangun sebuah cluster dengan solusi yang dapat diambil untuk memenuhi persyaratan tersebut. Tabel III.1 Tabel Persyaratan dan Solusi Dalam Membangun Cluster Persyaratan
Solusi
Kemampuan dalam mendistribusikan Menggunakan LAM/MPI proses komputasi Sistem pengaturan file-file konfigurasi Menggunakan NIS sistem secara terpusat File system yang dapat diakses oleh Menggunakan NFS semua node Sistem komunikasi antar node yang Menggunakan SSH saling percaya Sistem pemantauan proses dijalankan oleh semua node
yang Menggunakan GANGLIA
Sistem operasi yang digunakan adalah sistem operasi Linux karena sistem operasi tersebut dianggap mudah untuk mengimplementasikan solusi-solusi yang ditunjukkan oleh poin-poin diatas. Linux juga merupakan sistem operasi yang bersifat open source sehingga dapat digunakan secara bebas dan gratis. Distro Linux yang dipilih adalah Fedora Core 16 karena distro ini banyak yang menggunakan, sehingga banyak referensi yang dapat digunakan sebagai acuan.
III.1.1 Head Node Head node merupakan komputer di dalam sebuah cluster yang digunakan untuk mendelegasikan tasks atau tugas-tugas yang akan dikerjakan oleh compute node. Komputer ini juga digunakan sebagai tempat bagi pengguna cluster untuk
34
mengakses cluster sehingga pengguna dapat memberikan tugas-tugas komputasi ke dalam cluster. Head node harus dapat diakses melalui jaringan, sehingga head node membutuhkan dua buah ethernet card, satu ethernet card terhubung dengan jaringan publik dan yang lain terhubung ke jaringan prifat atau compute node. Selain sebagai tempat akses dan mendelegasikan tugas ke compute node, head node juga harus menjalankan servis-servis diantaranya: NFS, NIS, DHCP, HTTP, SSH. Servis-servis ini diperlukan oleh head node untuk mengintegrasikan node-node di dalam cluster. Head node menggunakan perangkat keras sebagai berikut : 1.
Hard disk dengan kapasitas 80 Giga Byte.
2.
RAM dengan kapasitas 2 Giga Byte.
3.
Prosesor Intel Pentium Dual Core . Mesin yang digunakan sebagai head node harus memiliki spesifikasi yang
lebih tinggi dibanding dengan mesin-mesin yang digunakan sebagai compute node. Hal tersebut dikarenakan mesin head node melakukan komputasi yang lebih besar dari pada mesin compute node karena mesin head node harus menjalankan service-service yang tidak dijalankan oleh compute node.
III.1.2 Compute Node Compute node adalah komputer pekerja yang menerima task dari head node dan memroses task tersebut. Komputer ini tidak dapat diakses melalui jaringan karena hanya terhubung dengan jaringan privat. Komputer yang
35
difungsikan sebagai compute node hanya dapat diakses oleh head node untuk melakukan proses komputasi. File-file konfigurasi yang berkaitan dengan administrasi pengguna sistem seperti /etc/passwd, /etc/group, dan /etc/shadow berada terpusat di head node. Mekanisme konfigurasi terpusat tersebut dilakukan dengan menggunakan Network Information System (NIS). NIS memungkinkan komputer-komputer compute node akan memiliki pengguna sistem yang seragam dengan pengguna sistem yang dibuat di komputer head node. Penggunaan NIS tersebut tentu akan memudahkan
administrator
sistem
dalam
melakukan
penambahan
atau
penghapusan pengguna di dalam sistem cluster. Compute node menggunakan perangkat keras sebagai berikut : 1.
Hard disk dengan kapasitas 80 Giga Byte.
2.
RAM dengan kapasitas 1 Giga Byte.
3.
Prosesor Intel Pentium . Untuk membangun membangun sebuah cluster, diperlukan langkah-
langkah yang sistematis dan berurutan. Langkah-langkah tersebut ditunjukkan oleh Gambar III.1.
36
Gambar III.1 Langkah-langkah Membangun Cluster
III.2
Infrastruktur Jaringan Cluster Cluster memiliki jaringan sendiri yang terpisah dengan jaringan luar. Hal
tersebut dimaksudkan agar compute node tidak dapat diakses dari luar jaringan sehingga kinerja cluster dalam melakukan parallel processing dapat maksimal. Pengguna hanya dapat mengakses cluster melalui head node saja. Komputer-komputer yang digunakan sebagai compute node tidak perlu diakses oleh pengguna secara langsung sehingga pengguna hanya memberikan tugas komputasi tanpa perlu melakukan konfigurasi sistem ke compute node.
37
Internet
Front end node
Switch
Compute node 1
Compute node 2
Gambar III.2 Topologi Jaringan Cluster Gambar III.2 menunjukkan komputer Head node dan dua compute node yang saling terhubung satu sama lain dan membentuk sebuah jaringan privat dengan topologi bintang. Masing-masing node diberi sebuah IP privat kelas C (192.168.0.1 – 192.168.0.255). Komputer head node diberi IP 192.168.0.1, komputer compute node 1 diberi IP 192.168.0.2, dan komputer compute node 2 diberi IP 192.168.0.3 . Diperlukan pula sistem penamaan nama host untuk node-node sehingga mempermudah dalam mengingat nama node-node di dalam cluster. Pemberian nama host dilakukan dengan mengedit file konfigurasi /etc/sysconfig/network di setiap node. Pada bagian HOSTNAME harus diisi dengan nama host. Node-node di dalam cluster yang dibangun dalam penelitian ini diberinama cluster0 untuk head node, cluster1 untuk compute node 1, dan cluster2 untuk compute node 2. NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=cluster0
Gambar III.3 File Konfigurasi /etc/sysconfig/network pada Head Node Node-node yang berada di dalam cluster harus mengenali nama host antar node. Supaya node dapat saling mengenali nama host, masing-masing node harus
38
mengedit file /etc/hosts dengan mencantumkan nomor IP dan nama host node yang berada di dalam cluster. File /etc/hosts berfungsi untuk memetakan alamat IP ke sebuah nama yang mudah untuk dibaca dan diingat. File ini berbentuk tabel dengan pemisah antar kolom adalah spasi atau tab. Kolom pertama adalah nomor Internet Protokol (IP), kolom kedua adalah nama host, kolom ketiga adalah nama alias host. Konfigurasi /etc/hosts pada komputer head node sedikit berbeda dengan komputer compute node. Komputer head node harus menyertakan nomor IP dan nama host komputer-komputer compute node. 127.0.0.1 192.168.0.1 192.168.0.2 192.168.0.3
localhost cluster0.if cluster0 cluster1.if cluster1 cluster2.if cluster2
Gambar III.4 File Konfigurasi /etc/hosts pada Cluster0 (Head Node) Sedangkan konfigurasi /etc/hosts pada compute node hanya disertakan nama host compute node itu sendiri dan nama host head node. 127.0.0.1 localhost 192.168.0.1 cluster0.if cluster0 192.168.0.2 cluster1.if cluster1
Gambar III.5 File Konfigurasi /etc/hosts pada Cluster1 (Compute Node 1) 127.0.0.1 localhost 192.168.0.1 cluster0.if cluster0 192.168.0.3 cluster2.if cluster2
Gambar III.6 File Konfigurasi /etc/hosts pada Cluster2 (Compute Node 2)
III.3
Integrasi Antar Node
39
Integrasi di dalam cluster tidak hanya dilakukan secara fisik saja yaitu dengan menghubungkan setiap node ke dalam sebuah jaringan interkoneksi. Akan tetapi integrasi juga dilakukan diantara sistem pada masing-masing node. Integrasi sistem yang dimaksud adalah integrasi sistem file, integrasi administrasi, integrasi komunikasi antar node, dan integrasi penyampaian pesan untuk komputasi paralel. Masing-masing node di dalam cluster harus menjalankan servis-servis yang mengimplementasikan integrasi sistem file, integrasi administrasi, integrasi komunikasi di dalam cluster, dan penyampaian pesan. Servis-servis yang berkaitan dengan integrasi sistem file, integrasi sistem administrasi, dan integrasi komunikasi adalah Network File System (NFS), Network Information System (NIS), Secure Shell (SSH), dan Local-Area-Network Multi-Computer/Message Passing Interface (LAM/MPI). Komputer head node difungsikan sebagai server NFS dan NIS, sedangkan node yang lain difungsikan sebagai client NFS dam NIS. Untuk SSH, komputer head node berfungsi sebagai client dan compute node berfungsi sebagai server. Hal ini dimaksudkan karena LAM/MPI mensyaratkan bahwa head node harus dapat login ke compute node melalui SSH untuk menjalankan aplikasi paralel tanpa harus melakukan otentikasi terlebih dahulu. Pengintegrasian sistem di dalam cluster sangat diperlukan untuk mempermudah penggunaan cluster baik bagi administrator sistem maupun pengguna. Dengan adanya integrasi sistem ini, pengguna maupun administrator cluster hanya perlu mengakses head node untuk melakukan proses komputasi paralel maupun administrasi sistem.
40
III.3.1 Network File System (NFS) Perancangan NFS untuk cluster sangat diperlukan. Komputer head node harus menyediakan sejumlah ruang di dalam hard disk untuk dijadikan sebagai NFS. Hard disk tersebut harus dipartisi sesuai dengan kebutuhan head node maupun compute node.
Gambar III.7 menunjukkan partisi hard disk pada
komputer head node. /dev/sda1 /dev/sda2 /dev/sda3 swap
/ /usr/local /home
ext3 ext3 ext3
6.5G 1G 1G
2G 2MB
biosboot
Gambar III.7 Partisi Hard Disk pada Head Node Partisi hard disk pada head node yang akan difungsikan sebagai NFS adalah /dev/sda2 dan /dev/sda3. Kedua partisi tersebut memiliki label /usr/local dan /home. Sistem file /usr/local dan /home di dalam Linux digunakan sebagai tempat menyimpan aplikasi-aplikasi tambahan yang diinstal ke dalam sistem dan sebagai directory yang digunakan untuk menyimpan berkas-berkas pengguna sistem kecuali root. Dengan demikian semua node memiliki satu directory /usr/local dan /home yang diakses melalui NFS. Instalasi aplikasi-aplikasi tambahan yang dapat dijalankan oleh semua node dan penambahan directory pengguna cukup dilakukan pada head node.
a.
NFS Server (Head Node) Untuk menjalankan NFS server diperlukan servis-servis portmap, nfsd,
41
dan mount. Servis-servis tersebut harus berjalan secara background dan hidup pada saat komputer menyala. Selain menjalankan servis-servis portmap, nfsd, dan mount perlu juga dilakukan pengeditan file-file konfigurasi /etc/exports, /etc/hosts.deny, dan /etc/hosts.allow. /home /usr/local
192.168.0.0/24(rw,no_root_squash,sync) 192.168.0.0/24(ro,no_root_squash,sync)
Gambar III.8 File Konfigurasi File /etc/exports File konfigurasi /etc/exports digunakan untuk mendefinisikan directorydirectory yang akan diekspor oleh NFS server dan komputer-komputer yang diperbolehkan untuk mengakses NFS server. Di dalam Gambar III.8 /home dan /usr/local didefinisikan sebagai NFS yang akan diakses oleh NFS client yang memiliki nomor IP antara 192.168.0.1 – 192.168.0.254 . Pada /home terdapat parameter rw,no_root_sqash,sync. Parameter rw menunjukkan bahwa directory /home dapat diakses oleh NFS client dengan hak akses baca dan tulis. Parameter no_root_squash menunjukkan bahwa root atau super user yang berada pada komputer yang bertindak sebagai NFS client diperlakukan sebagaimana root pada NFS server.
Parameter sync mencegah
terjadinya kerusakan pada data jika server tiba-tiba reboot. Parameter-parameter pada /usr/local hampir sama dengan /home. Perbedaannya hanya terletak pada parameter ro, parameter ro tersebut menunjukkan bahwa NFS client hanya memiliki akses baca. Selain file konfigurasi /etc/exports diperlukan juga pengeditan file konfigurasi /etc/hosts.deny dan /etc/hosts.allow. Kedua file konfigurasi tersebut
42
berfungsi sebagai penentu pengaksesan servis-servis yang terdapat di dalam server oleh komputer-komputer lain. Cara kerja kedua file ini ditunjukkan oleh poin-poin di bawah ini : 1.
Server akan melakukan pengecekan terhadap file /etc/hosts.allow untuk melihat apakah komputer yang mengakses sesuai dengan daftar komputer yang diizinkan untuk mengakses. Jika komputer tersebut terdapat di dalam daftar maka komputer tersebut diizinkan untuk mengakses.
2.
Jika komputer yang mengakses tidak terdapat pada daftar /etc/hosts.allow maka server akan melakukan pengecekkan terhadap file /etc/hosts.deny. Jika komputer yang mengakses terdapat di dalam daftar /etc/hosts.deny maka komputer tersebut tidak diberikan izin akses.
3.
Jika komputer yang mengakses tidak terdapat pada file /etc/hosts.allow dan /etc/hosts.deny maka komputer tersebut diberikan izin untuk mengakses. portmap: 192.168.0.0/255.255.255.0
Gambar III.9 File Konfigurasi /etc/hosts.allow Gambar III.9 menunjukkan konfigurasi /etc/hosts.allow. Baris portmap: 192.168.0.0/255.255.255.0 menunjukkan bahwa semua komputer dengan rentang nomor IP tersebut diberikan izin untuk mengakses servis portmap pada NFS server. portmap: ALL
Gambar III.10 File Konfigurasi /etc/hosts.deny Gambar III.10 menunjukkan konfigurasi /etc/hosts.deny. Baris portmap: ALL menunjukkan bahwa semua komputer tidak diizinkan untuk mengakses
43
servis portmap pada NFS server. Setelah file /etc/exports, /etc/hosts.allow, dan /etc/hosts.deny dikonfigurasi dengan benar, langkah selanjutnya adalah menjalankan servis nfsd dan portmap melalui terminal. Servis-servis tersebut harus dijalankan oleh head node pada saat komputer menyala. #/etc/init.d/portmap restart #/etc/init.d/nfs restart
Gambar III.11 Menjalankan Servis Portmap dan Nfsd b. NFS Client (Compute node) NFS client dijalankan oleh compute node dengan melakukan mounting sistem file yang diekspor oleh NFS server. Directory yang akan di-mount oleh NFS client adalah /usr/export dan /home. Directory /usr/local yang di-mount oleh compute node berisi aplikasi-aplikasi tambahan yang diinstal oleh head node sehingga pada compute node tidak perlu menginstall aplikasi tambahan satupersatu. Sedangkan pada directory /home berisi home directory pengguna sistem sehingga pengguna sistem yang berada pada compute node memiliki home directory yang sama dengan head node. Mounting home directory ini sangat penting karena berkas-berkas yang dibutuhkan pengguna untuk melakukan komputasi paralel akan disimpan di dalam directory /home. Sebelum melakukan proses mounting NFS server perlu dilakukan backup directory /usr/local dan /home yang berada pada sistem file lokal di masingmasing compute node. #mv /home /home.old #mv /usr/local /usr/local.old #mkdir /home #mkdir /usr/local
44
Gambar III.12 Backup Directory /usr/local dan /home Proses mounting NFS harus dilakukan pada saat komputer-komputer compute node menyala. Cara ini dilakukan dengan melakukan pengeditan file konfigurasi /etc/fstab. Fil
e /etc/fstab adalah file konfigurasi yang berisi
tabel sistem file yang di-mount oleh sistem pada saat komputer menyala. File ini berbentuk tabel dengan tiap-tiap kolom dipisahkan oleh spasi atau tab. 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
Gambar III.13 File Konfigurasi /etc/fstab Kolom pertama berisi NFS yang diekspor oleh NFS server. Kolom kedua berisi directory tempat NFS server di-mount. Kolom ketiga berisi tipe file dari sistem file yang di-mount. Kolom keempat berisi parameter-parameter. Parameterparameter yang dipakai di dalam file konfigurasi /etc/fstab mirip dengan parameter yang digunakan pada /etc/exports. Pada file konfigurasi /etc/fstab yang ditunjukkan oleh Gambar III.13 terdapat parameter hard dan intr. Parameter hard akan memberitahukan bahwa program yang sedang mengakses NFS yang dimount akan hang jika server mengalami kegagalan. Proses tersebut tidak dapat diinterupsi atau dihentikan. Parameter intr mencegah terjadinya hang pada program yang sedang mengakses NFS dengan memberikan interupsi. Jadi keduap parameter hard dan intr perlu diberikan untuk mencegah program hang. Kolom kelima dan keenam tidak memiliki pengaruh yang signifikan sehingga dapat diisi dengan nilai 0. Setelah file /etc/fstab dikonfigurasi dengan benar, sistem akan melakukan mounting NFS saat booting.
45
III.3.2 Network Information System (NIS) File-file konfigurasi di dalam cluster yang diatur oleh NIS adalah /etc/passwd, /etc/group, dan /etc/shadow. Ketiga file konfigurasi tersebut berkaitan dengan sistem administrasi pengguna. Jika di dalam cluster akan ditambahkan pengguna maka cukup dengan menambahkan pengguna pada head node dan kemudian NIS server akan mendistribusikan konfigurasi pada file-file /etc/passwd, /etc/group, dan /etc/shadow ke node-node yang lain sehingga nama pengguna dapat diseragamkan di semua node. Dengan adanya keseragaman identitas pengguna sistem di dalam cluster, administrasi sistem menjadi lebih mudah untuk dilakukan. a.
NIS Server (Head Node) Di dalan cluster, head node difungsikan sebagai NIS server. Untuk
menjalankan NIS server, head node harus memiliki aplikasi ypbind, portmap, ypserv, yp-tools, dan ncsd. Selain itu head node juga perlu mengedit beberapa file-file konfigurasi yang berkaitan dengan NIS. File konfigurasi tersebut adalah /etc/sysconfig/network, /etc/yp.conf, /etc/ypserv.conf, dan /etc/nsswitch.conf. Sebuah NIS harus memiliki paling tidak satu domain. Domain di dalam NIS digunakan sebagai identitas terhadap sekumpulan file-file konfigurasi yang diatur di
dalam
NIS. Domain NIS
ini
didefinisikan
di
dalam
file
/etc/sysconfig/network. NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=cluster0 NISDOMAIN=”SERVER.CLUSTER”
Gambar III.14 File Konfigurasi /etc/sysconfig/network pada Head Node
46
Pendefinisian file-file konfigurasi yang akan diatur oleh NIS dilakukan dengan mengedit file /etc/nsswitch.conf. Bagian yang perlu diedit atau ditambahkan di dalam file /etc/nsswitch.conf ditunjukkan oleh Gambar III.15. passwd:
files nis
shadow: group:
files nis files nis
Gambar III.15 File Konfigurasi /etc/nsswitch.conf pada Head Node File konfigurasi yang lain adalah yp.conf dan ypserv.conf. Yp.conf digunakan oleh NIS client untuk mendefinisikan NIS server yang digunakan. NIS server juga perlu mengkonfigurasi file ini karena NIS server juga menggunakan konfigurasi NIS. Sedangkan ypserv.conf hanya dikonfigurasi pada NIS server. domain NIGHTLOGIN server 192.168.0.1
Gambar III.16 File Konfigurasi /etc/yp.conf pada Head Node Konfigurasi yp.conf pada Gambar III.16 adalah konfigurasi yp.conf pada head node yang menunjuk domain dan NIS server pada dirinya sendiri. NIS server juga melakukan binding dengan dirinya sendiri untuk mendapat layanan NIS. dns: no files: 30 slp: no slp_timeout: 3600 xfr_check_port: yes * : * : shadow.byname : port * : * : passwd.adjunct.byname : port
Gambar III.17 File Konfigurasi /etc/ypserv.conf pada Head Node Setelah file-file konfigurasi dikonfigurasi dengan benar, langkah selanjutnya adalah menjalankan aplikasi NIS server.
47
# # # # # # # # # # # #
nisdomainname NIGHTLOGIN systemctl starts rpcbind.server systemctl starts nfs-server.server systemctl starts nfs-lock.server systemctl starts nfs-idmap.server systemctl enable rpcbind.server systemctl enable nfs-server.server systemctl enable nfs-lock.server systemctl enable nfs-idmap.server /usr/lib/yp/ypinit -m make -c /var/yp /etc/init.d/ypbind start
Gambar III.18 Perintah-Perintah Menjalankan NIS Server Selain menjalankan perintah yang ditunjukkan oleh Gambar 3.18 perlu pula menjalankan servis portmap, yppasswd, ypinit, dan ypbind pada saat komputer booting. Hal ini dimaksudkan agar NIS server selalu siap memberikan layanan kepada NIS client atau node-node di dalam cluster. b. NIS Cient (Compute Node) Compute node difungsikan sebagai NIS client. NIS client melakukan binding menggunakan ypbind dengan NIS server untuk mendapat layanan dari NIS server. Selain ypbind, servis-servis lain yang diperlukan oleh NIS client adalah portmap, yp-tools, dan ncsd. File-file konfigurasi yang perlu untuk dilakukan konfigurasi yang berkaitan dengan NIS client adalah /etc/sysconfig/network, /etc/yp.conf dan /etc/nsswitch.conf. NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=cluster1 NISDOMAIN=”SERVER.CLUSTER”
Gambar III.19 File Konfigurasi /etc/sysconfig/network pada Compute Node File konfigurasi yang ditunjukkan oleh Gambar III.19 adalah contoh file konfigurasi pada cluster1 yaitu salah satu compute node di dalam cluster. File
48
konfigurasi untuk compute node yang lain hanya berbeda pada bagian HOSTNAME saja karena bagian tersebut adalah nama host untuk masing-masing compute node. domain SERVER.CLUSTER server 192.168.0.1
Gambar III.20 File Konfigurasi /etc/yp.conf pada Compute Node File konfigurasi yang ditunjukkan oleh Gambar III.20 adalah file konfigurasi /etc/yp.conf pada semua node yang menggunakan layanan NIS di dalam jaringan cluster. passwd: shadow: group:
files nis files nis files nis
Gambar III.21 File Konfigurasi /etc/nsswitch.conf pada Compute Node File /etc/nsswitch.conf juga perlu dikonfigurasi untuk menentukan file-file apa
saja
yang
digunakan
sebagai
konfigrasi
sistem.
Di
dalam
file
/etc/nsswitch.conf yang ditunjukkan oleh Gambar III.21 terdapat parameter nis yang mengindikasikan bahwa file passwd, shadow, dan group menggunakan konfigurasi dari NIS server. Setelah file-file dikonfigurasi dengan benar, langkah selanjutnya adalah menjalankan servis-servis yang dibutuhkan dalam proses binding dengan NIS server. Perintah-perintah yang digunakan untuk melakukan binding dengan NIS server ditunjukkan oleh Gambar III.22. #nisdomainname SERVER.CLUSTER #/etc/init.d/portmap start #/etc/init.d/ypbind start #/etc/init.d/nscd start #/etc/init.d/yppasswd start
Gambar III.22 Perintah-printah Untuk Melakukan Binding Dengan NIS Server
49
III.3.3 Secure Shell (SSH) Kunci privat dan publik harus dibuat oleh masing-masing pengguna sistem cluster. Pembuatan kunci privat dan public cukup dilakukan pada head node saja. Pengguna tidak perlu membuat salinan kunci publik ke masing-masing compute node karena home directory yang digunakan oleh pengguna adalah NFS, sehingga semua pengguna mengakses home directory yang sama. Gambar III.23 menunjukkan langkah-langkah pembuatan kunci privat dan public dengan SSH. pengguna@cluster0$mkdir .ssh pengguna@cluster0$cd .ssh pengguna@cluster0$ssh-keygen -t rsa pengguna@cluster0$cp id_rsa.pub authorized_keys
Gambar III.23 Pembuatan Kunci Publik dan Privat Menggunakan SSH
III.3.4 Local Area Multicomputer/Message Passing Interface (LAM/MPI) Aplikasi LAM/MPI harus diinstal ke dalam cluster untuk dapat digunakan. Proses instalasi cukup dilakukan pada head node dengan directory instalasi diletakkan di /usr/local. Dengan meletakkan directory instalasi LAM/MPI di /usr/local, secara otomatis LAM/MPI juga akan terinstal pada semua node di dalam cluster karena /usr/local adalah NFS yang diakses oleh semua node. Langkah-langkah instalasi LAM/MPI ditunjukkan oleh Gambar III.24 . #tar -xzvf lam-7.1.4.tar.gz #./configure --prefix=/usr/local #make #make install
Gambar III.24 Langkah-Langkah Instalasi LAM/MPI Setelah instalasi LAM/MPI selesai, langkah selanjutnya adalah melakukan
50
pengeditan file konfigurasi lam-bhost.def yang terletak di /usr/local/etc/lambhost.def. File konfigurasi ini berisi mengenai daftar nama-nama host yang akan digunakan oleh LAM/MPI untuk menjalankan aplikasi paralel. cluster0 cluster1 cluster2
Gambar III.25 File Konfigurasi lam-bhost.def LAM/MPI dijalankan oleh LAM Runtime Envirinment (RTE).
RTE
adalah daemon yang berjalan pada level pengguna sistem. Daemon yang dijalankan RTE adalah lamd. Daemon tersebut harus dijalankan oleh semua node yang terdapat di file /usr/local/etc/lam-bhost.def. Untuk menjalankan daemon lamd, cukup dengan memberikan perintah lamboot pada head node. Lamboot akan mengakses setiap node di dalam cluster melalui SSH dan menjalankan lamd di masing-masing node. LAM/MPI juga memiliki standar untuk melakukan kompilasi dan eksekusi program yang ditulis dengan pustaka-pustaka MPI. Standar compiler yang dimiliki oleh LAM/MPI diantaranya adalah fortran, C++, dan C. Perintah untuk melakukan kompilasi program MPI ditunjukkan oleh tabel III.2. Tabel III.2 Bahasa Pemrograman dan Compiler Paralel Bahasa Pemrograman
Compiler
Fortran
mpif77
C++
mpic++
C
Mpicc
Untuk menjalankan program paralel, digunakan perintah mpirun.
51
Penggunaan perintah mpirun ditunjukkan oleh Gambar III.26. pengguna@cluster0$ mpirun C
Gambar III.26 Perintah Menjalankan Aplikasi Paralel Aplikasi LAM/MPI berjalan sebagai daemon (lamd) di semua node. Penghentian daemon tersebut harus diinisiasikan oleh head node dengan perintah lamhalt. Penghentian proses daemon LAM/MPI ditunjukkan oleh Gambar III.27. pengguna@cluster0$ lamhalt
Gambar III.27 Perintah Menghentikan Daemon LAM/MPI
III.3.5 Ganglia Ganglia harus diinstal di tiap-tiap node di directory sistem masing-masing. Hal tersebut harus dilakukan karena ganglia harus memiliki file konfigurasi yang spesifik untuk tiap-tiap node. # # # # #
yum –y gcc ganglia tar xzvf ../ganglia-3.0.6.tar.gz && cd ganglia-3.0.X ./configure make make install
Gambar III.28 Instalasi Ganglia Dalam menjalankan proses monitoring, ganglia menjalankan daemon dengan nama gmond di setiap node di dalam cluster. Gmond di tiap-tiap node akan mengirimkan statistik proses ke komputer head node melalui UDP. Statistik yang diterima oleh head node akan diproses dan disimpan oleh gmetad. Data yang telah dioleh oleh gmetad akan ditampilkan melalui web pada head node. Ganglia memiliki dua file konfigurasi, yaitu /etc/gmond.conf dan /etc/gmetad.conf. File konfigurasi /etc/gmond.conf harus dikonfigurasi pada
52
setiap node, sedangkan /etc/gmetad.conf hanya dikonfigurasi di head node saja. File konfigurasi /etc/gmod.conf pada head node berbeda dengan /etc/gmond.conf pada compute node. Pada head node /etc/gmond.conf dikonfigurasi sebagai penerima data, sedangkan pada compute node /etc/gmond.conf dikonfigurasi sebagai pengirim data. globals { daemonize = yes setuid = yes user = ganglia debug_level = 0 max_udp_msg_len = 9600 mute = no deaf = no host_dmax = 3600 /*secs */ cleanup_threshold = 300 /*secs */ gexec = no } cluster { name = "Nightlogin" owner = "Nightlogin" } host { location = "lab informatika" } udp_send_channel { host = 192.168.0.1 port = 8650 ttl = 1 } udp_recv_channel { port = 8650 family = inet4 } tcp_accept_channel { port = 8649 }
Gambar III.29 File Konfigurasi /etc/gmond.conf pada Head Node globals { daemonize = yes setuid = yes user = ganglia debug_level = 0 max_udp_msg_len = 1472 mute = no
53
deaf = no host_dmax = 0 /*secs */ cleanup_threshold = 300 /*secs */ gexec = no } cluster { name = "Nightlogin" owner = "Nightlogin" } host { location = "lab informatika" } udp_send_channel { host = 192.168.0.1 port = 8650 ttl = 1 } tcp_accept_channel { port = 8649 }
Gambar III.30 File Konfigurasi /etc/gmond.conf pada Compute Node data_source "My Cluster" node1 node2 setuid_username "ganglia"
Gambar III.31 File Konfigurasi /etc/gmetad.conf Untuk menjalankan antar muka web, perlu dijalankan servis httpd pada head node sebagai web server. # /etc/init.d/httpd start
Gambar III.32 Menjalankan Servis httpd Antar muka web ganglia dapat diakses melaui web browser pada head node dengan alamat URL http://localhost/ganglia.
III.4
OCTAVE MPITB Di dalam cluster, OCTAVE dengan modul MPITB dijadikan contoh
aplikasi yang dapat dijalankan untuk melakukan komputasi paralel. Aplikasi OCTAVE dan modul MPITB diunduh secara terpisah. OCTAVE dapat diunduh
54
dari situs http://www.octave.org sedangkan MPITB diunduh melalui situs http://atc.ugr.es/javier-bin/mpitb. Di dalam penelitian ini, versi OCTAVE yang digunakan adalah octave2.9.18 sedangkan versi MPITB yang digunakan mpitb-beta-FC6-OCT2912LAM713-OMPI123. Instalsi OCTAVE dan modul MPITB dilakukan oleh head node dengan directory instalasi /usr/local supaya secara otomatis terinstal pada semua node. # tar xzvf octave-2.9.18.tar.gz && cd ganglia-3.0.X # ./configure --prefix=/usr/local --enable-readline \ --with-gnuplot --enable-shared --enable-dl # make # make install
Gambar III.33 Instalasi OCTAVE Instalasi MPITB hanya melakukan ekstrak file mpitb-beta-FC6-OCT2912LAM713-OMPI123.tar.bz pada directory instalasi OCTAVE yaitu /usr/local. #tar xjvf mpitb-beta-FC6-OCT2912-LAM713-OMPI123.tar.bz2
Gambar III.34 Ekstraksi MPITB Setelah melakukan ekstraksi, langkah selanjutnya adalah melakukan kompilasi ulang MPITB. # # # # # #
cd /usr/local/mpitb rm –rf DLD cd src-2.9.12 make cd .. ln –s DLD-oct2.9.12-lam_7.1.3-gcc4.1.2-i386 DLD
Gambar III.35 Kompilasi Ulang MPITB Supaya OCTAVE dapat memanggil fungsi-fungsi MPI yang disediakan oleh MPITB, OCTAVE harus memanggil startup script MPITB yang kemudian
55
dijadikan OCTAVE startup script. Pembuatan OCTAVE startup script harus dilakukan di setiap home directory pengguna cluster supaya setiap pengguna dapat menjalankan aplikasi OCTAVE MPITB. pengguna@cluster0$ ln –s \ /usr/local/mpitb/startups/startup_MPITB.m .octaverc
Gambar III.36 Pembuatan OCTAVE Startup Script Setelah membuat OCTAVE starup script, aplikasi OCTAVE dapat dijalankan dan pengguna dapat membuat program dengan OCTAVE yang mengimplementasikan MPI.