Thursday, July 21, 2011

CLUSTER



Clustering adalah teknik atau metode menghubungkan beberapa komputer dan menjadikannya bertindak seperti sebuah mesin.
Teknologi cluster

Teknologi cluster ini dibutuhkan untuk mengikat beberapa server agar menjadi suatu server tunggal yang melakukan pekerjaan besar. Dari sisi pengguna mereka tak merasa, bahwa beban kerja yang diberikannya atau sumber daya komputasi yang dibutuhkannya telah dibagi kepada mesin fisik yang berbeda. Beberapa teknologi cluster tersedia di lingkungan Linux dan telah cukup banyak digunakan. Berikut ini disajikan beberapa teknologi cluster yang memiliki perbedaan pendekatan :

* Teknologi Beowulf, yang cenderung digunakan untuk tugas komputasi parallel
* Teknologi MOSIX, yang memberikan suatu 'view' sebagai suatu mesin tunggal, sehingga program biasa dapat dijalankan di atasnya, dan dilakukan distribusi secara otomatis
* Teknologi GAMMA, yang memanfaatkan komunikasi dengan latensi rendah, yang mempu menyediakan mesin virtual paralel lebih dari satu pada mesin fisik parallel
* Teknologi Linux Virtual Server, yang menyediakan server paralel untuk kebutuhan server Internet 



  1. Beowulf Clusters
Konsep Beowulf ini mulai dikembangkan dengan menggunakan perangkat komputer yang sangat sederhana untuk ukuran sekarang, 16 motherboard 486 DX 100 MHz, ethernet 10baseT (Sterling et al., 1995). Tetapi telah mampu menghasilkan kinerja yang cukup menjanjikan. Beowulf menggunakan protokol komunikasi standard Unix, sehingga kemampuannya menjadi terbatasi oleh protokol ini, akan tetapi dalam pengembangannya Beowulf telah melakukan modifikasi implementasi TCP/IP yang hasilnya sangat membantu kualitas implementasi dari Linux pada umumnya. Dari sisi pemrograman Beowulf memanfaatkan library Parallel Virtual Machine (PVM) untuk menyusun aplikasinya. Sebagian besar aplikasi yang dijalankan pada model Beowulf ini memang aplikasi jenis komputasi matematis.
a. sederhana dan mudah dikonfigurasi
b. biaya rendah
c. jaringan
    • komputer-komputer dihubungkan satu dengan yang lainnnya dengan jaringan ethernet tersendiri.
    • Menghubungkan ke jaringan eksternal melalui single gateway 

d.  konfigurasi
    • Dengan COTS – Commodity-off-the-shelf components menjadikan komputer kinerja tinggi namun biaya yang rendah.
    • Komputr di hubungkan dalam sebuah konektor
    • Menggunakan model Either shared-disk atau shared-nothing model  
 Model cluster Beowulf [ www.beowulf.org ] dapat digolongkan antara model Massively Parallel Processor (MPP) seperti nCube, CM5, Convex SPP; Cray T3D dan model Network of Workstations (NOWs). Model MPP biasanya lebih besar, dan memiliki latency interconnect network (waktu tenggang untuk melakukan interkoneksi jaringan) yang lebih rendah daripada Beowulf. Programmer harus selalu memperhatikan tentang lokalitas, load balancing, granularitas dan communication overhead untuk mencapai kinerja terbaik. Bahkan pada model shared memory programer masih mengembangkan program dengan gaya message passing. Program yang tak membutuhkan komputasi dan komunikasi yang 'rumit' biasanya dapat diubah dan dijalankan secara efektif pada cluster Beowulf.

Extreme Linux [ www.extremelinux.org ] , distribusi Linux Beowulf

Pemrograman NOW biasanya berusaha memanfaatkan siklus yang menganggur dari peralatan workstation pada suatu laboratorium atau suatu kampus. Memprogram di lingkungan ini membutuhkan algoritma yang benar-benar toleran terhadap permasalahan load balancing dan latensi komunicasi yang besar. Program yang berjalan pada suatu model NOW akan berjalan sama atau lebih baik pada suatu sistem cluster.

