TUGAS AKHIR - KI141502 PERANCANGAN SISTEM PEMBAGIAN BEBAN PADA BASIS DATA MULTI-MASTER TERDISTRIBUSI UNTUK MASSIVE DATA TRANSACTION MUHAMMAD SYAIFUL JIHAD AMRULLOH NRP 5113 100 022 Dosen Pembimbing I Royyana Muslim Ijtihadie, S.Kom, M.Kom, Ph.D Dosen Pembimbing II Bagus Jati Santoso, S.Kom, Ph.D JURUSAN TEKNIK INFORMATIKA Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Surabaya, 2017
95
Embed
PERANCANGAN SISTEM PEMBAGIAN BEBAN PADA BASIS MULTI …repository.its.ac.id/43251/1/5113100022-Udergraduate_Theses.pdf · 2.3 MariaDB MariaDB merupakan sebuah aplikasi basis data
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
TUGAS AKHIR - KI141502
PERANCANGAN SISTEM PEMBAGIAN BEBAN PADA BASISDATA MULTI-MASTER TERDISTRIBUSI UNTUK MASSIVEDATA TRANSACTION
MUHAMMAD SYAIFUL JIHAD AMRULLOHNRP 5113 100 022
Dosen Pembimbing IRoyyana Muslim Ijtihadie, S.Kom, M.Kom, Ph.D
PERANCANGAN SISTEM PEMBAGIAN BEBAN PADABASIS DATAMULTI-MASTER TERDISTRIBUSI UNTUK
MASSIVE DATA TRANSACTION
Nama : MUHAMMAD SYAIFUL JIHADAMRULLOH
NRP : 5113 100 022Jurusan : Teknik Informatika FTIfPembimbing I : Royyana Muslim Ijtihadie, S.Kom,
M.Kom, Ph.DPembimbing II : Bagus Jati Santoso, S.Kom, Ph.D
Abstrak
Semakin berkembangnya teknologi informasi menuntutsemakin banyaknya penggunaan perangkat berupa komputeratau perangkat jaringan. Salah satu pemanfaatan dari teknologitersebut adalah penggunaan website untuk menanganiperekrutan anggota baru. Proses tersebut memerlukankemampuan penulisan dan pengambilan data yang cepat dandapat mengangani banyak permintaan dalam satu waktu.
Metode yang saat banyak digunakan untuk melakukanpenyimpanan data adalah master-slave. Metode tersebutmenggunakan sebuah master node yang memungkinkan untukmelakukan penulisan data. Sedangkan beberapa Slave nodeakan menyalin data dari master node dan melayani pembacaandata.
Kelemahan dari metode master-slave adalah saat terjadipenulisan data yang besar secara bersamaan. Hal tersebutmengakibatkan bottleneck-effect pada master node. Untukmenanggulangi masalah tersebut maka digunakan sebuahmetode master-master dimana semua node memiliki kemampuanuntuk menulis dan membaca data. Setiap node akan melakukan
vii
sinkronisasi agar data setiap node tetap sama.Topologi yang digunakan untuk mengimplementasikan
metode master-master membutuhkan lebih dari satu node agarbekerja dengan baik. Oleh karena itu dibutuhkan sebuah sekemapembagian beban yang bertujuan menentukan node mana yangmenerima proses. Algoritma yang dipakai untuk menentukantujuan pembagian tersebut menggunakan top-k. Algoritmatersebut menggunaan prosessor dan memory sebagaipertimbangan untuk menentukan node tujuan.Kata-Kunci: multi-master, pembagian beban, terdistribusi,algoritma top-k.
viii
DESIGNING LOAD BALANCER ON DISTRIBUTEDMULTI-MASTER DATABASE SYSTEM FORMASSIVE
DATA TRANSACTION
Name : MUHAMMAD SYAIFUL JIHADAMRULLOH
NRP : 5113 100 022Major : Informatics FTIfSupervisor I : Royyana Muslim Ijtihadie, S.Kom,
M.Kom, Ph.DSupervisor II : Bagus Jati Santoso, S.Kom, Ph.D
Abstract
The rapid development of information technology leads tothe considerable number of devices usage, both in computers ornetwork devices. One of the utilization of such technology is theutilization of website to handle the recruitment of new members.The process requires fast writing and retrieval capabilities alongwith multiple request handling capabiliy at a time.
The most widely used method of data storage is master-slave.The method uses a master node that makes it possible to performdata writing, while some slave nodes will copy data from themaster node and serve data readings.
The disadvantage of the master-slave method is when there islarge data writing tasks simultaneously, they will causebottleneck effect on the master node. To overcome this problem,master-master method are proposed, where all nodes have theability to write and read data. Each node will synchronize thedata for each node to remain the same state of the data.
In this work, we implement master-master method thatrequires more than one node to work properly. Therefore it takesa load-sharing scheme that aims to determine which nodes are
ix
accept process. This work employs top-k technique to handle thedivision task around jobs. Furthermore, processor and memoryinformation are considered by the algorithm in determining thedestination node.Keywords: multi-master, load distribution, distributed computing,top-k algorithm
x
KATA PENGANTAR
Alhamdulillahirabbil’alamin, segala puji bagi Allah SWT,yang telah melimpahkan rahmat dan hidayah-Nya sehinggapenulis dapat menyelesaikan Tugas Akhir yang berjudulPerancangan Sistem Pembagian Beban pada Basis Datamulti-master Terdistribusi untuk Massive Data Transaction.Pengerjaan Tugas Akhir ini merupakan suatu kesempatan yangsangat baik bagi penulis. Dengan pengerjaan Tugas Akhir ini,penulis bisa belajar lebih banyak untuk memperdalam danmeningkatkan apa yang telah didapatkan penulis selamamenempuh perkuliahan di Teknik Informatika ITS. DenganTugas Akhir ini penulis juga dapat menghasilkan suatuimplementasi dari apa yang telah penulis pelajari. SelesainyaTugas Akhir ini tidak lepas dari bantuan dan dukungan beberapapihak. Sehingga pada kesempatan ini penulis mengucapkansyukur dan terima kasih kepada:
1. Allah SWT yang telah memberikan rahmat, pertolongan,dan anugerah yang tidak terkira serta Nabi MuhammadSAW selaku suri tauladan yang baik bagi manusia.
2. Ayah, Ibu, dan adik penulis yang telah memberikandukungan moral dan material serta doa yang tak terhinggauntuk penulis. Serta selalu memberi semangat dandorongan untuk segera menyelesaikan pengerjaan TugasAkhir ini.
3. Bapak Royyana Muslim Ijtihadie, S.Kom, M.Kom, Ph.D.selaku pembimbing I yang telah membantu, membimbing,dan memotivasi penulis mulai dari pengerjaan proposalhingga terselesaikannya Tugas Akhir ini.
4. Bagus Jati Santoso, S.Kom., Ph.D. selaku pembimbing IIyang juga telah membantu, membimbing, dan memotivasipenulis mulai dari pengerjaan proposal hingga
xi
terselesaikannya Tugas Akhir ini.5. Bapak Darlis Herumurti, S.Kom, M.Kom, selaku Kepala
Jurusan Teknik Informatika ITS saat ini, Bapak RadityoAnggoro, S.Kom, M.Sc, selaku koordinator TA, BapakImam Kuswardayan, S.Kom, MT, dan segenap dosenTeknik Informatika yang telah memberikan ilmu danpengalamannya.
6. Teman-teman Laboratorium AJK Mas Thiar, Wicak, Zaza,Nindy, Daniel, Setiyo, Risma, Oing, Syukron, Fatih, Afif,Vivi, Bebet, Fuad, Awan, Satria yang selalu menghibur danmendukung penulis dalam pengerjaan Tugas Akhir ini.
7. Segenap Keluarga Mahasiswa Klaten di Surabaya yangselalu ada dan memberikan motivasi kepada penulis.
8. EMAPAL XXV, Nia, Navi, Dita, Novelia, Aan, Danang,Evan, Dhika, Juan, Toni, Faris, Vando, Nopal, Seluruhanggota EMAPAL dan EMAPAL CORSICA yang telahmemberikan banyak pelajaran hidup kepada penulis.
9. Teman-teman God Bless You yang selalu memberikanhiburan, canda, dan tawa kepada penulis.
10. Serta semua pihak yang telah turut membantu penulis dalammenyelesaikan Tugas Akhir ini.
Penulis menyadari bahwa Tugas Akhir ini masih memilikibanyak kekurangan. Sehingga dengan kerendahan hati, penulismengharapkan kritik dan saran dari pembaca untuk perbaikan kedepannya.
4.2.1 Instalasi dan Konfigurasi Web Server . . . 204.2.2 Instalasi dan Konfigurasi php-fpm . . . . 214.2.3 Instalasi dan Konfigurasi Basis Data . . . 214.2.4 Instalasi dan Implementasi Monitoring
Koneksi InfluxDB . . . . . . . . . . . . . . . . . 64B.4 Kode Sumber Pembuatan Fungsi Koneksi InfluxDB 64B.5 Kode Sumber Pembuatan Fungsi Query Koneksi
InfluxDB . . . . . . . . . . . . . . . . . . . . . . 65B.6 Kode Sumber Fungsi Top-K . . . . . . . . . . . . 65B.7 Kode Sumber Import Pustaka Pembangun
Reverse Proxy . . . . . . . . . . . . . . . . . . . 66B.8 Kode Sumber Fungsi Reverse Proxy . . . . . . . . 67B.9 Kode Sumber InisiasiWorker . . . . . . . . . . . 68B.10 Kode Sumber Koneksi dan Layanan . . . . . . . . 68
xxi
(Halaman ini sengaja dikosongkan)
xxii
BAB 1
PENDAHULUAN
Pada bab ini akan dipaparkan mengenai garis besar TugasAkhir yang meliputi latar belakang, tujuan, rumusan masalah,batasan permasalahan, metodologi pembuatan Tugas Akhir, dansistematika penulisan.
1.1 Latar Belakang
Semakin berkembangnya teknologi informasi menuntutsemakin banyaknya penggunaan perangkat berupa komputer atauperangkat jaringan. Salah satu pemanfaatan dari teknologitersebut adalah penggunaan website untuk menangani perekrutananggota baru. Proses tersebut memerlukan kemampuanpenulisan dan pengambilan data yang cepat dan dapatmengangani banyak permintaan dalam satu waktu.
Metode yang saat banyak digunakan untuk melakukanpenyimpanan data adalah master-slave. Metode tersebutmenggunakan sebuah master node yang memungkinkan untukmelakukan penulisan data. Sedangkan beberapa slave node akanmenyalin data dari master node dan melayani pembacaan data.
Kelemahan dari metode master-slave adalah saat terjadipenulisan data yang besar secara bersamaan. Hal tersebutmengakibatkan bottleneck-effect pada master node. Untukmenanggulangi masalah tersebut maka digunakan sebuah metodemaster-master dimana semua node memiliki kemampuan untukmenulis dan membaca data. Setiap node akan melakukansinkronisasi agar data setiap node tetap sama.
1.2 Rumusan Masalah
Berikut beberapa hal yang menjadi rumusan masalah dalamtugas akhir ini:
1
2
1. Bagaimana mengimplementasikan metode multi-masterdengan algoritma top-k sebagai pembagi beban ?
2. Bagaimana performa algoritma top-k dengan dibandingkandengan algoritma yang lain ?
3. Bagaimana pengaruh perbandingan rasio CPU dan memoryserta jumlah worker terhadap kinerja sistem ?
4. Bagaimana perbandingan CPU dan memory dari sistemyang baru dengan sistem yang telah ada ?
1.3 Batasan Masalah
Dari permasalahan yang telah diuraikan di atas, terdapatbeberapa batasan masalah pada tugas akhir ini, yaitu:
1. Database yang digunakan menggunakan RDBMS(Relational Database Management System) denganMariaDB.
2. Penggunaan rasio perbandingan CPU dan memoryditentukan secara manual oleh pengguna.
3. Semua server worker memiliki spesifikasi yang identik.4. Sistem akan diuji coba dengan menggunakan aplikasi
PPDB Surabaya tahun 2015 dan dibandingkan denganNginx sebagai load balancer.
1.4 Tujuan
Tugas akhir dibuat dengan beberapa tujuan. Berikut beberapatujuan dari pembuatan tugas akhir:
1. Mengimplementasikan arsitektur sistem dengan metodemulti-master dengan pembagian beban untuk menanganitransaksi yang besar.
2. Membandingkan algoritma pembagian beban denganalgoritma top-k dengan algoritma yang sudah ada.
3
1.5 Manfaat
Dengan dibangunnya sistem penyimpanan data multi-masterterdistribusi dengan pembagian beban ini diharapkan dapatmenanggulangi masalah penulisan data yang terpusat padametode master-slave. Selain itu sistem juga diharapkan dapatmembagi beban dengan lebih baik dari algoritma yang sudah ada.
4
(Halaman ini sengaja dikosongkan)
BAB 2
LANDASAN TEORI
2.1 Multi-master Replication
Multi-master merupakan sebuah metode replikasi dimanasetiap node bertindak sebagai master dan juga replika pada saatyang bersamaan. Setiap node pada klaster tersebut memilikikemampuan untuk menulis dan membaca data secara bersamaan.Setiap node pada klaster memiliki state yang sama untukmengontrol dan melakukan penyalinan data. Metode tersebutjuga memungkinkan setiap node melakukan sinkronisasi antarnode. Proses sinkronisasi dilakukan dengan membuat sebuathubungan antara node satu dengan node lain seperti pada Gambar2.1 sehingga didapat data yang konsisten di semua node [1][2].
Gambar 2.1: Replikasi Multi-Master [11]
5
6
2.2 Top-k
Merupakan algoritma yang digunakan untuk menentukandominasi data pada suatu dataset. Algoritma tersebut akanmelakukan perhitungan dari suatu variabel dengan bobottertentu. Setelah dilakukan perhitungan maka data tersebutdiurutkan sesuai perhitungan yang telah didapat. Hasil darialgoritma tersebut adalah data yang mendominasi sejumlah k.Dataset akan diperbarui dengan kurun waktu tertentu dandilakukan penghitugan ulang. [3].
Algoritma ini akan digunakan sebagai penentu node yangakan melakukan pekerjaan. Worker dengan beban kerja yangpaling ringan akan dipilih untuk melayani permintaan yang ada.Parameter yang digunakan dalam rangcang bangun ini adalahpersentase beban CPU dan persentase beban memory.
2.3 MariaDB
MariaDB merupakan sebuah aplikasi basis data sumberterbuka yang dikembangankan oleh pengembang asli dariMySQL. Aplikasi tersebut menggunakan tipe RelationalDatabase Management System (RDBMS). Basis data tersebutmenggunakan tabel dengan baris dan kolom untuk menyimpandata. Setiap tabel dapat berhubungan dengan tabel yang laintanpa harus mengganti susunan data dari tabel yang sudah ada.RDBMS biasanya menggunakan Structured Query Language(SQL) untuk melakukan penyimpanan, pengambilan, danpenyuntingan data. Pada aplikasi MariaDB, data yang disimpandiubah dalam bentuk wide-array dan dapat digunakan untukmenyimpan berbagai macam informasi [4].
MariaDB memiliki kemampuan yang baik dalam menanganipenyimpanan data dan mudah digunakan karena didukungdengan berbagai macam aplikasi manajemen basis data. Selain
7
itu aplikasi tersebut sudah mendukung replikasi dengan metodemaster-master seperti yang sudah dijelaskan pada subbab 2.1.
2.4 Galera Cluster
Galera Cluster merupakan sebuah plugin opensource aplikasibasis data yang mendukung replikasi synchronous untuk basisdata bertipe multi-master. Galera Cluster memiliki kelebihanmudah digunakan, ketersediaan tinggi, dan juga konsistensi datauntuk pengembangan lebih lanjut.
Gambar 2.2: Cluster Galera Cluster [5]
Galera Cluster membantu dalam menyediakan implementasibasis data terdistribusi dengan metode multi-master denganwsrep API seperti Gambar 2.2. Selain itu Galera Cluster jugasudah memiliki dukungan penuh pada aplikasi MariaDBsehingga mudah untuk dikonfirugasi [5]. Beberapa fitur yangdiunggulkan oleh Galera Cluster antara lain:
8
1. True multi-masterMemungkinkan semua node melakukan penulisan danpembacaan data pada waktu yang bersamaan.
2. Synchronous replicationTidak ada keterlambatan propagasi sehingga tidak adakehilangan data saat terjadi kesalahan pada node.
3. Tightly coupledSemua node memiliki keadaan yang sama, sehingga tidakterjadi penyimpangan data yang terjadi antar node.
4. Automatic node joiningMemudahkan penambahan node pada cluster.
5. True parallel replicationReplikasi yang dijalankan berada pada row-level sehinggasetiap row yang ada dan juga konfigurasi datanya terjaga.
6. Support InnoDBMendukung aplikasi basis data yang berjalan dengan mesinInnoDB.
2.5 CollectD
CollectD merupakan aplikasi yang dapat mengumpulkan datametric dari sistem operasi, aplikasi, logfile, dan juga perangkateksternal yang digunakan. Aplikasi tersebut membantu dalammemantau kinerja pada perangkat server. Aplikasi CollectDmempunyai berbagai macam plugin yang dapat digunakan untukmelakukan monitoring sebuah server. Salah satu plugin yangdidukung oleh CollectD adalah pengiriman data melaluijaringan. Data yang telah didapat selanjutnya disimpan padaaplikasi InfluxDB. CollectD berada dibawah lisensi sumberterbuka dan dapat digunakan tanpa biaya. Aplikasi tersebutditulis dengan bahasa C, sehingga memberikan performa yangbaik serta mendukung berbagai sistem operasi tanpa perlu adascripting untuk beroperasi dengan baik [6].
9
2.6 InfluxDB
InfluxDB merupakan sebuah aplikasi yang berada dibawahlisensi kode sumber terbuka sehingga dapat digunakan dandimodifikasi dengan bebas. Aplikasi tersebut merupakan sebuahbasis data yang berbasis time series, dimana penyimpanan datadidasarkan pada sebuah satuan waktu yang kontinyu. Basis datatersebut memiliki performa yang baik untuk menyimpan datayang besar dan realtime, seperti data sensor, data operasimonitoring, dan juga real-time analytics. InfluxDB ditulisdengan bahasa Go dan mendukung penyimpanan data dalamjaringan [7].
2.7 Golang
Golang adalah bahasa pemrogramman dengan lisensi sumberterbuka yang dikembangkan oleh Google. Golang termasukbahasa statically typed seperti C. Golang akan di kompilasimenjadi bahasa sistem terlebih dahulu, sehingga performa bahasaGolang lebih baik dan cepat dari pada bahasa yang menggunakaninterpreter seperti php, ruby dan python. Walaupun Golangtermasuk bahasa statically typed, Golang sudah mendukungfitur-fitur seperti pada bahasa pemgrogramman yang lebih maju.Golang mendukung fitur-fitur antara lain garbage collection,memory safety, dan concurrent programming. Selain itu Golangmemiliki dukungan komunitas yang besar dan memiliki banyakplugin yang dapat digunakan dengan mudah [8].
2.8 Apache JMeter
Menjadi salah satu alat bantu untuk melakukan pengujianbeban dan mengukur performa aplikasi, salah satunya berbasisweb. Aplikasi Apache JMeter mampu melakukan pengujian padaberbagai macam protokol diantaranya Web (HTTP), FTP, Basis
10
Data, dan Mail (SMTP,IMAP,POP3). Apache JMeter dibangunberbasis Java dengan cara kerja meniru sebuah peramban web[9].
2.9 Grafana
Grafana merupakan sebuah aplikasi sumber terbuka yangdigunakan untuk visualisasi data dan analisis matrik. Grafanabiasanya digunakan untuk menampilkan data dengan basis waktuseperti data beban sebuah server, data produksi industri, dan jugadata sensor. Grafana dapat menampilkan menampilkan data darisebuah basis data, contohnya InfluxDB [10].
BAB 3
DESAIN DAN PERANCANGAN
3.1 Kasus Penggunaan
Terdapat tiga aktor dalam sistem yaitu Administrator,Monitoring agent, dan Balancer. Administrator adalah aktoryang mengoperasikan sistem dan mengelola worker, Monitoringagent adalah pengambil data dari keadaan beban yang ada diworker, sedangkan Balancer adalah aktor yang menghitungbeban worker dan menentukan worker mana saja yang akanmenangani permintaan. Diagram kasus penggunaanmenggambarkan kebutuhan-kebutuhan yang harus dipenuhisistem. Diagram kasus penggunaan digambarkan pada Gambar3.1.
Gambar 3.1: Digram Kasus Penggunaan
11
12
Digram kasus penggunaan pada Gambar 3.1 dideskripsikanmasing-masing pada Tabel 3.1.
Tabel 3.1: Daftar Kode Kasus Penggunaan
Kode KasusPenggunaan
Nama KasusPenggunaan
Keterangan
UC-0001 Menyalakandan mematikansistem.
Administratormemiliki kendaliatas aktif atau tidaknyasistem.
UC-0002 Mengelolaworker.
Administrator dapatmenambahkan danmengurangi jumlahworker dalam klaster.
UC-0003 Mengirim databeban worker.
Monitoring agentmengirim data bebanCPU dan bebanmemory pada basisdata.
UC-0004 Melayanirequest.
Balancer akanmeneruskanpermintaan kepadaworker terpilih danmengembalikanbalasan.
UC-0005 Menghitungbeban worker.
Balancer akanmenghitung bebandari semua workerdalam klaster.
13
Tabel 3.1: Daftar Kode Kasus Penggunaan
Kode KasusPenggunaan
Nama KasusPenggunaan
Keterangan
UC-0006 Menentukanworker yangbekerja.
Balancer akanmelakukan pengurutanbeban dan memilihworkermana saja yangakan bekerja.
3.2 Arsitektur Sistem
Pada sub-bab ini, dibahas mengenai tahap analisis dan desaindari sistem yang akan dibangun. Pembahasan akan dilakukanpada tiap-tiap komponen pembangun sistem yaitu: balancer,monitoring agent, penyimpanan data.
3.2.1 Desain Umum Sistem
Sistem pembagian beban yang akan dibangun mempunyaibebearapa bagian besar yang menjadi pembangun utama darisistem tersebut. Bagian tersebut antara lain:
1. WorkerWorker berguna sebagai pekerja yang melayani seluruhpermintaan dari pengguna yang diteruskan oleh balancer.Didalam setiap worker terdapat basis data dan web server.
2. Monitoring agentMonitoring agent adalah aplikasi yang mengambil danmengumpulkan beban kerja CPU dan memory padatiap-tiap worker.
3. BalancerBalancer akan membagi tugas operasi terhadap basis datadari hasil perhitungan algoritma top-k.
14
Arsitektur sistem secara umum digambarkan pada diagramarsitektur 3.2.
Gambar 3.2: Desain Sistem Secara Umum
3.2.2 DesainWorker
Worker bekerja sebagai penyedia layanan. Menunggupermintaan dari balancer dan kemudian akan dikembalikan lagipada balancer. Aplikasi akan ditempatakan pada worker. Padaworker terdapat beberapa komponen sebagai berikut:
1. Penyimpanan dataPenyimpanan data merupakan klaster basis data yang
akan digunakan oleh aplikasi yang berjalan pada workeruntuk menyimpan data. Penyimpanan data yang digunakanmerupakan sebuah cluster MariaDB yang telah terintegrasidengan bantuan Galera Cluster. Klaster tersebutmenggunakan replikasi multi-master sehingga setiap nodememiliki salinan data yang sama. Ketika diperlukan nodetambahan untuk memenuhi kebutuhan maka node tersebutakan mengkopi semua konfigurasi dari klaster. Transaksi
15
penyimpanan dan pengambilan data menggunakan SQL(Structured Query Language) yang sering digunakan untukbasis data. Digram arsitektur Penyimpanan Data terterapada Gambar 3.3.
Gambar 3.3: Desain Arsitektur Penyimpanan Data
2. Web serverWeb server adalah penyedia layanan dari aplikasi yang
berbasis web. Permintaan dari pengguna akan diterima dandiolah oleh web server. Pada sistem ini aplikasi yangdigunakan sebagai web server adalah Nginx.
3.2.3 DesainMonitoring Agent
Monitoring agent adalah sebuah aplikasi yang digunakanuntuk membaca penggunaan sebuah sumber daya pada suatuworker. Data yang didapat dari aplikasi tersebut dapatmerepresentasikan seberapa sibuk sebuah worker. Aplikasitersebut akan membaca persentase penggunaan CPU danmemory dari setiap worker lalu menyimpan data tersebut padapenyimpanan data.
Pada sistem ini monitoring agent akan dibangun denganmenggunakan aplikasi CollectD. Aplikasi tersebut mendukungpengiriman data lewat jaringan dengan cara mengirimkan paketUDP. Pada sistem ini paket tersebut akan dikirim kepada basisdata InfluxDB melalui port 25826. Diagram arsitekturmonitoring agent tertera pada gambar 3.4.
16
Gambar 3.4: Desain Arsitektur Monitoring Agent
3.2.4 Desain Balancer
Balancer berperan penting dalam sistem. Setiap permintaanyang masuk akan diproses oleh balancer dan dikembalikan kepengguna setelah mendapat balasan dari worker. Pada sistem inibalancer akan dibangun dengan bahasa Go. Terdapat duakomponen utama penyusun balancer, yaitu: reverse proxy danpenentu worker. Diagram arsitektur balancer tertera padagambar 3.5.
Gambar 3.5: Desain Arsitektur Penyeimbang Beban
Reverse proxy akan melayani permintaan yang berasal dariclient dan meneruskannya ke worker. Balasan dari worker
17
kemudian akan dikembalikan lagi ke client. Reverse proxy akanberjalan pada port 80.
Penentu worker akan menentukan worker mana yang akanmemproses permintaan. Data yang akan diambil dari sebuahaplikasi InfluxDB yang menyimpan seluruh data beben worker.Parameter yang digunakan menentukan adalah beban CPU danmemory dari tiap worker. Data tersebut ditentukan denganmenggunakan algoritma top-k. Algoritma tersebut akan berjalansecara periodik dan melakukan penghitungan ulang untukmenentukan worker yang selanjutnya.
18
(Halaman ini sengaja dikosongkan)
BAB 4
IMPLEMENTASI
Bab ini membahas implementasi sistem pembagian bebansecara rinci. Pembahasan dilakukan secara rinci untuk setiapkomponen yang ada yaitu: balancer, penyimpanan data, danmonitoring agent. Implentasi dilakukan pada lingkungankomputer fisik dan virtual. Penjelasan lingkungan implementasiakan dijelaskan kemudian.
4.1 Lingkungan Implementasi
Lingkungan implementasi dan pengembangan dilakukanmenggunakan virtualisasi Vagrant yang berjalan pada sebuahserver dengan spesifikasi Intel(R) Xeon(R) CPU E3-1220 V2 @3.10GHz dengan memori 16 GB dan sebuah server Proxmoxyang berjalan pada komputer host dengan spesifikasi Intel(R)Core(TM) i3-2120 CPU @ 3.20GHz dengan memori 8 GB.Semua server berada di Laboratorium Arsitektur dan JaringanKomputer, Teknik Informatika ITS dan terhubung denganjaringan tersebut. Perangkat lunak yang digunakan dalampengembangan adalah sebagai berikut :
• Sistem Operasi Proxmox versi 4.4-1/eb2d6f1e• Vagrant versi 1.8.1• VirtualBox• Sistem Operasi Linux Ubuntu Server 14.04.2 LTS (Worker)• Sistem Operasi Linux Ubuntu Server 16.04.1 LTS(Balancer)
• Golang versi 1.8.1• Git versi 2.21.2 untuk pengolahan versi program• MariaDB Galera Cluster versi 10.1.30• Apache JMeter untuk melakukan pengujian sistem• Postman Chrome Plugin untuk melakukan pengujianfungsional sistem.
19
20
4.2 ImplementasiWorker
Untuk melayani semua permintaan digunakan sebuahaplikasi web server Nginx yang berjalan dalam sistem operasiUbuntu Server 14.04. Agar dapat melayani halaman dinamisberbasis PHP, maka diperlukan aplikasi lain yaitu php-fpm.Selain itu pada worker terdapat sebuah aplikasi CollectD yangdapat mengambil penggunaan sumber daya untuk disimpan.
4.2.1 Instalasi dan Konfigurasi Web Server
Untuk melakukan instalasi dan konfigurasi web server Nginxterdapat langkah-langkah sebagai berikut:
• Instalasisudo apt-get install nginxPerintah diatas akan melakukan instalasi web serverkeladam sistem operasi Ubuntu.
• KonfigurasiBerkas konfigurasi dari Nginx dapat ditemukan padadirektori /etc/nginx/sites-available/default.Agar dapat melayani permintaan web dinamis seperti PHPmaka Nginx harus ditambahkan baris konfigurasi sepertidibawah:
1 server {2 ...3 index index.php index.html index.htm;45 location / {6 ...7 try_files $uri $uri/ /index.php;8 fastcgi_split_path_info ^(.+\.php)(/.+)$;9 fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;10 fastcgi_pass unix:/var/run/php5-fpm.sock;11 fastcgi_index index.php;12 include fastcgi_params;
21
13 ...14 }15 ...16 }
Kode Sumber 4.1: Konfigurasi Web Server Nginx
4.2.2 Instalasi dan Konfigurasi php-fpm
PHP-fpm dibutuhkan agar worker dapat menjalankan aplikasiyang berbasis php. Langkah-langkah untuk melakukan instalasidan konfigurasi php-fpm adalah sebagai berikut:
• Installasisudo apt-get install php5-fpm php5-mysqlPerintah diatas akan melakukan instalasi php-fpm kedalamsistem operasi. Selain itu diperlukan sebuah aplikasitambahan berupa php5-mysql agar aplikasi berbasis phpdapat berkomunikasi dengan basis data MariaDB.
• KonfigurasiBerkas konfigurasi dari php-fpm terdapat pada direktori/etc/php5/fpm/php.ini. Agar aplikasi tersebut dapatdijalankan oleh web server maka perlu mengubah baris;cgi.fix_pathinfo=1 menjadi cgi.fix_pathinfo=0.
4.2.3 Instalasi dan Konfigurasi Basis Data
Agar worker dapat menyimpan data dari aplikasi, makadiperlukan sebuah aplikasi basis data. Pada sistem digunakanbasis data MariaDB versi 10.1.30. Untuk melakukan sinkronisasidata antar basis data, maka pada sistem ini diperlukan jugaaplikasi Galera Cluster. Untuk melakukan instalasi dankonfigurasi aplikasi tersebut, langkah-langkahnya adalah sebagaiberikut:
• Instalasisudo add-apt-repository 'deb
22
[arch=amd64,i386]http://mariadb.biz.net.id/repo/10.1/ubuntutrusty main'Perintah diatas digunakan untuk menambahkan repositorydari MariaDB versi 10.1.30 kedalam daftar repositorysistem operasi.apt-get install mariadb-serverPerintah tersebut untuk melakukan instalasi dari aplikasiMariaDB versi 10.1.30.
• KonfigurasiBerkas konfigurasi dari aplikasi MariaDB versi 10.1.30berada pada direktori /etc/mysql/conf.d. MariaDBversi 10.1.30 sudah terpasang aplikasi Galera Clustersehingga kita hanya perlu melakukan konfigurasi denganmenambahkan sebuah file galera.cnf. Konfigurasidapat dilakukan seperti dibawah ini:
Kode Sumber 4.2: Konfigurasi MariaDB Galera Cluster
23
4.2.4 Instalasi dan ImplementasiMonitoring Agent
Monitoring agent bertugas untuk melakukan pengawasanterhadap sumberdaya dari worker. Pada sistem ini aplikasi yangdigunakan adalah CollectD. Untuk melakukan instalasi dankonfigurasi aplikasi tersebut, langkah-langkahnya adalah sebagaiberikut:
• Instalasisudo add-apt-repositoryppa:collectd/collectd-5.5Perintah diatas digunakan untuk menambahkan repositoryCollectD kedalam daftar repository sistem operasi. sudoapt-get install -y collectd collectd-utilsPerintah diatas digunakan untuk melakukan pemasanganaplikasi CollectD kedalam sistem operasi. Dibutuhkanaplikasi tambahan colledctd-utils agar aplikasi tersebutdapat berjalan dengan baik.
• KonfigurasiBerkas konfigurasi dari aplikasi berada pada/etc/collectd/collectd.conf. Agar dapat membacapersentase CPU, memory, dan dapat mengirimkan datamelalui jaringan, maka diperlukan konfigurasi sepertidibawah:
Aplikasi tersebut akan mengirimkan data beban workermelalui jaringan menuju alamat IP 10.151.36.64. Paketyang dikirimkan berupa paket UPD dengan port 25826.Paket tersebut akan diterima dan disimpan pada basis dataInfluxDB untuk pengolahan data yang selanjutnya.
4.3 Rincian Implementasi Balancer
Balancer akan dibangun dengan bahasa pemrograman Go,aplikasi InfluxDB, dan algoritma top-k. Aplikasi InfluxDB akanmenampung data yang akan diolah dengan algorimta top-k untukmenentukan worker tujuan. Data yang didapat kemudian diolahdengan algoritma top-k untuk menentukan worker dengan bebankerja paling ringan. Daftar worker sejumlah k akan digunakanbalancer untuk melayani permintaan pengguna.
25
4.3.1 Instalasi dan Konfigurasi Go Lang
Aplikasi balancer yang akan dibangun menggunakan bahasapemrograman Go. Agar bahasa pemrograman tersebut dapatberjalan dengan baik maka perlu dilakukan instalasi paket Go.Langkah untuk melakukan instalasi dan konfigurasi adalahsebagai berikut:
• Unduh paket Go versi 1.8.1 dari alamat webhttps://golang.org/dl/
• Lakukan ekstraksi paket yang sudah diunduh, kemudianpindahkan berkas hasil ekstraksi kedalam direktori/usr/local dengan perintah: tar -C /usr/local-xzf go1.8.1.linux-amd64.tar.gz
• Lakukan pengaturan tempat kerja dari bahasa Go denganmengatur variable GOPATH dengan perintah: exportGOPATH=$HOME/golang
• Atur environtment variable dari sistem operasi agar berkasbinary dari bahasa Go dapat diakses dari seluruh sistemdengan perintah exportPATH=$PATH:/usr/local/go/bin:$GOPATH/bin
• Setelah semua konfigurasi selesai, konfirmasi keberhasilanpemasangan dengan perintah go version
4.3.2 Instalasi dan Konfigurasi InfluxDB
Sebelum data beban CPU dan memory diolah oleh penentuworker, maka data tersebut harus disimpan kedalam sebuah basisdata. Basis data yang digunakan untuk menyimpan data tersebutadalah InfluxDB. Langkah untuk melakukan instalasi aplikasitersebut adalah sebagai berikut:
• Lakukan instalasi InfluxDB kedalam sistem operasi denganperintah: sudo apt-get install influxdb
• Agar aplikasi InfluxDB dapat menerima data yang dikirimdari CollectD melalui jaringan, maka perlu ditambahkanbaris konfigurasi pada berkas/etc/influxdb/influxdb.conf. Cari baris yang berisi[[collectd]] agar seperti ini:
Baris konfigurasi tersebut akan melakukan listen pada port25826 dan menyimpan data pada database resource
• Buka command shell aplikasi InfluxDB dengan perintahinflux. Kemudian buat sebuah database dengan caracreate database resource.
• Konfigurasi awal dari InfluxDB tidak menyertakan berkastypes.db. Isi dari berkas tersebut dapat dilihat padalampiran A.1.
27
4.3.3 Implementasi Pengambilan Data
Penentuan worker yang bekerja pada sistem ini ditentukanoleh data CPU dan memory yang disimpan pada basis dataInfluxDB. Agar bahasa pemrograman Go dapat melakukankoneksi dan pengambilan data, dibutuhkan pustaka tambahanInfluxDB Client. Pengunduhan pustaka dapat dilakukan denganperintah go getgithub.com/influxdata/influxdb/client/v2. Pustakayang berhasil diunduh akan masuk kedalam direktori yang sudahdiatur pada GOPATH. Pembangunan pengambilan dilakukansesuai langkah-langkah berikut:
• Untuk membangun pengambilan data dari InfluxDBdiperlukan pustaka InfluxDB Client dan beberapapenunjang yang lain, digunakan perintah import sesuaidengan kode sumber B.1.
• Membuat variabel konstan untuk keperluan koneksi danpemilihan database dari aplikasi InfluxDB. Variabeltersebut berisi nama database, username, kata sandi, dannomor port dari InfluxDB. Pembuatan variabel sesuaidengan kode sumber B.2.
• Untuk menampung data dari seluruh worker diperlukansebuah variabel Data yang berupa struct untukmenampung alamat IP worker, nama worker, beban CPU,beban memory, dan total beban. Variabel tersebut disimpandalam variabel DataSlice yang bertipe array. Pembuatanvariabel sesuai dengan kode sumber B.3.
• Melakukan inisiasi koneksi dengan aplikasi InfluxDBdengan membuat fungsi CreateClient. Parametermasukan dari fungsi merupakan data dari variabel konstan.Fungsi tersebut akan mengembalikan koneksi yang terbukasetelah berhasil dan pesan kesalahan jika mengalamikegagalan. Kode fungsi sesuai dengan kode sumber B.4.
• Setelah inisiasi koneksi berhasil, untuk melakuakn
28
pengambilan data dari aplikasi InfluxDB diperlukan fungsidengan parameter masukan variabel DataSlice dan hasilkoneksi. Fungsi tersebut akan menjalankan query SELECTlast(value) from cpu_value, memory_valuewhere type='percent' and host='[nama_host]'untuk mengambil beban CPU dan memory dari tiapworker. Fungsi tersebut akan mengembalikan nilai bebanCPU dan memory dengan tipe float64. Kode fungsitersebut sesuai dengan kode sumber B.5.
4.3.4 Implementasi Algoritma Top-k
Algoritma top-k diperlukan untuk menentukan worker yangmemiliki beban kerja paling sedikit. Parameter yang diperlukanuntuk melakukan perhitungan beban worker adalah beban CPUdan memory. Penentuan beban dari tiap worker dihitung daripenjumlahan dari data CPU dan memory dikalikan dengan rasiodari beban tersebut. Proses penghitungan sesuai denganpseudocode 4.1.
Gambar 4.1: Pseudocode penghitungan dengan algoritma Top-K
Langkah-langkah proses penghitungan beban sebagai berikut:• Setiap iterasi, sistem melakukan pengambilan data sesuaidengan kode sumber B.5 hingga semua data dari tiapworkerdisimpan kedalam sebuah array.
• Lakukan penghitungan beban tiap worker. Penghitunganbeban dilakukan dengan melakukan perkalian data CPUdan memory dengan masukan rasio beban dari masukan
29
administrator sistem.• Setelah didapat semua beban worker, maka dilakukanpengurutan worker yang paling ringan dengan parametertotal beban.
• Worker yang sudah diurutkan kemudian diambil sejumlah kteratas sebagai nilai kembalian dari fungsi top-k.
Implementasi top-k secara lengkap sesuai dengan kode sumberB.6.
4.3.5 Implementasi Reverse Proxy
Permintaan yang datang dari pengguna akan diteruskankepada worker untuk diproses lebih lanjut. Proses tersebutmembutuhkan reverse proxy agar dapat berjalan dengan baik.Program akan dibangun dengan bahasa Go dengan tambahanpustaka yang sudah tersedia. Pembangunan reverse proxy sesuaidengan langkah-langkah berikut:
• Agar reverse proxy dapat meneruskan permintaanpengguna, maka diperlukan pustaka penunjang.Digunakan perintah import sesuai dengan kode sumberB.7.
• Setelah pustaka berhasil di impor, diperlukan fungsi untukmeneruskan permintaan dari pengguna. Fungsi tesebutmemerlukan parameter masukan antara lain: array dariseluruh worker, koneksi dengan InfluxDB B.4, rasio CPU,rasio memory, dan jumlah k dan jumlah round (r). Didalamfungsi tersebut akan menjalankan algoritma top-k untukmenentukan worker, dan mengembalikan nilai kembaliandaftar worker yang akan bekerja dan diteruskan ke directoruntuk meneruskan permintaan pengguna ke worker.Pembuatan fungsi reverse proxy sesuai dengan kodesumber B.8.
• Untuk mendaftarkan semua worker yang akan menerimapermintaan dari pengguna, semua worker didaftarkan
30
kedalam sebuah array. Array tersebut akan menyimpanhost, alamat IP, dan data awal worker. Inisiasi daftarworker sesuai dengan kode sumber B.9.
4.3.6 Menjalankan Service Load Balancer
Sebelum balancer dapat digunakan, maka perlu menjalankanlayanan yang diperlukan. Perintah untuk menljalankan layananadalah ./balancer -k [worker] -mem [memory_ratio] -cpu [cpu_ratio] -r [roundtrip]. Penjelasan dari perintahtersebut:
• -k [worker]. Adalah jumlah worker yang diperlukanuntuk melayani permintaan. Nilai awal jika tidak adaparameter adalah 1.
• -mem [memory_ratio]. Adalah rasio penggunaanmemory sebagai perhitungan beban kerja worker. Nilaiawal jika pengguna tidak menentukan adalah 0.5 (50%).
• -cpu [cpu_ratio]. Adalah rasio penggunaan CPUsebagai perhitungan beban kerja worker. Nilai awal jikapengguna tidak menentukan adalah 0.5 (50%).
• -r [roundtrip]. Adalah jumlah dari permintaan yangditerima setiap worker sebelum dilakukan perhitunganulang dengan algoritma top-k. Nilai awal jika penggunatidak menentukan adalah 10.
BAB 5
PENGUJIAN DAN EVALUASI
5.1 Lingkungan Uji Coba
Lingkungan pengujian menggunakan komponen-komponenyang terdiri dari : satu droplet DigitalOcean sebagai balancer, 10droplet DigitalOcean sebagai worker, dan 4 buah komputer fisiksebagai penguji. Pengujian dilakukan di Laboratorium Arsitekturdan Jaringan Komputer Jurusan Teknik Informatika ITS. Desainarsitektur lingkungan pengujian tertera pada Gambar5.1.
Gambar 5.1: Arsitektur Pengujian Balancer
Spesifikasi untuk setiap komponen yang digunakan adalahsebagai berikut:
• Balancer :– Spesifikasi droplet:
* 2 Core Processor* RAM 2 GB* 40 GB SSD Disk
31
32
* 3TB Transfer Data– Perangkat lunak:
* Sistem operasi Ubuntu 16.04.02 LTS 64 Bit* Nginx* Golang versi 1.8.1* InfluxDB versi 1.2.2
• Worker:– Spesifikasi droplet:
* Single Core Processor* RAM 1 GB* 30 GB SSD Disk* 2 TB Transfer Data
– Perangkat lunak:* Sistem operasi Ubuntu 16.04.02 LTS 64 Bit* Nginx Web Server* CollectD versi 5.5* MariaDB Galera Cluster versi 10.1.30
• Komputer Penguji Fungsionalitas:– Perangkat Keras:
– Perangkat Lunak:* Sistem operasi OpenSUSE Tumbleweed* Postman Chrome
• Komputer Penguji Performa 4 buah:– 4 Buah Komputer
* Perangkat Keras:· Processor Intel(R) Core(TM) i3-3240 @3.40GHz
· RAM 4096 MB* Perangkat Lunak:
· Sistem operasi Windows 8 64 Bit· Java Version 8
33
· JMeter versi 3.1Untuk akses ke masing-masing komponen, dibutuh
pembagian alamat IP sesuai yaitu :• Balancer memiliki alamat IP 128.199.114.161• Droplet untuk worker
– worker 1 memiliki alamat IP 139.59.125.75– worker 2 memiliki alamat IP 139.59.125.76– worker 3 memiliki alamat IP 139.59.125.76– worker 4 memiliki alamat IP 139.59.125.103– worker 5 memiliki alamat IP 139.59.125.89– worker 6 memiliki alamat IP 139.59.125.85– worker 7 memiliki alamat IP 139.59.125.101– worker 8 memiliki alamat IP 139.59.125.107– worker 9 memiliki alamat IP 139.59.125.95– worker 10 memiliki alamat IP 139.59.125.91– Grafana monitoring dengan alamat IP 139.59.117.72
5.2 Skenario Uji Coba
Uji coba akan dilakukan untuk mengetahui keberhasilansistem yang telah dibangun. Aplikasi yang dijalankan padaworker adalah aplikasi Penerimaan Peserta Didik Baru KotaSurabaya tahun 2015. Skenario pengujian dibedakan menjadi 2bagian yaitu :
• Uji Fungsionalitas.Pengujian ini didasarkan pada fungsionalitas yangdisajikan sistem. Uji coba yang akan dilakukan adalah ujipenentuan worker dan pelayanan transaksi dari aplikasi.Uji coba dilakukan untuk mengetahui sistem dapatmenjalankan pembagian beban sesuai dengan fungsinya.
• Uji Performa.Pengujian ini untuk menguji ketahanan sistem terhadapsejumlah permintaan yang masuk. Pengujian dilakukan
34
dengan melakukan benchmark pada sistem.
5.2.1 Skenario Uji Fungsionalitas
Uji fungsionalitas dibagi menjadi 3, yaitu uji penentuanworker dan uji fungsionalitas pembagian beban.
5.2.1.1 Uji Fungsionalitas Manajemen Sistem
Pengujian manajemen sistem dilakukan dengan mengujifungsionalitas dari sistem. Pengujian ditinjau dari sisiadministrator sistem menangani kerja dari balancer tersebut.Pengujian yang dilakukan meliputi menjalankas layananbalancer, mengurangi dan menambahkan worker, danmematikan sistem.
5.2.1.2 Uji FungsionalitasMonitoring Agent
Monitoring agent akan melakukan monitoring beban kerjadari setiap worker dalam klaster. Pengujian dilakukan denganmelihat apakah monitoring agent dapat melakukan pembacaanbeban dari worker dan kemudian mengirimkan data ke InfluxDBdalam interval tertentu.
5.2.1.3 Uji Fungsionalitas Balancer
Dalam sistem ini balancer akan melayani permintaan daripenggua dan meneruskannya pada worker yang telah ditentukan.Pengujian akan dilakukan dengan melihat apakah balancer dapatmenghitung beban kerja dari setiap worker, menentukan workeryang bekerja dan menggantinya selama interval tertentu, danjuga merespon permintaan dari pengguna.
35
5.2.2 Skenario Uji Performa
Uji performa dilakukan untuk menguji ketahanan sistem dankemampuan sistem dalam menangani permintaan dari pengguna.Hasil yang didapat dari pengujian adalah jumlah pengujian yangdapat terlayani dan waktu respon permintaan.
5.2.2.1 Skenario Uji Performa Sistem
Pada pengujian ini dilakukan benchmark denganmenggunakan aplikasi berbasis Java yaitu Apache JMeter. Aksesinsert akan melakukan pendaftaran ke aplikasi PPDB Surabaya2015 pada jenjang SMA Umum. Apache JMeter akan membuatthread untuk setiap akses ke aplikasi. Pengujian akanberlangsung bertahap mulai dari 400, 600, 800, 1000 dan 1200thread dalam satu detik. Dari hasil pengujian akan didapatkanwaktu respon terhadap permintaan, persentase galat danpenggunaan resource pada aplikasi balancer. Parameter hasilpengujian tersebut menunjukan seberapa baik performa darisistem yang telah dibangun. Pengujian tersebut akandibandingkan dengan mengganti balancer dengan aplikasi Nginxyang menggunakan algoritma Round Robin, IP Hash, dan LeastConnected.
5.2.2.2 Skenario Uji Skalabilitas Sistem
Skalabilitas akan dilakukan dengan cara menggantiparameter jumlah worker yang ada dalam sistem secara bertahap,mulai dari 2, 4, 6, dan 8 worker. Sistem akan diuji denganmelayani sejumlah 800 thread dalam satu detik denganparameter perubahan 10 permintaan. Dari hasil pengujian akandidapat waktu respon terhadap permintaan dan jumlahpermintaan yang berhasil ditangani oleh sistem. Hasil yangdidapat akan dibandingkan dan melihat pengaruh dari jumlahworker terhadap kinerja sistem. Percobaan akan dilakukan
36
sebanyak tiga kali dan diambil nilai rata-rata dari ketigapercobaan tersebut.
5.2.2.3 Skenario Uji Perbandingan Rasio
Penentuan worker yang pada algoritma top-k menggunakanparameter persentase penggunaan CPU dan persentasepenggunaan memory. Untuk melakukan penghitungan bebanalgoritma top-k membutuhkan rasio perbandingan dari keduaparameter tersebut dengan rumus rasio_memory xbeban_memory + rasio_CPU x beban_CPU. Pada pengujianini akan dilakukan perbandingan rasio CPU:memory mulai dari30:70, 50:50, dan 70:30.
5.3 Hasil Uji Coba dan Evaluasi
Berikut dijelaskan hasil uji coba dan evaluasi berdasarkanskenario yang sudah dijelaskan pada bab 5.2.
5.3.1 Uji Fungsionalitas
Berikut dijelaskan hasil pengujian fungsionalitas pada sistemyang sudah dibangun.
5.3.1.1 Manajemen Sistem
Dilakukan pengujian pada halaman admin untuk melakukanmanajemen pada sistem. Rincian pengujian dan hasil dapat dilihatpada tabel 5.1.
Sesuai dengan skenario ujicoba yang diberikan pada Tabel5.1, hasil ujicoba menunjukkan semua fungsionalitas manajemensistem berhasil ditangani.
5.3.1.2 Uji FungsionalitasMonitoring Agent
Pada pengujian ini akan dilakukan pengujian pembacaan,pengiriman, dan penulisan data dari monitoring agent. Hasil ujicoba tertera pada tabel 5.2.
Tabel 5.2: Hasil Uji FungsionalitasMonitoring Agent
No Menu Uji Coba Hasil1 Membaca
DataMembaca databeban CPU danmemory dari setiapworker
OK
2 MengirimData
Mengirim datahasil pembacaanmelalui jaringan.
OK
38
Tabel 5.2: Hasil Uji Fungsionalitas Monitoring Agent
No Menu Uji Coba Hasil3 Menulis
DataMenyimpan datayang sudah dikirimkedalam basis data
OK
Sesuai dengan hasil pengujian pada table 5.2 semuafungsionalitas dari monitoring agent dapat berjalan dengan baik.
5.3.1.3 Uji Fungsionalitas Balancer
Pengujian dilakukan dengan menguji fungsionalitas daribalancer. Balancer dapat melayani permintaan dari pengguna,menghitung beban worker, menentukan worker, penggantianworker dalam interval waktu tertentu. Hasil uji coba tertera padatabel 5.3.
Tabel 5.3: Hasil Uji Fungsionalitas Balancer
No Fungsional Uji Coba Hasil1 Menghitung
bebanworker
Melakukanpengambilandata dari basis datadan melakukanpenghitunganbeban kerja worker
OK
2 Menentukanworker
Melakukanpengurutan workerdengan bebankerja paling ringandan mengambilsesuai parametermasukan.
OK
39
Tabel 5.3: Hasil Uji Fungsionalitas Balancer
No Fungsional Uji Coba Hasil3 Melayani
permintaanMeneruskanpermintaan daribalancer ke worker
Seperti yang sudah dijelaskan pada bab 5.2 pengujianperforma dilakukan menggunakan 4 komputer penguji.Pengujian dilakukan secara bertahap dengan menggunakanjumlah thread yang berbeda pada tiap komputer penguji. Padamasing-masing thread akan mengirimkan permintaan. Evaluasiakan dilakukan terhadap persentase jumlah permintaan yangdapat terlayani dan penggunaan CPU serta memory pada setiappengujian. Persentase jumlah data yang hilang di dapatkandengan perhitungan permintaan yang dikirim /permintaan terlayani x 100%. Selain itu pengujiandilakukan untuk mengetahui waktu respon rata-rata dari semuatransaksi yang ditangani balancer.
5.3.2.1 Uji Pelayanan Permintaan
Uji pelayana dilakukan dengan mengirimkan data banyakdalam satu detik. Pengiriman akan dilakukan secara bertahapmulai dari 200, 400, 600, 800, 1000, dan 1200 thread. Hasil yangdidapat adalah kemampuan sistem dalam menangani banyakpermintaan. Pengujian akan dibandingkan dengan algoritma lainyang sudah dijelaskan pada subbab 5.2.2.1. Hasil pengujianadalah sebagai berikut:
• Pengujian dengan 200 permintaan:
Tabel 5.5: Hasil Uji Coba menggunakan 200 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
0% 2504 ms 15.7/sec
IP Hash 64.40% 633 ms 44.4/sec
41
Tabel 5.5: Hasil Uji Coba menggunakan 200 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
LeastConnected
0.0% 2260 ms 17.2/sec
Top-k 0% 2112 ms 19.1/sec
• Pengujian dengan 400 permintaan:
Tabel 5.6: Hasil Uji Coba menggunakan 400 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
0.7% 4845 ms 16.4/sec
IP Hash 86.9% 352 ms 96,3/secLeastConnected
0.0% 4381 ms 17.0/sec
Top-k 0.0% 4164 ms 18.7/sec
• Pengujian dengan 600 permintaan:
Tabel 5.7: Hasil Uji Coba menggunakan 600 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
5.34% 7642 ms 17.5/sec
IP Hash 93.47% 245 ms 158/secLeastConnected
0.0% 7680 ms 16.7/sec
Top-k 1.27% 6545 ms 19.0/sec
42
• Pengujian dengan 800 permintaan:
Tabel 5.8: Hasil Uji Coba menggunakan 800 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
8.0% 7011 ms 22.1/sec
IP Hash 97.6% 196 ms 239/secLeastConnected
0.0% 9678 ms 14.7/sec
Top-k 7.0% 7596 ms 21.1/sec
• Pengujian dengan 1000 permintaan:
Tabel 5.9: Hasil Uji Coba menggunakan 1000 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
51.0% 5000 ms 37.9/sec
IP Hash 96.7% 544 ms 254/secLeastConnected
50% 4550 ms 36.2/sec
Top-k 40% 4885 ms 38.1/sec
• Pengujian dengan 1200 permintaan:
Tabel 5.10: Hasil Uji Coba menggunakan 1200 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
RoundRobin
74.0% 2954 ms 52.3/sec
43
Tabel 5.10: Hasil Uji Coba menggunakan 1200 permintaan
Algoritma PersentaseKesalahan
WaktuRespon
Throughput
IP Hash 90.0% 1162 ms 91.9/secLeastConnected
61.0% 5549 ms 25.8/sec
Top-k 52.0% 4248 ms 46.5/sec
Dari data pengujian, didapatkan persentase galat yang palingbaik dengan menggunakan algoritma Least Connected.Algoritma tersebut memberikan persentase kesalahan 0% saatmelayani 600 permintaan, setelah itu algoritma top-k dengan 400permintaan, Round Robin dengan 200 permintaan, dan hasilpaling buruk dengan IP Hash yang sudah memberikan 64.40%galat saat melayani 100 permintaan. Hal tersebut menjadikanalgoritma Least Connected memberikan hasil yang paling baikuntuk menangani permintaan dalam jumlah banyak. Dataperbandingan persentase galat dapat dilihat pada Gambar 5.2.
Gambar 5.2: Grafik Persentase Galat
44
Selain persentase galat, hasil pengujian juga menunjukkanwaktu respon dari tiap algoritma pembagian beban. Grafikperbandingan waktu respon dari tiap algoritma dapat dilihat padaGambar 5.3.
Gambar 5.3: Grafik Persentase Waktu Respon
Hasil paling baik dari waktu respon adalah algoritma IPHash. Akan tetap hasil tersebut dikarena persentase galat yangbesar sehingga permintaan diabaikan. Rata-rata waktu terbaiksetelah IP Hash adalah top-k kemudian Round Robin. Perbedaanwaktu respon kedua algoritma tersebut tidak terlalu signifikan.Hasil paling buruk dengan menggunakan algoritma LeastConnected.
5.3.2.2 Penggunaan CPU dan Memory
Pengujian dilakukan hingga jumlah thread mencapai 1200.Hasil pengujian penggunaan CPU pada dua platform Nginx danGO Lang tertera pada Gambar 5.4.
45
Gambar 5.4: Grafik Penggunaan CPU pada Uji Coba Performa
Dari hasil pengujian didapatkan penggunaan CPU padaplatform Go Lang membutuhkan persentase yang lebih tinggi.Pertambahan penggunaan CPU semakin meningkat denganbertambahnya jumlah permintaan yang harus dilayani.Peningkatan penggunakan CPU pada platform Go Lang lebihsignifikan dibandingkan dengan Nginx. Kenaikan rata-rata padaplatform Go Lang sebesar 7.5% sedangkan kenaikan rata-ratapenggunaan CPU pada platform Nginx sebesar 1%.
Sementara untuk penggunaan memory tidak terjadiperubahan yang signifikan. Ketika permintaan yang dikirimkanmencapai 1200, kedua platform hanya mengalami kenaikanpenggunaan memory rata-rata sebesar 1%. Hal tersebutdikarenakan kedua platform menggunakan multi-threadingsehingga lebih banyak menggunakan CPU dibandingkanmemory. Hasil perbandingan penggunaan memory dapat dilihatpada Gambar 5.5.
46
Gambar 5.5: Grafik Penggunaan Memory pada Uji Coba Performa
5.3.3 Uji Skalabilitas Sistem
Uji skalabilitas dilakukan untuk membuktikan semakinbanyak worker yang bekerja maka semakin banyak permintaanyang dapat dilayani. Pengujian akan dilakukan secara bertahapdari 2, 4, 6, dan 8 worker seperti pada subbab 5.2.2.2. Hasilpengujian terdapat pada tabel berikut:
Tabel 5.11: Hasil Uji Coba Skalabilitas
JumlahWorker
PersentaseKesalahan
WaktuRespon
Throughput
2 15.7% 11331 ms 16.1/sec4 30.2% 5568 ms 28.6/sec6 20.14% 5376 ms 28.4/sec8 8.8% 7757 ms 21.8/sec
Dari hasil uji coba dapat dilihat, semakin banyak pekerjayang digunakan maka sistem dapat menangani permintaan
47
dengan lebih baik. Selain itu hasil percobaan terbukti denganmenambahkan jumlah komputer pekerja dapat mengurangikehilangan data permintaan. Hal ini terjadi karena beban didistribusikan secara merata kepada setiap komputer pekerja.Semakin menurunnya data yang hilang, sistem akan menjadilebih handal dalam menangani permintaan. Grafik perbandinganpersentase galat dari tiap worker dapat dilihat pada Gambar 5.6
Gambar 5.6: Grafik Persentase Galat pada Uji Coba Skalabilitas
Selain itu dengan bertambahnya jumlah worker yangmenangani permintaan, waktu yang dibutuhkan untuk menanganipermintaan menunjukkan tren yang menurun. Hal tersebutdikarenakan semakin banyak pekerja yang digunakan makapembagian kerja dari satu permintaan dapat dilayani denganlebih cepat. Grafik perbandingan waktu respon dapat dilihat padaGambar 5.7.
Pada hasil pengujian terdapat anomali pada saatmenggunakan dua worker. Hal tersebut terjadi karena pembagiansemua beban benar-benar dibagi rata sama banyak sehinggapenganganan layanan lebih merata sehingga pelayanan
48
permintaan dapat diproses lebih optimal. Akan tetapi hal tersebutmengakibatkan peningkatan waktu respon, karena permintaanakan dilayane setelah permintaan yang sebelumnya selesaidikerjakan. Selain itu semakin sedikit jumlah worker, prosespenghitungan beban worker semakin sering sehinggamenyebabkan waktu respon meningkat secara signifikan.
Gambar 5.7: Grafik Waktu Respon pada Uji Coba Skalabilitas
5.3.4 Uji Perbandingan Rasio
Uji perbandingan rasio dilakukan untuk mengetahuipengaruh dari rasio beban CPU dan rasio beban memory.Pengujian dilakukan dengan mengirimkan 800 permintaankepada sistem. Hasil pengujian terdapat pada tabel berikut:
Tabel 5.12: Hasil Uji Coba Perbandingan Rasio
RasioCPU:Memory
PersentaseKesalahan
WaktuRespon
Throughput
30:70 16.25% 8661 ms 17.50/sec
49
Tabel 5.12: Hasil Uji Coba Perbandingan Rasio
RasioCPU:Memory
PersentaseKesalahan
WaktuRespon
Throughput
50:50 12.60% 8575 ms 18.8/sec70:30 9.80% 8287 ms 19.5/sec
Dari hasil pengujian diatas didapatkan semakin besar rasioCPU untuk menentukan worker pada algoritma top-k didapatkanpersentase galat yang semakin rendah. Grafik perbandingan galatdapat dilihat pada Gambar 5.8.
Gambar 5.8: Grafik Galat pada Uji Coba Perbandingan Rasio
Selain itu semakin besar rasio CPU juga mempersingkatwaktu respon permintaan. Data tersebut menenjukkan penentuanworker dengan algoritma top-k lebih efektif dengan rasio CPUyang lebih tinggi. Hal tersebut dikarenakan pada sistem iniperubahan CPU lebih signifikan dibandingkan dengan perubahanmemory saat melayani permintaan dari pengguna. Grafikperbandingan waktu respon dapat dilihat pada Gambar 5.9.
50
Gambar 5.9: Grafik Waktu Respon pada Uji Coba Perbandingan Rasio
BAB 6
PENUTUP
Bab ini membahas kesimpulan yang dapat diambil daritujuan pembuatan sistem dan hubungannya dengan hasil uji cobadan evaluasi yang telah dilakukan. Selain itu, terdapat beberapasaran yang bisa dijadikan acuan untuk melakukan pengembangandan penelitian lebih lanjut.
6.1 Kesimpulan
Dari proses perancangan, implementasi dan pengujianterhadap sistem, dapat diambil beberapa kesimpulan berikut:
1. Pembagian beban dengan algoritma top-k pada basis datamulti-master berhasil dilakukan dengan tingkatkeberhasilan mencapai 100%.
2. Algoritma top-k memiliki hasil penanganan layanan yanglebih buruk 16% dari Least Connected, tetapi memilikiwaktu respon rata-rata 758ms lebih cepat.
3. Semakin besar perbandingan rasio CPU dan jumlah worker,kinerja sistem pembagi beban semakin meningkat sebesar13%.
4. Penggunaan CPU rata-rata pada sistem yang dibuat lebihtinggi 16% dari aplikasi Nginx.
6.2 Saran
Berikut beberapa saran yang diberikan untuk pengembanganlebih lanjut:
• Mekanisme penanganan permintaan perlu ditingkatkanuntuk memastikan semua layanan dapat terpenuhi.
• Mekanisme load balancing yang sudah dirancang perluditambah dengan mekanisme pengecekan ketersediaanworker. Ketersediaan dapat berupa penggunaan CPU dan
51
52
memori serta batas open file jika memang proses padaworker dibatasi open file.
• Perlu digunakanmekanisme yang terpisah untukmelakukanpenghitungan kerja worker sehingga dapat berjalan secarakonkuren agar tidak mengganggu kinerja pembagi beban.
DAFTAR PUSTAKA
[1] severalnines Learn the difference betweenMulti-Master and Multi-Source replication,[Online], https://severalnines.com/blog/learn-difference-between-multi-master-\and-multi-source-replication, diakses tanggal28 Februari 2017
[2] H. Paci, E. Kajo, I. Tafa and A. Xhuvani, Adding A New SiteIn An Existing Oracle Multimaster Replication WithoutQuiescing The Replication International Journal of DatabaseManagement Systems ( IJDMS ), Vol.3, No.3, August 2011.
[3] B. J. Santoso, G. M. Chiu, Close Dominance Graph:An Efficient Framework for Answering ContinuousTop-k Dominating Queries IEEE TRANSACTIONS ONKNOWLEDGE AND DATA ENGINEERING, VOL. 26,NO. 8, AUGUST 2014.
[4] The MariaDB Foundation About MariaDB, [Online],https://mariadb.org/about/, diakses tanggal 28Februari 2017
Dalam instalasi aplikasi InfluxDB terdapat berkas types.dbyang diperlukan agar aplikasi berjalan dengan benar. Berkaskonfigurasi dari types.db dapat dilihat seperti dibawah ini:
Beberapa pustaka harus di impor untuk mendukungpengambilan data pada basis data InfluxDB. Pustaka-pustakayang diperlukan yang diperlukan antara lain pustaka log, fmt,encoding/json, sort, dan Influx Client.
Kode Sumber B.5: Kode Sumber Pembuatan Fungsi Query Koneksi InfluxDB
B.1.6 Fungsi Top-k
Algoritma top-k digunakan sebagai penentu worker denganbeban yang paling ringan. Parameter masukan dari fungsi adalaharray worker, jumlah k, rasio CPU, rasio memory.
Kode Sumber B.7: Kode Sumber Import Pustaka Pembangun Reverse Proxy
B.1.8 Fungsi Reverse Proxy
Fungsi reverse proxy akan meneruskan permintaan daripengguna kepada worker, dan mengirimkan hasil pengolahankembali kepada pengguna.
1 var node []string23 func NewMultipleReverseProxy(s data.DataSlice, c client.
Client, perMem float64, perCpu float64, k int) *httputil.ReverseProxy {
4 var mutex = &sync.Mutex{}5 sum := 06 index := 07 for _, d := range s {8 d.Cpu, d.Mem = data.GetData(c, d.Host)9 }10 node = data.TopK(s, c, perMem, perCpu, k)11 director := func(req *http.Request) {12 mutex.Lock()13 if index == len(node) {14 index = 015 }16 if sum == (10*len(node)) {17 for _, d := range s {18 d.Cpu, d.Mem = data.GetData(c, d.Host)19 }20 node = data.TopK(s, c, perMem, perCpu, k)21 sum = 022 }23 req.URL.Scheme = "http"24 req.URL.Host = node[index]25 index++26 sum++27 mutex.Unlock()
3 fmt.Println("balancer ready on port 80")4 log.Fatal(http.ListenAndServe(":80", proxy))
Kode Sumber B.10: Kode Sumber Koneksi dan Layanan
70
(Halaman ini sengaja dikosongkan)
BIODATA PENULIS
Muhammad Syaiful Jihad Amrulloh,Akrab dipanggil Uul lahir di Klatenpada tanggal 16 Januari 1995. Penulisyang memiliki hobi bermain sepak bola iniadalah anak pertama dari dua bersaudara.Penulis menempuh pendidikan formaldi SDN 1 Tempursari Klaten, SMPN1 Klaten, SMAN 1 Klaten dan melanjutkankuliah S1 Teknik Informatika FTIFITS. Penulis pernah menjadi asisten Labpada Laboratorium Arsitektur dan JaringanKomputer pada bidang Maintenance.
Selama menjadi asisten Lab penulis beberapa kali menjadiasisten dosen dan praktikum pada mata kuliah sistem operasi,jaringan komputer, dan teknologi antar jaringan. Penulis mudahmemahami hal baru dan tertarik pada bidang InfrastrukturJaringan dan Komputasi Awan. Penulis dapat dihubungi melaluisurat elektronik [email protected].