Perancangan dan Implementasi Web Server Clustering dengan

advertisement
 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.
Download