BAB II DASAR TEORI 2.1. Pengenalan Sistem Operasi Linux Linux adalah salah satu jenis sistem operasi yang sering dipakai oleh jutaan orang di dunia. Linux pertama kali diciptakan oleh Linus Torvalds pada tahun 1991. Linux merupakan sistem operasi yang mengadopsi dari unix maka linux sangat stabil sebagai server. Dengan ketersediaan source code Linux maupun program-program yang berlisensi GPL (General Public Lisence), setiap orang memiliki keleluasaan tinggi untuk melakukan optimisasi terhadap server Linux yang dibuat sehingga tidak ada ketergantungan kepada suatu vendor tertentu. Berbagai aplikasi seperti web server, firewall, dan database dapat berjalan dengan baik di linux. Linux juga dapat dijadikan sebagai node pada sistem cluster. Sistem highavailability (HA) yang hampir menjadi keharusan untuk perusahaan-perusahaan besar juga telah tersedia perangkat lunaknya. 2.2. Dasar Sistem Cluster Saat ini dapat dikatakan bahwa sumber utama perubahan teknologi komputer adalah Internet. Banyak sekali masalah yang terjadi dalam lingkup internet dan harus dijawab dengan efisien dan efektif. Masalah utama yang terjadi bukan lagi cara transfer data dalam jumlah besar, tetapi masalah utama yang terjadi adalah cara menganalisa dan memproses data tersebut. Terdapat beberapa metode untuk menjawab masalah untuk menganalisa dan memproses data yang besar dengan optimal. Super komputer yang embedded seperti BlueGene dan Sun Fire banyak sekali digunakan sebagai solusi, tetapi solusi tersebut membutuhkan biaya yang tinggi. Clustering adalah solusi yang cukup ekonomis untuk membuat sistem komputer yang digunakan untuk menganalisa dan memproses data dengan optimal dan efisien. Dalam dunia komputasi, clustering adalah gabungan dari beberapa komputer yang bekerja sama untuk menghasilkan output dari masalah tertentu yang diberikan (input) dimana developer sistem tersebut diharuskan membagi kerja ke setiap anggota gabungan komputer secara manual. Secara umum, salah satu karakteristik utama komputer cluster adalah konsep single entity dimana kumpulan banyak komputer yang menjadi komputer cluster dipandang BAB II DASAR TEORI sebagai satu kesatuan sistem tunggal. Hal ini berarti bahwa developer tidak perlu lagi mengatur pembagian proses yang diberikan untuk didistribusikan ke masing-masing mesin dalam sistem cluster tersebut, tetapi developer cukup mendapatkan gambaran bahwa hasil dari proses yang diberikan si user dikerjakan oleh single sistem. Bagaimana pun juga, developer perlu mengetahui informasi pengolahan data oleh sistem cluster tersebut. Dari definisi umum di atas, banyak sekali macam konfigurasi untuk sistem cluster. Berdasarkan konsep tersebut penulis dalam tugas akhir ini akan mengimplementasikan load balancing dan MySQL Cluster 2.3. Load Balancing Load balancing adalah suatu metode untuk mendistribusikan beban kepada beberapa server sehingga beban kerja menjadi lebih ringan. Ini bertujuan agar waktu ratarata mengerjakan tugas akan rendah dan menaikkan utilitas prosesor. Load balancing dapat diimplementasikan dengan hardware khusus, software maupun gabungan keduanya. Konfigurasi standar yang ada memberi gambaran bahwa satu mesin ditempatkan diantara client dan server, mesin ini disebut sebagai director karena tugasnya adalah memberikan balancing pada request dari client ke server. Sebuah load balancer adalah perangkat jaringan yang dipasang diantara client dan server, bekerja sebagai gerbang untuk melayani request dari client. Load balancer mengimplementasikan beberapa metode penjadwalan yang akan menentukan ke arah server mana request dari client akan diteruskan. Gambar 2.1 Skema Sistem Load balancing Beberapa keuntungan yang diperoleh dari teknik load balancing sebagai berikut: a. Flexibility : Server tidak lagi menjadi inti sistem dan resource utama, tetapi menjadi bagian dari banyak server yang membentuk cluster. Hal ini berarti bahwa performa per unit dari cluster tidak terlalu diperhitungkan, tetapi performa cluster secara 5 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI keseluruhan. Sedangkan untuk meningkatkan performa dari cluster, server atau unit baru dapat ditambahkan tanpa mengganti unit yang lama. b. Scalability : Sistem tidak memerlukan desain ulang seluruh arsitektur sistem untuk mengadaptasikan sistem tersebut ketika terjadi perubahan pada komponen sistem. c. Security : Untuk semua trafik yang melewati load balancer, aturan keamanan dapat dimplementasikan dengan mudah. Dengan private network digunakan untuk real servers, alamat IP nya tidak akan diakses secara langsung dari luar sistem cluster. d. High-availability : Load balancer dapat mengetahui kondisi real server dalam sistem secara otomatis, jika terdapat real server yang mati maka akan dihapus dari daftar real server, dan jika real server tersebut kembali aktif maka akan dimasukkan ke dalam daftar real server. Load balancer juga dapat dikonfigurasi redundant dengan load balancer yang lain. 2.4. Linux Virtual Server 2.4.1. Pengertian Linux Virtual Server Linux virtual server (LVS) adalah alternatif utama open-source yang menyediakan solusi untuk membuat sistem load balancing. Seperti yang ditulis di home site linux virtual server Project, Linux virtual server (LVS) adalah “a highly scalable and highly available server built on a cluster of realservers, with the load balancer running on the Linux operating sistem” Maksud dari real servers adalah mesin komputer yang benar-benar melayani request yang ada. Real server dapat dihubungkan menggunakan LAN maupun WAN yang berkecepatan tinggi. Dan mesin yang menjadi ujung tombak cluster server adalah director, yaitu berupa single server yang menghubungkan real server dengan client dari intranet maupun internet (sistem di luar cluster). 2.4.2. Komponen Linux Virtual Server Linux virtual server terdiri dari tiga komponen utama yang menyusunnya, yaitu a. Director Dalam tugas akhir ini terdapat dua komputer yang dijadikan director yang terdiri dari aktif director dan standby director. Director berfungsi sebagai load balancer. Dimana load balancer merupakan komputer paling depan 6 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI pada sistem server cluster yang terhubung secara langsung dengan client. Load balancer menjalankan IPVS yang mengimplementasikan teknik IP load balancing di dalam kernel linux. Untuk menjamin high availability, pada director harus diinstall aplikasi heartbeat. Heartbeat akan selalu memonitor keadaan aktif director, ketika aktif director mengalami kegagalan heartbeat akan langsung menggantikan aktif director dengan standby director. Untuk dapat menambahkan layanan-layanan apa saja yang mampu diberikan oleh sistem cluster dan meneruskan request kepada real server yang aktif pada director harus diinstall aplikasi IP Virtual Server Administrator (IPVSADM). Director atau load balancer juga berfungsi untuk memonitor keadaan real server sehingga bisa diketahui status setiap real server sedang hidup atau mati. Untuk memonitor real server tersebut aplikasi yang digunakan adalah ldirectord. Selain itu ldirectord juga berfungsi untuk menentukan algoritma penjadwalan yang digunakan oleh sistem cluster. b. Real Server Real server adalah beberapa server aktual yang menjalankan layanan pada sistem cluster. Dalam tugas akhir ini diimplementasikan dua real server dengan layanan yang diberikan adalah http. Aplikasi yang harus diinstall pada kedua real server adalah webserver. Webserver berfungsi untuk melayani http request dari client. Jumlah komputer pada real server dapat ditambah sesuai dengan kebutuhan. c. Shared Storage Ada dua metode penyimpanan data pada sistem cluster. Metode shared disk cluster dan metode shared nothing cluster. Pada metode shared disk cluster data disimpan pada hard disk yang sama. Sedangkan pada metode shared nothing cluster data disimpan pada masing-masing real server dimana kedua node melakukan sinkronisasi. Untuk metode shared disk cluster aplikasi yang bisa digunakan adalah NFS (Network Filesystem Sharing). Aplikasi yang dapat digunakan untuk metode shared nothing cluster adalah MySQL Cluster. 7 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI 2.4.3. Cara Kerja Linux Virtual Server Gambar 2.2 Skema Sistem Linux Virtual Server Saat request A datang dari client ke director, request tersebut akan di teruskan ke salah satu real-server tertentu. Dan semua paket yang ada hubungan dengan request A akan diproses oleh virtual server sampai sinkronisasi FIN dari koneksi TCP atau connection timeout, tergantung pada idle time maksimum untuk sebuah koneksi. Pemilihan real server untuk melayani request baru dari client ditentukan oleh aturan yang diterapkan dan algoritma penjadwalan yang ada. Perangkat lunak LVS diimplementasikan di kernel Linux yang sudah ter-patch pada mesin yang akan dijadikan director untuk memperoleh performa yang optimal. Walaupun patch dilakukan, LVS akan berfungsi jika dikompilasi ulang dalam kernel maupun dikompilasi sebagai modul kernel. Director yang digunakan umumnya adalah sebuah router dengan table routing yang diatur khusus untuk kegunaan LVS. Tabel routing tersebut mengijinkan request dari banyak client untuk mengakses layanan yang disediakan oleh LVS dan meneruskan request tersebut ke real server. Perlu diketahui bahwa director tidak memiliki socket listener untuk service port yang berasosiasi dengan layanan yang diredirect ke real server. 2.5. Network Address Translation Pengalamatan menggunakan IPv4 yang terbatas menjadi permasalahan dalam jaringan internet. Apabila setiap orang masuk pada jaringan internet dan setiap orang 8 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI memiliki lebih dari satu buah perangkat yang dapat digunakan seperti telepon genggam, PC, maupun laptop. Masing-masing perangkat tersebut membutuhkan identitas atau alamat yang unik. Sehingga dengan perkembangan internet yang sangat pesat, tidak mustahil dalam waktu dekat alokasi alamat IPv4 akan habis. Salah satu cara sementara yang dapat digunakan untuk mengatasi masalah tersebut yaitu dengan menerapkan teknologi NAT (Network Address Translation). NAT merupakan suatu mekanisme translasi yang memetakan satu alamat IP publik menjadi beberapa alamat IP lokal, sehingga meski terdapat banyak perangkat dalam jaringan lokal tetapi akan tampak sebagai satu alamat IP publik. Untuk itu perlu suatu gateway yang akan menghubungkan jaringan lokal dengan jaringan internet. Proses pertukaran data antara jaringan lokal dan jaringan internet pada metode NAT dapat dilihat pada ilustrasi berikut : Client dalam jaringan lokal membuat koneksi dengan host B yang berada di jaringan internet. Gateway akan menerima data dari client kemudian mengecek translasi alamat publik/global pada tabel NAT. Jika terdapat beberapa client yang datang bersamaan masing maka akan masing- ditranslasikan pada alamat global yang sama tetapi berbeda alamat port. 9 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI Gateway akan mengganti alamat IP client lokal, misal 10.1.1.1 menjadi alamat IP global 192.168.2.2 meneruskan paket dan kepada tujuan, yakni Host B. Host B pada jaringan internet menerima paket dan merespon client dengan alamat yang diketahui yaitu 192.168.2.2 Ketika paket balasan kembali diterima oleh gateway, lalu akan dicari pada tabel NAT alamat IP global dan alamat port yang sesuai dengan catatan saat pengiriman paket. Kemudian gateway mentranslasikan alamat akan IP global tersebut menjadi alamat IP lokal, misal 10.1.1.1, sesuai dengan catatan pada tabel NAT, dan meneruskan paket kepada client. Client akan menerima paket dan memprosesnya. Hal-hal sebagai pertimbangan dalam implementasi NAT yaitu keuntungan dan kerugian metode NAT yang dapat dilihat pada Tabel 2.2 berikut. 10 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI Tabel 2.1 Keuntungan dan Kerugian Menggunakan NAT Keuntungan Kerugian Menghemat alamat IP global yang legal Translasi memerlukan delay switching Meminimalisir terjadinya bentrok alamat IP Aplikasi tertentu tidak dapat berjalan Meningkatkan fleksibilitas Menghindari proses readdressing saat terjadi perubahan jaringan Tidak dapat dilacak end-to-end IP 2.6. Algoritma Penjadwalan Beberapa jenis algoritma penjadwalan yang dapat diterapkan pada sistem linux virtual server pada proses distribusi request kepada real server, antara lain yaitu : 1. Round Robin (rr), yaitu algoritma penjadwalan yang memperlakukan semua real server sama menurut jumlah koneksi atau waktu respon. 2. Weighted Round Robin (wrr), penjadwalan ini memperlakukan real server dengan kapasitas proses yang berbeda. Masing-masing real server dapat diberi bobot bilangan integer yang menunjukkan kapasitas proses, dimana bobot awal adalah 1. 3. Least Connection (lc), merupakan algoritma penjadwalan yang mengarahkan koneksi jaringan pada server aktif dengan jumlah koneksi yang paling sedikit. Penjadwalan ini termasuk salah satu algoritma penjadwalan dinamik, karena memerlukan perhitungan koneksi aktif untuk masing-masing real server secara dinamik. Metode penjadwalan ini baik digunakan untuk melancarkan pendistribusian ketika request yang datang banyak. 4. Weighted Least Connection (wlc), merupakan sekumpulan penjadwalan least connection dimana dapat ditentukan bobot kinerja pada masing-masing real server. Server dengan nilai bobot yang lebih tinggi akan menerima persentase yang lebih besar dari koneksi-koneksi aktif pada satu waktu. Bobot pada masing-masing real server dapat ditentukan dan koneksi jaringan dijadwalkan pada masing-masing real server dengan persentase jumlah koneksi aktif untuk masing-masing server sesuai dengan perbandingan bobotnya (bobot awal adalah 1). 5. Locality Based Least Connection (lblc), metode penjadwalan yang akan mendistribusikan lebih banyak request kepada real server yang memiliki koneksi 11 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI kurang aktif. Algoritma ini akan meneruskan semua request kepada real server yang memiliki koneksi kurang aktif tersebut sampai kapasitasnya terpenuhi. 6. Destination Hashing (dh), merupakan algortima penjadwalan statik yang dapat meneruskan request dari client kepada satu real server tertentu sesuai dengan layanan yang diminta. Terdapat suatu tabel hash berisi alamat tujuan dari masingmasing real server beserta layanan yang tersedia pada setiap real server. 7. Source Hashing (sh), hampir sama dengan metode destination hashing tetapi pada metode ini tabel berisi mengenai informasi alamat asal paket yang dikirimkan oleh client. Menurut Yong Meng Teo dan Rassul Ayani dalam jurnalnya yang berjudul “Comparation of Load Balancing Strategies on Cluster-based Web Servers” diantara algoritma penjadwalan tersebut yang memiliki kemampuan paling optimal untuk beban menengah ke atas adalah weight least connetion. Selain itu algoritma weight least connection lebih cepat dibanding round robin dan relatif lebih mudah diimplementasikan. 2.7. Database Cluster Database adalah sebuah koleksi dari data yang saling berelasi, dimana data tersebut disimpan pada komputer sedemikian hingga 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. Database merupakan komponen utama sistem informasi karena semua informasi untuk pengambilan keputusan berasal dari data di database. Pengelolaan database yang buruk dapat mengakibatkan ketidaktersediaan data penting yang digunakan untuk menghasilkan informasi yang diperlukan dalam pengambilan keputusan. Database clustering adalah kumpulan dari beberapa server yang berdiri sendiri yang kemudian bekerjasama sebagai suatu sistem tunggal (Hodges, 2007). Saat ini aplikasi database semakin berkembang, baik dalam hal kegunaan, ukuran, maupun kompleksitas. Hal ini secara langsung berdampak pada server database sebagai penyedia layanan terhadap akses database, konsekuensi dari semua itu adalah beban database server akan semakin bertambah berat dan mengakibatkan kurang optimalnya kinerja dari server 12 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI tersebut. Oleh karena itu diperlukan perancangan yang tepat dan handal dalam membangun database server. Database pada masa sekarang ini dituntut agar dapat berjalan dengan cepat, mempunyai kehandalan dan keseterdiaan yang tinggi, dengan clustering database yang disimpan dapat terbagi ke beberapa mesin dan pada saat aplikasi berjalan, semua mesin yang menyimpan data tersebutdianggap 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 menggantikan fungsi mesin tersebut. Kemampuan clustering memungkinkan sebuah database tetap hidup dalam waktu yang lama. Berikut ini contoh dari arsitektur database cluster. a. Shared Disk Clusters Arsitektur shared disk clusters menggunakan server-server independent dan berbagi sebuah sistem penyimpanan tunggal. Setiap server mempunyai prosesor dan memori sendiri, tetapi berbagi disk resources. Implementasi utama dari shared-disk clustering adalah bukan untuk scalability. Shared-disk clustering ini diimplementasikan untuk availability dan menambah node cadangan sebagai failover node. Gambar 2.3 Shared Disk Clusters b. Shared Nothing Cluster Dalam arsitetur shared nothing cluster, tiap server dalam cluster menangani prosesor, memori, storage, record locks dan transaksi yang terpisah dan melakukan koordinasi dengan server lain melalui jaringan dengan menggunakan high speed, low13 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI latency interconnect technology. Dalam proses permintaan data suatu node harus mengirimkan pesan ke node yang lain yang memiliki data yang 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 didisain untuk high availability dan scalability. Gambar 2.4 Shared Nothing 2.8. 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 di dalam memory database dalam sebuah sistem sharenothing. Arsitektur share-nothing mengijinkan sistem dapat bekerja dengan hardware/perangkat keras yang sangat murah, dan tidak membutuhkan perangkat keras dan lunak dengan spesifikasi khusus. Arsitektur tersebut juga handal karena masing-masing komponen mempunyai memory dan disk tersendiri. MySQL Cluster menggabungkan MySQL Server biasa dengan sebuah mesin penyimpanan in-memory tercluster yang dinamakan NDB. NDB berarti bagian dari suatu rangkaian yang dikhususkan sebagai mesin penyimpanan, sedangkan MySQL Cluster diartikan sebagai kombinasi atau gabungan dari MySQL dan mesin penyimpanan yang baru tersebut. Sebuah MySQL Cluster terdiri dari sekumpulan komputer, masing-masing menjalankan sejumlah proses mencakup beberapa MySQL server, node-node penyimpanan untuk cluster NDB, serverserver manajemen dan program-program pengakses data yang khusus. Semua programprogram tersebut bekerja bersama-sama untuk membentuk MySQL Cluster. Ketika data disimpan di dalam mesin penyimpan media NDB Cluster, tabel-tabel disimpan didalam node-node penyimpanan pada NDB Cluster. Tabel-tabel seperti itu dapat diakses secara langsung dari semua MySQL server yang lain di dalam cluster tersebut. Data yang disimpan di dalam node-node penyimpanan pada MySQL Cluster dapat di mirror (dicerminkan), cluster tersebut dapat menangani kegagalan dari node-node penyimpanan 14 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE BAB II DASAR TEORI individual dengan tidak ada dampak lain dari sejumlah transaksi dihentikan karena kegagalan proses transaksi. Di dalam konfigurasi mysql cluster itu sendiri terdapat tiga node cluster, ketiga node cluster itu adalah: a. Management node (ndb_mgmd process) b. Data node (ndbd process) c. SQL node (mysqld process) Ketiga node tersebut dapat dilihat di gambar berikut Gambar 2.5 Node dalam MySQL Cluster 2.9. High Availability dan Scalability High availability dapat diartikan sebuah sistem, komponen atau layanan yang bersifat kontinu dalam jangka waktu panjang dengan kemampuan untuk menjaga stabilitas proses dalam sistem ketika salah satu komponen dari sistem rusak. Inti dari high availability adalah mengeliminasi kesalahan sistem. Sedangkan sistem dengan high scalability tidak memerlukan desain ulang seluruh arsitektur sistem untuk mengadaptasikan sistem tersebut ketika terjadi perubahan pada komponen sistem. Berdasarkan definisi tersebut, maka tidak mungkin ada sistem yang hanya memiliki karakter high availability maupun high scalability. Dua-duanya digunakan pada sistem load balancing untuk mendapatkan kualitas yang baik. 15 IMPLEMENTASI LOAD BALANCING WEB SERVER DAN MYSQL CLUSTER UNTUK MENJAMIN HIGH AVAILABILITY PADA WEBSITE