Suatu komputer cluster klas Beowulf berbeda dari suatu NOW pada beberapa hal. Node pada suatu kluster dikhususkan hanya untuk kluster. Hal ini memudahkan permasalahan penyeimbangan kerja (load balancing), sebab kinerja setiap masing-masing node tidak lagi dipengaruhi faktor eksternal. Juga karena interkoneksi jaringan diisolasi dari jaringan eksternal, maka beban jaringan ditentukan hanya oleh aplikasi yang berjalan pada kluster. Hal ini jelas mempermudah masalah yang berkaitan dengan latensi yang tak dapat diprediksikan dalam model NOW. Seluruh node pada cluster dalam wewenang administratif kluster, sebagai contoh interkoneksi jaringan pada kluster tidak terlihat dari luar sehingga otentikasi yang dibutuhkan antar proses hanyalah untuk kebutuhan integritas sistem.

Pada suatu sistem NOW, harus diperhatikan pula mengenai sekuriti jaringan. Contoh lainnya adalah softaware pada Beowulf yang memberikan global process ID. Hal ini memungkinkan suatu mekanisme bagi suatu proses pada suatu node mengirim sinyal kepada suatu proses di node lainnya, semuanya dalam suatu domain pengguna, hal ini tidak dimungkinkan pada model NOW. Perbedaan terakhir parameter sistem operasi diatur agar menaikkan kinerja. Sebagai contoh suatu workstation sebaiknya diset agar memberikan perasaan interaksi yang terbaik misal respon yang seketika, buffer yang pendek dan sebagainya, tetapi pada suatu node pada cluster dapat di-tune untuk memberikan keluaran yang lebih baik untuk job yang besar, sebab mereka tidak berinteraksi secara langsung dengan pengguna.

Konsep Beowulf ini mulai dikembangkan dengan menggunakan perangkat komputer yang sangat sederhana untuk ukuran sekarang, 16 motherboard 486 DX 100 MHz, ethernet 10baseT (Sterling et al., 1995). Tetapi telah mampu menghasilkan kinerja yang cukup menjanjikan. Beowulf menggunakan protokol komunikasi standard Unix, sehingga kemampuannya menjadi terbatasi oleh protokol ini, akan tetapi dalam pengembangannya Beowulf telah melakukan modifikasi implementasi TCP/IP yang hasilnya sangat membantu kualitas implementasi dari Linux pada umumnya.

 Dari sisi pemrograman Beowulf memanfaatkan library Parallel Virtual Machine (PVM) untuk menyusun aplikasinya. Sebagian besar aplikasi yang dijalankan pada model Beowulf ini memang aplikasi jenis komputasi matematis.

2. Model cluster MOSIX

