Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu Pembahasan mengenai clustering dengan skema load balancing pada web server sudah banyak ditemukan. Salah satu pembahasan yang pernah dilakukan adalah Perancangan dan Implementasi Web Server Clustering dengan Skema Load Balance menggunakan Linux Virtual Machine via NAT. Pembahasan tersebut didapatkan bahwa dengan mengimplementasikan web server cluster dengan skema load balancing dapat meningkatkan performa sistem yang lebih baik dibandingkan dengan menggunakan web server tunggal serta dapat juga memberikan availabilitas sistem yang terjaga dan skalabilitas yang cukup untuk dapat tetap melayani setiap request dari penguna (Sembiring, 2008). Melalui penelitian ini balancer akan dibangun dengan menggunakan nginx yang sudah mendukung untuk server load balancing. Nginx akan diimplementasikan pada sisi front server dari web server clustering. Kemudian pada implementasi web server clustering untuk proses replikasi dibangun dengan menggunakan MySQL cluster. 2.2 Jaringan Komputer Jaringan komputer adalah sekumpulan komputer yang terhubung satu dengan lainnya menggunakan protocol komunikasi melalui media komunikasi sehingga dapat menggunakan sumber 5 6 daya bersama seperti harddisk, printer, dan sumber informasi lainnya. Tujuan dibangunnya jaringan komputer adalah membawa suatu informasi secara tepat dan tanpa adanya kesalahan dari sisi pengirim menuju sisi penerima melalui media komunikasi. Sedangkan manfaat yang bisa didapat adalah sharing resources, bertujuan agar sumber daya yang ada dalam jaringan baik berupa program, perangkat keras atau lainnya dapat dimanfaatkan oleh orang yang sedang mengakses jaringan komputer tersebut. Integrasi data yang memungkinkan pengaksesan sebuah data tidak selalu harus bergantung pada satu komputer saja tetapi dibagibagi dalam beberapa lokasi, tetapi antar lokasi penyimpanan data tersebut terjadi suatu mekanisme yang baik sehingga user hanya mengetahui data tersebut bisa diakses tanpa harus tahu dimana lokasi penyimpanannya Keamanan data jaringan komputer memberi perlindungan bagi user untuk menyimpan data sehingga tidak sembarang orang bisa mengaksesnya demikian juga untuk sumber-sumber daya lainnya (Iwan, 2005). 2.3 Web Server Web server merupakan perangkat lunak server yang menjadi tulang belakang dari world wide web (WWW). Web server menunggu permintaan dari client yang menggunakan browser seperti Netscape Navigator, Internet Explorer, Mozilla dan program browser lainnya. Jika terdapat permintaan dari browser, maka web server akan memproses permintaan itu kemudian memberikan hasil 7 prosesnya berupa data yang diinginkan pada browser. Data ini mempunyai format yang standar, disebut dengan format SGML (Standard General Markup Language). Data yang berupa format ini kemudian akan ditampilkan oleh browser sesuai dengan kemampuan browser (Lukitasari, 2010). Sekarang ini format HTML (HyperText Markup Language) lebih banyak digunakan karena lebih sederhana dan mudah dipelajari. Web server berkomunikasi dengan client-nya (web browser), web server memakai protokol sendiri, yaitu HTTP (HyperText Transfer Protocol). 2.4 Cluster Salah satu definisi komputer cluster yang cukup mudah diterima diberikan oleh Robert W. Lucke sebagai kumpulan komputer (lebih dari satu komputer) yang berada pada suatu tempat tertentu untuk memberikan suatu fungsi layanan tertentu atau menjalankan algoritma paralel (Andria, 2010). Secara mendasar fungsi dari cluster dibedakan menjadi tiga (Ade, 2006) yang pertama digunakan untuk meningkatkan ketersediaan dari sistem yang handal (reliable) atau dikenal dengan HA (High Availability). Cluster yang kedua adalah load balancing, yang umumnya digunakan pada web server yang sangat sibuk. Load balancing menggunakan beberapa komputer node menjadi host dari website yang sama, dan jika ada permintaan untuk mengakses halaman web maka permintaan akan diarahkan kekomputer node yang bebannya lebih rendah. HPC (High Performance Cluster) merupakan jenis cluster ketiga yang berfungsi untuk kinerja komputasi tinggi dan merupakan tujuan dari pengguna tradisional dari PC cluster, seperti 8 peneliti, industri riset dan pengembangan. Cluster ini menjalankan program secara paralel untuk aplikasi yang sangat banyak memakan waktu. Struktur dari sistem cluster dapat dilihat pada Gambar 2.1 : Gambar 2.1 Skema Logic Sistem Cluster (Rio, 2010) 2.5 Web server Clustering Web server clustering yang dimaksud adalah sekumpulan dari beberapa web server tunggal yang dihubungkan melalui jaringan yang bekerja bersama-sama dalam menangani request dari user. Clustering pada web server ini terletak pada database dari sistem tersebut. 2.5.1 Database Database adalah sebuah koleksi dari data yang saling berelasi, dimana data tersebut disimpan pada komputer sehingga sebuah program komputer dapat berinteraksi dan menggunakan data yang disimpan tersebut untuk menyelesaikan masalah ataupun menjawab pertanyaan (Elmasri, 1994). Data perlu disimpan dalam suatu database untuk keperluan penyediaan informasi lebih lanjut. Data didalam database perlu diorganisasikan sedemikian rupa sehingga informasi yang terkandung didalamnya mudah diakses. 9 Database merupakan komponen utama sistem informasi karena semua informasi untuk pengambilan keputusan berasal dari data didatabase. Pengelolaan database yang buruk dapat mengakibatkan ketidaktersediaan data penting yang digunakan untuk menghasilkan informasi yang diperlukan dalam pengambilan keputusan. 2.5.2 Database Terdistribusi Database terdistribusi bisa diartikan sebagai kumpulan dari data-data dengan berbagai bagian yang ditangani DBMS (Data Base Management System) secara terpisah dan berjalan pada sistem komputer. Semua komputer saling terhubung dan setiap sistem mempunyai kemampuan memproses untuk melayani permintaan lokal. Setiap sistem berpartisipasi baik dalam melaksanakan satu atau lebih permintaan. Beberapa permintaan memerlukan data tidak hanya dari satu tempat melainkan beberapa tempat atau lebih. Database asli yang terdistribusi itu sendiri tidak terlihat oleh user dan transparansi dari data tersebut dapat ditunjukkan dalam berbagai cara. Distribusi data dalam DBMS ada 2 bentuk : a. Data partitioning (data yang terpisah-pisah) b. Data replication (replikasi data) Kedua bentuk distribusi data di atas merupakan transparan artinya tampak nyata oleh user dalam sistem distribusi database. Pada database terdistribusi (distributed database), data disimpan pada beberapa tempat (site), setiap tempat diatur dengan suatu DBMS (Database Management System) yang dapat berjalan secara independent. 10 2.5.3 Database Cluster Database cluster adalah kumpulan dari beberapa server yang berdiri sendiri yang kemudian bekerjasama sebagai suatu sistem tunggal (Hodges, 2007). Database pada masa sekarang ini dituntut agar dapat berjalan dengan cepat, mempunyai kehandalan dan keseterdiaan yang tinggi. Dengan clustering, database yang disimpan dapat terbagi kebeberapa mesin dan pada saat aplikasi berjalan semua mesin yang menyimpan data tersebut dianggap sebagai satu kesatuan. Metode clustering seperti ini sangat baik untuk load-balancing dan penanganan system failure karena kemampuan tiap mesin akan digunakan dan jika ada salah satu mesin yang mengalami failure maka sistem tidak akan langsung terganggu karena mesin lain akan tetap berfungsi. Kemampuan clustering memungkinkan sebuah database tetap hidup dalam waktu yang lama. Berikut adalah contoh arsitektur dari database cluster. a. Shared Disk Cluster Arsitektur shared disk cluster menggunakan server independent dan berbagi sebuah sistem penyimpanan tunggal. Setiap server mempunyai proccesor dan memori sendiri, tetapi berbagi disk resources. Implementasi utama dari shared-disk cluster adalah bukan untuk scalability. Shared-disk cluster diimplementasikan untuk availability dan menambah node cadangan sebagai failover node. Struktur shared-disk cluster terlihat seperti Gambar 2.2. 11 Gambar 2.2 Shared Disk Cluster (Prabowo, 2011) b. Shared Nothing Cluster Dalam arsitektur shared nothing cluster, setiap server dalam cluster menangani proccesor, memori, storage, record locks dan transaksi yang terpisah dan melakukan koordinasi dengan server lain melalui jaringan komputer. Proses permintaan data suatu node harus mengirimkan pesan ke node lainnya yang memiliki data untuk diakses. Hal ini juga dilakukan saat koordinasi data yang dilakukan pada node yang lain seperti insert, select, update dan delete. Berbeda dengan shared disk, shared nothing didesain untuk high availability dan scalability. Struktur shared-nothing cluster terlihat seperti Gambar 2.3. Gambar 2.3 Shared Nothing (Prabowo, 2011) 12 2.6 MySQL Cluster MySQL cluster merupakan sebuah tipe basis data (database) yang dapat beroperasi dalam ukuran data yang besar. MySQL cluster adalah sebuah teknologi baru untuk memungkinkan clustering didalam memory database dalam sebuah sistem sharednothing. Arsitektur shared-nothing mengijinkan sistem dapat bekerja dengan hardware/ perangkat keras yang murah, dan tidak membutuhkan hardware dan software dengan spesifikasi khusus. Arsitektur tersebut handal karena masing-masing komponen mempunyai memory dan disk tersendiri (MySQL, 2011). MySQL cluster bekerja dengan melakukan mirroring atau replikasi data antar server didalam cluster. Perbedaan dasar antara mirroring MySQL biasa dengan MySQL cluster terletak pada arsitekturnya. Arsitektur dari mirroring MySQL biasa menggunakan arsitektur asynchronous. Arsitektur asynchronous artinya apabila salah satu server down kemudian server tersebut hidup lagi, maka server tersebut tidak bisa langsung mendapatkan mirroring dari server yang masih hidup. Berbeda dengan MySQL cluster yang menggunakan arsitektur synchronous yang apabila ada server down kemudian hidup lagi, server tersebut akan langsung secara otomatis bisa melakukan mirroring dari server yang hidup. Arsitektur standar dari mirroring atau replikasi dari MySQL cluster dapat dilihat pada Gambar 2.4. Gambar 2.4 Model Replikasi Data MySQL Cluster 13 2.7 Load Balancing Load balancing atau penyeimbangan beban dalam jaringan sangat penting bila skala dalam jaringan komputer semakin besar, demikian juga traffic data yang ada dalam jaringan komputer semakin lama memungkinkan semakin tinggi. pengaksesan Layanan sumber daya load dalam balancing jaringan didistribusikan ke beberapa host lainnya agar tidak terpusat, sehingga untuk kinerja jaringan komputer secara keseluruhan bisa stabil. Ketika sebuah server sedang diakses oleh user, maka sebenarnya server tersebut sedang terbebani karena harus melayani proses permintaan dari user. Jika user banyak maka prosesnya bisa semakin banyak. Session-session komunikasi dibuka oleh server tersebut untuk memungkinkan user menerima servis dari server tersebut. Apabila satu server saja terbebani, tentu server tersebut tidak bisa melayani banyak user karena kemampuan melakukan processing ada batasnya. Solusi yang paling ideal adalah dengan membagi-bagi beban yang datang ke beberapa server, sehingga yang melayani user tidak hanya terpusat pada satu perangkat saja. Teknik ini disebut teknik load balancing (Iwan, 2005). Load balancing merupakan hal yang penting pada pemrosesan yang kinerjanya bersifat paralel. Ide dasarnya adalah memindahkan proses dari node yang memiliki beban kerja tinggi ke node yang memiliki beban kerja rendah. Tujuannya agar waktu pengerjaan tugas lebih rendah dan menaikkan utilitas sumber daya sistem. Bagian penting dari strategi load balancing adalah migration policy, yang menentukan kapan suatu migrasi terjadi dan proses mana yang 14 akan diimigrasikan. Proses migrasi pada load balancing terjadi pada dua bentuk yaitu remote execution juga disebut dengan non preemptive migration. Pada strategi ini, suatu proses baru bisa secara otomatis dieksekusikan pada host remote. Pre-emptive migration pada strategi ini proses akan dihentikan, dipindahkan ke node lain dan diteruskan. Load balancing dapat dilakukan dengan eksplisit oleh user ataupun secara implisit oleh system (Sembiring, 2008). Manfaat dari load balancing : • Reliability Kepercayaan terhadap sebuah sistem untuk dapat terus melayani user dengan sebaik-baiknya. Jaminan reliability memungkinkan user dapat melakukan pekerjaan dengan lancar melalui layanan tersebut. • Skalabilitas dan ketersediaan Jika dalam sebuah jaringan komputer hanya terdapat satu buah server mempunyai pengertian terdapat satu titik masalah. Seandainya server mati maka layanan terhadap pengguna akan terganggu, penambahan server dan membentuk server farm maka skalabilitas akan meningkat selain itu faktor ketersediaan data juga akan meningkat. Struktur sederhana dari cluster load balancing terlihat seperti Gambar 2.5. 15 Gambar 2.5 Struktur Sederhana Load Balancing Gambar 2.5 menjelaskan apabila ada request dari user maka request tersebut akan diterima oleh balancer. Setelah diterima oleh balancer, request tersebut akan dialihkan ke node yang ada dalam cluster. Sehingga seolah-olah seluruh pelayanan kepada user dilakukan oleh satu server saja. 2.8 Nginx Nginx (baca: engine x) adalah server HTTP dan reverse proxy berbasis open-source berkemampuan tinggi, yang dapat juga digunakan sebagai proxy IMAP/POP3. Nginx terkenal karena performanya yang tinggi, stabil, memiliki banyak fitur, mudah dikonfigurasi, dan bisa menggunakan spesifikasi hardware yang tidak terlalu tinggi. Tidak seperti software server yang lainnya, nginx tidak bergantung kepada thread untuk melayani client. Sebaliknya, nginx menggunakan arsitektur asynchronus yang lebih stabil. Arsitektur ini membutuhkan lebih sedikit memori serta dapat mengatasi ribuan koneksi pada saat yang bersamaan (Nginx, 2006). Nginx juga bisa dimanfaatkan sebagai aplikasi load balancing untuk server. 16 Nginx menggunakan algoritma round robin sederhana. Thirdparty module yang digunakan adalah http upstream hash. Algoritma Round Robin (RR) didesain untuk sistem time sharing. Algoritma ini mirip dengan penjadwalan FCFS (First Come First Served), namun preemption ditambahkan untuk switch (peralihan proses) antara proses. Antrian ready diperlakukan atau dianggap sebagai antrian sirkular. CPU menglilingi antrian ready dan mengalokasikan masing-masing proses untuk interval waktu tertentu sampai satu time slice /quantum. Berikut algritma untuk penjadual Round Robin (Unimal, 2009): • Setiap proses mendapat jatah waktu CPU (time slice/ quantum) tertentu Time slice/quantum umumnya antara 10 - 100 milidetik. 1. Setelah time slice/ quantum maka proses akan di-preempt dan dipindahkan ke antrian ready. 2. Proses ini adil dan sangat sederhana. • Jika terdapat n proses di "antrian ready" dan waktu quantum q (milidetik), maka: 1. Setiap proses akan mendapatkan 1/n dari waktu CPU. 2. Proses tidak akan menunggu lebih lama dari: (n-1)q time units. • Kinerja dari algoritma ini tergantung dari ukuran time quantum 1. Time Quantum dengan ukuran yang besar maka akan sama dengan FCFS. 2. Time Quantum dengan ukuran yang kecil maka time quantum harus diubah ukurannya lebih besar dengan respek pada alih konteks sebaliknya akan memerlukan ongkos yang besar. Selain dengan menggunakan metode RR sebagai metode default load balancing yang digunakan oleh nginx, nginx juga bisa 17 diatur sesuai dengan kebutuhan admin jaringan. Nginx bisa dikonfigurasi sebagai failover, berdasarkan weight, serta max fails and file timeout. Sehingga nginx tidak hanya bekerja dengan metode RR tetapi juga bisa dikonfigurasi dengan metode yang lainnya.