perancangan server dengan menggunakan load balancer, failover

advertisement
BAB 2
LANDASAN TEORI
2.1
Server
Server (Sosinsky, 2009:108) adalah sebuah program perangkat lunak yang
menyediakan layanan ke komputer lain melalui koneksi jaringan. Server dapat
dijalankan pada sistem lokal atau pada sistem remote, tetapi perangkat lunak
harus rutin menyediakan layanan ini untuk sistem lain atau setidaknya mampu
memberikan layanan.
2.2
Web Server
Mesin ini (Yadav, 2009:3) menyimpan dan mengambil data internet (dan
intranet) untuk perusahaan. Beberapa dokumen, data, dan lain – lain, berada
pada web server. Web application menyediakan akses ke dokumen dan data
lainnya. Klien "thin" biasanya menggunakan web browser untuk meminta
dokumen – dokumen tersebut. Server tersebut membagi dokumen – dokumen di
intranet, atau di internet (atau extranet). Protokol yang paling umum digunakan
adalah HTTP (Hyper Text Transfer Protocol).
2.3
Database Server
Data (Yadav, 2009:3) berada di server, dalam bentuk database SQL.
Database server menyediakan akses ke data kepada klien, dalam menanggapi
permintaan SQL. Database server membagi data yang berada dalam database
melalui jaringan. Database server memiliki protokol yang lebih efisien daripada
6
7
file server. Database server menerima permintaan SQL dan memproses mereka
dan hanya mengembalikan data yang diminta; sehingga klien tidak harus
berurusan dengan data yang tidak relevan.
2.4
Cluster
Beberapa mesin stand-alone (Deshpande dan Kamalapur, 2008:6-33) yang
bekerja secara paralel dan terhubung melalui jaringan kecepatan tinggi
membentuk cluster. Berikut klasifikasi cluster:
1. High Availability Cluster
Dalam jenis cluster ini (Deshpande dan Kamalapur, 2008:6-34)
beberapa redundant node diberikan. Ketika komponen sistem gagal,
redundant node ini digunakan untuk menyediakan layanan. Dalam
kasus kegagalan apapun, high availability clustering mendeteksi
kesalahan dan restart aplikasi segera pada node baru.
Pada high availability clustering, setiap node dalam cluster
dipantau menggunakan koneksi private network. High availability
cluster juga disebut sebagai failover cluster. Pada operasi normal, ada
berbagai node dalam cluster terhubung oleh heartbeat private network.
2. Load Balancing Cluster
Jenis cluster ini (Deshpande dan Kamalapur, 2008:6-35)
digunakan untuk load balancing. Ketika beberapa permintaan datang
ke node cluster, Cluster ini mendistribusikan mereka ke berbagai node.
Distribusi ini dibuat sesuai dengan ketersediaan node. Setiap node
8
dalam cluster mampu menangani setiap permintaan. Dalam kasus
permintaan gagal, permintaan itu dikirimkan ke node lain dalam sistem.
2.5
Load Balancing
Load balancing (Membrey, Plugge dan Hows, 2012:109) merupakan
kemampuan untuk mentransfer setiap bagian dari proses untuk permintaan sistem
ke sistem independen lain yang akan menanganinya secara bersamaan. Load
balancing membagi beban yang masuk ke satu server diantara sejumlah
perangkat lain. Load balancing memiliki keuntungan mengurangi jumlah proses
yang dilakukan oleh server penerima primer—memungkinkan untuk menangani
permintaan lebih banyak dan meningkatkan kinerja—karena ada sedikit
kompetisi untuk sumber daya dan ada lebih banyak perangkat memproses
seluruh beban.
Gambar 2.1 Load Balancing
9
Sebagai load balancer (Dix, 2010:148) menerima setiap permintaan, load
balancer harus memutuskan proses (atau backend) yang harus menangani
permintaan.
Algoritma
paling
sederhana
load
balancer
bisa
mengimplementasikan mungkin untuk secara acak memilih backend yang
diketahui, tetapi hasilnya akan tidak sangat seimbang. Beberapa backend
mungkin menerima terlalu banyak permintaan sementara yang lain posisi diam.
Untungnya, ada sejumlah strategi load balancing baik yang mudah digunakan,
termasuk round-robin, least-connection dan URI-based load balancing.
2.5.1
Algoritma Load Balancing
Terdapat beberapa macam algoritma untuk load balancing
diantaranya:
1. Random Allocation
Dalam Random allocation (Deshpande dan Kamalapur,
2008:B-4) permintaan HTTP ditugaskan ke server dengan
memilih secara acak diantara sekelompok server. Dalam kasus
seperti ini, salah satu server mungkin dapat ditugaskan
permintaan yang banyak, sedangkan server lainnya menganggur
atau diam.
2. Round Robin
Sebuah load balancer (Dix, 2010:149) beroperasi
menggunakan algoritma round-robin membuat internal counter
dari backend yang terakhir digunakan, dan menggunakan
pilihan berikutnya dari daftar berurutan dari semua backend
10
yang diketahui. Ketika setiap permintaan tiba, backend
berikutnya dipilih, dan counter bertambah, perulangan kembali
ke awal dari daftar apabila diperlukan.
3. Least Connection
Dengan algoritma least connection (Dix, 2010:150), load
balancer mencoba untuk menyalurkan permintaan berdasarkan
pada jumlah beban saat ini. Counter sebuah koneksi backend
akan bertambah sebagai permintaan yang dikirim dan berkurang
setelah mereka menyelesaikannya.
4. URI-Based Load Balancing
URI-based load balancer (Dix, 2010:151) dimana semua
permintaan untuk setiap data dapat diteruskan ke backend
(server) yang sama selagi masih tersedia, jika backend menjadi
kelebihan
beban,
load
balancer
menyesuaikan
dengan
menyalurkan permintaan untuk backend yang masih tersedia.
2.5.2
Tipe Load Balancer
Terdapat dua pilihan untuk digunakan ketika merancang load
balancer. Pilihannya adalah menggunakan software load balancing atau
hardware load balancing.
1. Software Load Balancing
Load balancer yang biasanya paling sering digunakan
adalah yang berbasis perangkat lunak (Deshpande dan
Kamalapur,
2008:B-5).
Sering
kali
terintegrasi
dengan
11
perangkat lunak web server dan paket aplikasi perangkat lunak.
Proses load balancing dipengaruhi oleh perangkat komputer
yang digunakan. Perangkat keras yang dapat mempengaruhi
performa metode ini adalah kartu jaringan (Network Interface
Card) yang digunakan, besarnya RAM (Random Access
Memory) pada perangkat, dan juga media penyimpanan.
2. Hardware Load Balancing
Load
balancer
perangkat
keras
(Deshpande
dan
Kamalapur, 2008:B-5) dapat menyalurkan paket TCP/IP untuk
berbagai server di dalam cluster. Jenis load balancer ini
menyediakan topologi yang solid dan didukung dengan
ketersediaan tinggi, tetapi tentu datang dengan harga yang jauh
lebih mahal.
2.6
Failover
Failover (McBee, 2008:456) sebenarnya adalah sebuah proses multi
langkah. Jika salah satu node mengalami kegagalan hardware, sinyal heartbeat
dari node gagal berhenti. Node yang masih bekerja mendeteksi ini karena tidak
adanya heartbeat node lain.
Heartbeat (Simmons dan Carstarphen, 2012:34) adalah pemeriksaan
kesehatan dikirim antara node untuk menjamin ketersediaan setiap node.
Dua atau lebih (Gibson, 2010:340) server yang dikonfigurasi bersamasama, dengan beberapa server yang ditunjuk sebagai node aktif dan yang lain
ditunjuk sebagai node tidak aktif. Node aktif memberikan layanan kepada klien
12
dan node tidak aktif memantau node aktif. Jika node aktif gagal, node tidak aktif
dapat mengambil alih dengan sedikit gangguan kepada klien.
Gambar 2.2 – Failover
Failback (McBee, 2008:457) adalah ketika layanan mendeteksi heartbeat
dari node gagal sebelumnya telah pulih, failback dapat dimulai. Proses ini
melalui step yang sama dengan failover, perbedaanya hanya kembalinya node
gagal yang telah di failover menjadi sedia kala.
13
Gambar 2.3 – Failback
2.7
Parallel Database
Dalam arsitektur parallel database, (Ricardo, 2011:454) ada beberapa
prosesor yang mengontrol beberapa unit disk yang berisi database. Database
dapat dipartisi pada disk, atau mungkin direplikasi. Jika fault-tolerance adalah
prioritas tinggi, sistem dapat diatur sehingga masing-masing komponen dapat
berfungsi sebagai cadangan untuk komponen lain dari jenis yang sama,
mengambil alih fungsi dari setiap komponen serupa yang gagal. Arsitektur
sistem parallel database bisa shared-memory, shared-disk, shared-nothing, atau
hierarchical.
1. Shared-memory
Dalam sistem shared-memory, (Ricardo, 2011:454) semua
prosesor memiliki akses ke memori yang sama dan berbagi disk.
Database berada pada disk, baik di replikasi pada mereka atau di partisi
14
diantara mereka. Ketika prosesor membuat permintaan data, data dapat
diambil dari salah satu disk ke memori buffer yang dimiliki oleh semua
prosesor. Database management system menginformasikan prosesor
apa halaman dalam memori berisi halaman data yang diminta.
Gambar 2.4 – Shared-memory
2. Shared-disk
Dalam desain shared-disk, (Ricardo, 2011:454) masing-masing
prosesor memiliki akses eksklusif ke memori sendiri, tetapi semua
prosesor memiliki akses ke unit disk bersama. Ketika prosesor meminta
data, halaman database dibawa ke memori prosesornya.
15
Gambar 2.5 – Shared-disk
3. Shared-nothing
Dalam sistem shared-nothing, (Ricardo, 2011:454) masing –
masing prosesor memiliki kontrol eksklusif unit disk-nya sendiri atau
beberapa unit dan memorinya sendiri, namun prosesor bisa
berkomunikasi dengan satu sama lain.
Gambar 2.6 – Shared-nothing
16
4. Hierarchical
Dalam arsitektur hierarchical, (Ricardo, 2011:455) sistem terdiri
dari
node
yang
shared-memory,
dihubungkan
oleh
jaringan
interconnection. Sistem hanya berbagi komunikasi dengan satu sama
lain, membuat secara keseluruhan arsitektur inter-system sharednothing.
Gambar 2.7 – Hierarchical
Ada dua metrik penting (ITL Education Solutions Limited, 2010:387)
untuk mengukur efisiensi dari suatu sistem parallel database, yaitu, scale-up dan
17
speed-up. Menjalankan tugas dalam sedikit waktu dengan meningkatkan derajat
paralelisme disebut speed-up, dan penanganan tugas yang lebih besar dengan
meningkatkan derajat paralelisme disebut scale-up.
Parallel database (Ricardo, 2011:458) menggunakan arsitektur sharednothing memberikan speed-up linier, yang berarti sesuai jumlah penambahan
prosesor dan disk, kecepatan operasi meningkat secara linier. Mereka juga
menyediakan scale-up linier, yang berarti bahwa mereka terukur, sehingga jika
banyak prosesor dan disk ditambahkan, tingkat kinerja tertopang. Hal ini
memungkinkan untuk meningkatkan jumlah data yang disimpan dan diproses
tanpa mengorbankan kinerja. Karakteristik shared-nothing ini telah manjadi
arsitektur pilihan untuk web application.
2.8
Database Replication
Replication (Bell, Kindahl dan Thalmann, 2010:5) digunakan untuk
mereplikasi semua perubahan yang dibuat pada server—disebut master server
atau hanya master—ke server lain, yang disebut slave server atau hanya slave.
Hal ini biasanya digunakan untuk membuat salinan tepat dari server master,
tetapi replikasi dapat digunakan untuk keperluan lain juga. Berikut adalah jenis
dari replication:
1. Synchronous Replication
Synchronous, (Greenwald, Stackowiak dan Stern, 2008:287) atau
real-time, replikasi yang dapat digunakan bila tidak ada toleransi untuk
perbedaan data atau data yang hilang. Data di site sekunder harus
sesuai dengan site utama setiap saat dan mencerminkan semua
18
transaksi yang dilakukan. Setiap transaksi di site utama akan memicu
pemanggilan prosedur di site sekunder untuk mereproduksi transaksi.
2. Asynchronous Replication
Dengan asynchronous replication, (Greenwald, Stackowiak dan
Stern, 2008:287) transaksi yang dilakukan di site utama dan beberapa
waktu kemudian direplikasi ke site sekunder. Sampai antrian transaksi
yang ditangguhkan "pushed" ke site sekunder, mereplikasi perubahan,
data di sekunder akan berbeda dari data site utama. Jika database utama
hilang tidak dapat ditarik kembali, transaksi unpushed yang
ditangguhkan dalam antrian juga akan hilang.
Gambar 2.8 – Synchronous dan asynchronous replication
Download