Salah satu contoh penerapan platform cluster yang menyediakan suatu pandangan sebagai suatu komputer besar bagi sistem aplikasi di atasnya adalah MOSIX [ http://www.mosix.cs.huji.ac.il ] MOSIX merupakan suatu modul perangkat lunak cluster dengan Linux yang memungkinkan berbagai komputer cluster yang tersusun dari PC untuk bekerja sama bagaikan suatu sistem tunggal yang besar. Sehingga dengan memanfaatkan MOSIX, tidak perlu melakukan modifikasi pada aplikasi yang digunakan ataupun dengan me-link ke library khusus. Hal ini berbeda dengan pendekatan PVM atau MPI yang digunakan di model Beowulf. Juga tidak perlu membagi process secara khusus ke node yang berbeda, MOSIX akan melakukannya secara otomatis. Misal suatu proses dibuat di node tempat pengguna login maka MOSIX akan memberikan proses ini ke node yang lain secara otomatis. Proses 'ps' akan melihat seluruh proses ini seperti seakan akan proses ini tetap berjalan di node yang sama.

Bagian utama MOSIX yang merupakan algorima pengelolaan sumber daya (resource management) adaptif akan memonitor dan merespon dan mendistribusikan beban di antara node cluster tersebut. Bagian utama tersebut adalah adaptive on-line load balancing dan memory ushering algorithms yang bertanggung jawab terhadap variasi dari penggunaan sumber daya pada sistem cluster tersebut dengan tujuan memaksimalkan kinerja sistem secara keseluruhan. Algoritma ini melakukan migrasi proses secara pre-empsi untuk menentukan prosess yang diberikan pada tiap node, dengan tujuan memanfaatkan sumber daya terbaik yang tersedia, seperti seakan-akan memanfaatkan SMP (Symetric Multiprocessor). Algoritma MOSIX didisain untuk mencapai kinerja maksimum dan kemudahan penggunaan serta bebas overhead untuk mencapai skalabilitas yang baik.

Algoritma pada MOSIX bersifat desentralisasi, setiap node berlaku baik sebagai master untuk proses yang dibuat secara lokal, dan sebagai suatu master bagi proses remote yand dimigrasikan ke node yang lain. Ini berarti suatu node dapat ditambahkan atau dikurangi kapan saja dari konfigurasi cluster tanpa menimbulkan gangguan. Ciri lain dari MOSIX adalah kemampuan self tuning dan algoritma monitor yang akan mendeteksi kecepatan tiap node, dan juga memonitor beban, memori yang sisa dan yang terpakai, juga laju Inter Process Communication (IPC) dan I/O pada tiap node. Informasi ini digunakan untuk menghasilkan keputusan yang mendekati optimal untuk penempatan proses.

MOSIX diimplementasikan pada kernel Linux, dan operasinya transparan terhadap aplikasi. Sehingga suatu aplikasi konvensional bila dijalankan di atas MOSIX akan langsung dijalankan secara paralel tanpa melakukan pemrograman khusus. Sehingga dengan memanfaatkan MOSIX dapat menyusun seberapapun ukuran cluster bahkan pada mesin yang berbeda. 
 
  3. GAMMMA

The Genoa Active Message Machine (GAMMA)[ http://www.disi.unige.it/project/gamma/ ] (Chiola dan Ciaccio, 1997), adalah suatu model jaringan yang memanfaatkan arsitektur Active Message (Eicken, et al, 1995). Model jaringan dengan memanfaatkan Active Message ini dapat memanfaatkan bandwidth dengan lebih baik terutama karena menggunakan prinsip zero copy yang meminimalkan waktu terbuang ketika perjalanan paket dari satu layer ke layer lainnya. Prinsip ini tak membutuhkan intermediate kernel buffering yang cukup menyebabkan overhead. Gamma ini memanfaatkan Active Message. Ide utama dari GAMMA adalah berusaha memanfaatkan librari komunikasi tingkat tinggi seperti MPI di atas mekanisme tingkat rendah yang sangat efisien.

Suatu model GAMMA dimodelkan menjadi dua, yaitu model fisik dan model virtual.

* Suatu model GAMMA fisik, terdiri dari sejumlah M workstation yang dihubungkan dengan LAN kecepatan tinggi. Setiap worsktation di dialamati dengan alamat Ethernet dan bergantung pada card networknya.
* Model GAMMA virtual merupakan node sejumlah N, dimana N < M, dan setiap node merupakan representasi dari workstation pada GAMMA fisikal. Node diberi nomor dimulai dari 0, dengan model penomoran ini memung,kinkan pengalamatan node pada level aplikasi secara mudah. Pada level kernel dilakukan pemetaan antara alamat Ethernet dan PC yang bersangkutan.
* Suatu program parallel dianggap sebagai sejumlah proses yang dijalankan pada tiap node mesin virtual tersebut. GAMMA mendukung mutlitasking, setiap GAMMA virtual dapat di'spawn' pada saat yang sama ke GAMMA fisis. Setiap GAMMA virtual dapat menjalankan program parallel miliknya sendiri untuk pengguna yang berbeda. Sehingga setiap workstation dapat dipakai bersama dengan program paralel lainnya.

Suatu program paralel, dimodelkan sebagai suatu kumpulan sejumlah N proses yang dijalankan secara paralel, masing-masingnya dijalankan pada node yang berbeda di suatu mesin GAMMA virtual. GAMMA mendukung parallel multitasking, sehingga lebih dari satu buah GAMMA virtual dapat di'spawn' pada saat yang sama pada GAMMA fisis yang sama. Setiap GAMMA virtual menjalankan program paralelnya sendiri bergantung pada usernya.

Sebagai konsekuensinya, setiap workstation boleh digunakan bersama oleh lebih dari satu program parlel pada saat yang bersamaan. Setiap GAMMA virtual dan program paralel yang dijalankannya diidentifikasi dengan suatu nomor yang unik untuk tiap platform. Nomor ini disebut Parallel PID. Proses yang termasuk aplikasi paralel dikarakteristikan dengan paralel PID dari aplikasi tersebut. Ini digunakan untuk membedakan proses antara aplikasi paralel yang berbeda pada level setiap workstation. Maksimum 256 Paralel ID dapat diaktifkan pada suatu GAMMA fisik.

Setiap proses memiliki 255 communication port yang diberi nomor dari 1, nomor 0 dicadangkan untuk komunikasi cepat level kernel, seperti pembuatan virtual GAMMA, mulai menjalankan program paralel, atau untuk mensinkronisasi. Setiap port bersifat dua arah (bidirectional). Pointer ke buffer di user space tempat pesan datang disimpan dapat diasosiakan pada suatu port untuk menerima suatu masukan. Suatu penanganan (handler) untuk penerimaan dapat didefinisikan pengguna, dan pengguna dapat juga mendefinisikan sendiri penanganan kesalahan (error handler) yang juga dapat diasosiasikan pada suatu port masukan.

Setiap port yang digunakan sebagai port keluaran, harus dipetakan kepada port lainnya dari proses yang termasuk pada program paralel yang sama ataupun yang lainnya, sehingga berfungsi kanal komunikasi keluar. Cara alternatifnya, suatu port keluaran dapat diikat dengan port masukan sejumlah N-1, setiap port dimiliki suatu proses pada node berbeda pada GAMMA virtual yang sama, hal ini digunakan untuk melakukan broadcast. Akan tetapi tidak satupun dari kasus di atas proses binding dilakukan dengan protokol koneksi secara eksplisit. Programmer yang memastikan dan menentukan benar atau tidaknya topologi komunikasi dari pemetaan port ke port tersebut.

Pada GAMMA protokol komunikasi tidak menyediakan acknowledgment demi pencegahan penghamburan bandwidth dan latensi, hal ini karena GAMMA diterapkan pada lingkungan jaringan lokal yang kecenderungan terkorupsinya paket cukup kecil. Begitu juga tidak disediakan secara eksplisit mekanisme flow control. Penanganan kesalahan harus dilakukan oleh user.

Layer komunikasi dari GAMMA awalnya dimasukkna pada kernel Linux sebagai suatu system call dan struktur data tambahan. System call tambahan ini menangkap panggilan ke kernel melalui suatu alamat khusus yang tak terpakai pada kernel Linux, yang lalu akan dialihkan ke kode GAMMA melalui optimasi jalur. Program penerima pada device driver khusus, dan rutin penanganan interupsi akan didaftarkan pada kernel Linux sebagai fast interrupt, yang berarti path dari kernel dari permohonan interupsi ke rutin interupsi pendek juga.

Proses komunikasi antar proses dilakukan dengan proses mengirimkan system call Active Message 'send'. Ini akan menyalin sebagian isi memori dari ruang memori user pada suatu node ke ruang memori user di node lainnya. Hal ini dilakukan dengan cara mengirim 'message' dari ruang memori user ke adapter jaringan tanpa melalui buffering di kernel. Overhead sangat kecil karena abstraksi rendah dari protokol komunikasi. 'Message' yang lebih panjang dari 100 byte akan dibagi menjadi deretan frame Ethernet (masing-masing panjanyna dari 60 hingga 1536 byte) yang disalinkan langsung ke FIFO buffer transmit dari adapter.

Pada saat frame Ethernet tersebut diterima di sisi lain. Suatu penanganan interupsi (interrupt handler), pada PC yang menerima akan dijalankan dan menyalin isi dari queue pada adapter ke ruang memori dari proses penerima, dan ini juga dilakukan tanpa buffer kernel perantara. Header dari frame memberikan informasi alamat yang dibutuhkan untuk mengalokasikan ruang buffer user yang benar, tempat 'message' yang datang disimpan, juga informasi yang dibutuhkan untuk membentuk kembali 'message' dari beberapa frame yang datang. Setelah data transfer memori-ke-memori, penanganan penerimaan (receive handler) yang didefinisikan user akan dijalankan pada node penerima. Fungsi dari penanganan penerimaan ini untuk menyatukan message yang data ke struktur data dari proses penerima dan menyiapkan buffer pada ruang memori user untuk message berikutnya.

Pada model Active Message, setiap proses yang termasuk pada aplikasi parallel memiliki dua thread yang berbeda :

* Thread dari proses utama, yang melakukan komputasi dan pengiriman 'message'. Thread ini berkaitan dg kebijakan penjadwalan (schedule policy) dari kernel sistem operasi.
* Satu atau lebih thread penerima, setiap thread berkorespondensi dengan penanganan penerimaan. Yang akan dijalankan berdasarkan penerimaan 'message' di bawah kendali rutin interupsi pada device driver, tanpa melibatkan penjadwal di kernel.

Thread penerima bekerja sama dengan thread utama dengan cara melakukan sharing semua struktur data global dari program, sehingga mengurangi latensi yang lazimnya terjadi pada implementasi socket di UNIX.

4.Linux Virtual Server

Pendekatan Linux Virtual Server [ http://www.linuxvirtualserver.org ] berusaha memanfaatkan cluster server yang dihubungkan dengan jaringan kecepatan tinggi yang memiliki arsitektur lepas, sehingga akan lebih handal ketimbang satu sistem yang mengggunakan multiprosesor, serta lebih hemat. Walaupun begitu permasalahan transparansi, skalabilitas, dan high availility service haruslah dipecahkan. Ketika suatu beban web server sudah membesar, solusi dengan menggunakan sistem tunggal berprosesor banyak memiliki keterbatasan. Proses penambahan atau penggantian sistem berprosesor banyak akan mengakbiatkan sistem harus down. Begitu juga dari sisi kehandalan menjadi kurang teruji, karena akan ada satu titik tunggal kelembahan.

Pada model ini server sesungguhnya dapat dihubungkan dengan LAN berkecepatan tinggi ataupun tersebar secara geografis dan dihubungkan dengan WAN kecepatan tinggi. Pada sisi muka dari server sesungguhnya terdapat suatu load balancer yang akan menjadwalkan permintaan pada berbagai server dan membuat pelayanan secara parallel pada cluster akan tampil sebagai layanan dari suatu sistem tunggal yang berasal dari 1 IP tunggal. Skalabilitas dicapai dengan penambahan, dan pengurangan node pada cluster yang dapat dilakukan secara transparans. High availbility diimplementasikan dengan cara mendeteksi node atau daemon yang tak bekerja, dan lalu mengkonfigurasi ulang secara otomatis sistem sesuai dengan kondisi yang ada.

Linux virtual server dikembangkan dari code IP Masquerading dan beberapa port forwarding dari Steven Clarke. Mendukung layanan TCP dan UDP seperti HTTP, Proxy, DNS dan sebagainya. Untuk protokol yang mengirimkan alamat IP dan nomor port sebagai data aplikasi, kode tambahan diperlukan untuk menanganinya. FTP telah didukung.

No comments:

Post a Comment

Task of Study Information Technology Headline Animator

Subscribe this blog