Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

25
Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket Proposal Skripsi Disusun oleh: Husnul Anwari NIM: 125150200111051 INFORMATIKA PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA MALANG 2016

description

Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

Transcript of Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

Page 1: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

Proposal Skripsi

Disusun oleh: Husnul Anwari

NIM: 125150200111051

INFORMATIKA

PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

MALANG 2016

Page 2: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

i

DAFTAR ISI

DAFTAR ISI ....................................................................................................................... i

DAFTAR TABEL ............................................................................................................... iii

DAFTAR GAMBAR ......................................................................................................... iv

BAB 1 PENDAHULUAN .................................................................................................... 1

1. 1 Latar Belakang................................................................................................. 1

1. 2 Rumusan Masalah ........................................................................................... 2

1. 3 Tujuan ............................................................................................................. 2

1. 4 Manfaat .......................................................................................................... 3

1. 5 Sistematika Penulisan ..................................................................................... 3

BAB 2 LANDASAN KEPUSTAKAAN................................................................................... 5

2. 1 Websocket ...................................................................................................... 5

2.2.1 Websocket Handshake ............................................................................ 6

2.2.2 Data Framing ........................................................................................... 6

2.2.3 Websocket API......................................................................................... 7

2. 2 Load balancing ................................................................................................ 7

2.3.1 Round-Robin DNS .................................................................................... 8

2.3.2 Layer Transport Load balancing (L4) ........................................................ 8

2.3.3 Layer Aplikasi Load balancing (L7) ........................................................... 8

2. 3 Linux Virtual Server ......................................................................................... 9

2.4.1 Metode IP load balancing...................................................................... 10

2.4.2 Algoritma Penjadwalan ......................................................................... 12

2. 4 Nginx ............................................................................................................. 12

2. 5 Node.js .......................................................................................................... 13

2. 6 Socket.io ....................................................................................................... 14

BAB 3 METODOLOGI PENELITIAN ................................................................................. 16

3.1 Studi Literatur ............................................................................................... 16

3.2 Analisa Kebutuhan ........................................................................................ 16

3.3 Perancangan ................................................................................................. 17

3.4 Implementasi ................................................................................................ 17

3.5 Pengujian dan Analisis .................................................................................. 17

3.6 Pengambilan Kesimpulan .............................................................................. 18

Page 3: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

ii

DAFTAR PUSTAKA......................................................................................................... 19

Page 4: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

iii

DAFTAR TABEL

Tabel 2.1 Grafik kuadratik Base-12 ............................................................................ 7

Page 5: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

iv

DAFTAR GAMBAR

Gambar 2.1 Proses komunikasi websocket ............................................................... 6

Gambar 2.2 Websocket frames .................................................................................. 7

Gambar 2.3 Arsitektur LVS........................................................................................ 10

Gambar 2.4 LVS/NAT ................................................................................................. 11

Gambar 2.5 LVS/TUN ................................................................................................ 11

Gambar 2.6 LVS/DR ................................................................................................... 12

Gambar 2.7 Arrrsitektur Nginx ................................................................................. 13

Gambar 3.1 Diagram alur metodologi penelitian ................................................... 16

Page 6: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

1

BAB 1. PENDAHULUAN

1. 1 Latar Belakang

Protokol HTTP kini telah menjadi standar untuk komunikasi pada web application. Cara kerja protokol HTTP sangat sederhana yaitu client mengirimkan request kemudian server memberikan balasan. Akan tetapi pada sistem yang lebih kompleks atau web application dengan update data secara real-time, proses komunikasi menggunakan HTTP dapat menyebabkan penumpukan beban pada server dan pada akhirnya menyebabkan latency yang tinggi. Peningkatan jumlah request yang dikirimkan client dengan membawa beban yang banyak juga bisa membuat server mengalami overload bahkan down untuk sesaat. Untuk kondisi tertentu, momen sesaat tersebut bisa menjadi vital dan dapat menimbulkan kerugian apabila tidak ditangani dengan baik.

Sebelumnya, banyak cara yang dilakukan untuk mengatasi kelemahan protokol HTTP pada saat pengiriman data secara real-time, akan tetapi tidak semua dilakukan penuh secara asynchronous melainkan dengan mensimulasikannya menggunakan metode long-poling dan server side push seperti Comet (Kulshrestha, 2013). Kelemahan dari hal ini adalah efisiensi yang rendah serta membutuhkan sumber daya yang besar (Zhang & Shen, 2013).

Protokol websocket dan websocket API dihadirkan bersamaan dengan HTML 5 sebagai upgrade dari protokol HTTP untuk komunikasi data secara real-time. websocket menjadi satu-satunya framework pada web yang mendukung komunikasi secara asynchronous dan full-duplex. Terdapat banyak riset yang sudah dilakukan tenang perbandingan performa websocket dengan teknologi sejenis dan hasilnya adalah semua riset tersebut menyimpulkan bahwa websocket merupakan terobosan baru dalam protokol komunikasi secara real-time (Skvorc, Horvat, & Srbljic, 2014). Sampai sekarang websocket sudah didukung oleh browser seperti Chrome, Safari, Opera, Firefox dan IE10 (Zhang & Shen, 2013).

Meskipun beban server dapat dikurangi dengan penerapan websocket, namun dengan pertumbuhan pengguna internet yang meningkat tajam, hal yang menjadi penting adalah menjaga layanan aplikasi berjalan dengan baik seiring dengan pertumbuhan pengguna. Teknik scaling out merupakan solusi yang banyak digunakan yaitu dengan menambahkan beberapa server untuk membentuk sebuah cluster. Metode ini merupakan solusi yang efektif dengan peningkatan availability, scalability, serta reliability secara eksponensial. ada sebuah cluster, pemilihan server diatur dengan mengimplementasikan load balancer. Ada banyak jenis load balancer dan tiap-tiap load balancer tersebut memiliki kelebihan dan kekurangan masing-masing serta kondisi-kondisi khusus dalam penerapannya. Akan tetapi tidak semua jenis load balancer dapat diterapkan pada protokol websocket dikarenakan proses komunikasi yang berbeda dan tergolong teknologi yang masih baru.

Page 7: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

2

Beberapa jenis load balancer yang sudah mendukung websocket yaitu layer 4 dan layer 7 load balancer. Layer 4 load balancer dapat digunakan untuk websocket karena bekerja berdasarkan IP pada TCP atau UDP port dimana TCP adalah inti dari protokol websocket. Linux Virutal Server (LVS) merupakan Layer 4 Load balancer berbasis open source dengan tujuan membangun high-performance dan high-availabity server pada linux dengan menggunakan clustering untuk menyediakan layanan yang scalable dan reliable (Xu & Xie, 2009). Sedangkan layer 7 load balancer bekerja pada layer aplikasi dimana websocket diimplementasikan. Dikarenakan masih baru, tak semua Layer 7 load balancer mendukungi websocket, salah satu yang sudah adalah Nginx. Nginx merupakan web server paling banyak digunakan kedua di dunia, berdasarkan NetCraft. Nginx sudah digunakan sebanyak 15% dari jutaan website di dunia. Nginx merupakan modular, event-driven, asynchronous dan dibangun berdasarkan non-blocking arsitektur (Prakash, Biju, & Sowmya, 2015). Berdasarkan uraian di atas, penulis hendak melakukan penelitian untuk menganalisa kinerja dua jenis load balancer tersebut untuk protokol websocket.

Pengujian kinerja dari sistem load balancing yang dibangun dilakukan dengan membuat koneksi dalam jumlah banyak dalam satu waktu pada alamat load balancer. Kinerja dari load balancer dapat dilihat dari CPU utilization pada tiap server, troughput dari server ke client, latency, dan jumlah client yang bisa dilayani oleh server secara bersamaan atau concurrency. Dengan demikian akan diketahui metode load balancing yang paling efektif dan efisien dan bisa diterapkan pada protokol websocket.

1. 2 Rumusan Masalah

Berdasarkan latar belakang yang dibahas, maka rumusan masalah yang dapat

dikaji adalah sebagai berikut :

1. Bagaimana kinerja Layer 4 load balancer (LVS) dan Layer 7 load balancer

(Nginx) pada websocket server dari segi :

a. Penggunaan CPU pada tiap server (CPU utilization)

b. Data yang berhasil dikirimkan dalam satuan waktu (troughput)

c. Waktu dari client mengirim request hingga menerima balasan dari

server (latency)

d. Jumlah client yang dapat dilayani oleh server (concurrency)

2. Jenis load balancer manakah yang paling efektif dan efisien pada

websocket server.

3. Seberapa besar peningkatan kinerja websocket server setelah

menggunakan cluster dan load balancer.

1. 3 Tujuan

Tujuan dari penelitian ini yaitu :

Page 8: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

3

1. Merancang peningkatan kinerja websocket server dengan menerapkan

load balancing dan membuat cluster.

2. Menguji kinerja Layer 4 load balancer (LVS) dan Layer 7 load balancer

(Nginx) pada websocket server.

3. Mengetahui jenis load balancer yang paling efektif dan efisien untuk pada

protokol websocket.

1. 4 Manfaat

Dari penelitian ini diharapkan manfaat yang didapatkan nantinya adalah

menyediakan data yang teruji dan terukur tentang kinerja Layer 4 dan Layer 7 load

balancer untuk websocket server, menyediakan saran dalam memilih teknologi

yang tepat dalam membangun websocket server yang scalable dan reliable.

Terakhir adalah membantu penulis untuk lebih memahami teknologi websocket,

load balancing dan komponen terkait dalam sistem terdistribusi.

1. 5 Sistematika Penulisan

Sistematika penulisan ditujukan untuk memberikan gambaran dan uraian dari penulisan skripsi secara garis besar yang meliputi beberapa bab, sebagai berikut :

BAB I PENDAHULUAN

Pada bab ini akan dijelaskan mengenai latar belakang pembuatan skripsi, rumusan

masalah, tujuan dan manfaat, serta sistematika penulisan.

BAB II LANDASAN KEPUSATAKAAN

Landasan kepustakaan berisi uraian dan pembahasan tentang teori, konsep,

model, metode, atau sistem dari literatur ilmiah, yang berkaitan dengan topik

skripsi dan pertanyaan penelitian. Landasan kepustakaan ini digunakan sebagai

dasar perancangan, implementasi dan analisa hasil pada penelitian ini.

BAB III METODOLOGI PENELITIAN

Dalam bab metode penelitian terdapat metode dan langkah kerja dalam analisa

kinerja load balancer pada websocket server. Langkah-langkah yang dijelaskan di

sini meliputi studi literatur, perancangan, implementasi, pengujian dan analisis,

serta pengambilan kesimpulan dan saran.

BAB IV ANALISA KEBUTUHAN DAN PERANCANGAN

Bab ini membahas analisa kebutuhan sistem seperti sistem operasi, jenis load

balancer, lingkungan pengujian serta apa saja metrik yang digunakan. Bab ini juga

berisi bagaimana skema perancangan sistem yang akan dibangun, serta dijelaskan

juga bagaimana skenario pengujian sistem untuk mendapatkan hasil yang akurat

dan bisa diuji kembali validitasnya.

Page 9: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

4

BAB V IMPLEMENTASI

Bab implementasi membahas bagaimana mengimplementasikan rancangan yang

sudah dibuat sebelumnya agar bisa berjalan dengan baik sehingga bisa didapatkan

data yang akurat sesuai metrik yang sudah ditentukan. Bab ini juga membahas

permasalahan-permasalahan yang mungkin ditemui saat implementasi dan

bagaimana solusi untuk masalah tersebut.

BAB VI PENGUJIAN DAN ANALISIS

Bab ini meliputi tahap pengujian dari sistem berdasarkan skenario yang sudah

dibuat untuk mengambil data sesuai metrik. Selanjutnya data tersebut akan

dianalisa dan diubah menjadi bentuk yang lebih mudah dipahami seperti tabel dan

grafik.

BAB VII PENUTUP

Pada bab ini terdapat kesimpulan yang diambil berdasarkan analisa data-data

sesuai metrik dari hasil hasil pengujian. Kesimpulan ini akan menjawab

pertanyaan-pertanyaan pada rumusan masalah. Bab ini juga menampung saran-

saran untuk penelitian selanjutnya.

Page 10: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

5

BAB 2. LANDASAN KEPUSTAKAAN

Kajian pustaka membahas penelitian yang telah ada dan yang diusulkan serta

dijelakan mengenai konsep teori yang dijadikan landasan dalam penelitian ini.

Teori yang dibahas adalah websocket, Load balancing, Linux Virtual Server, Nginx,

Node.Js serta Socket.io.

2. 1 Websocket

Websocket merupakan protokol pada layer aplikasi yang dibangun di atas

koneksi TCP. Hal ini memungkinkan komunikasi secara dua arah pada web.

websocket merupakan alternatif dari teknologi sebelumnya yaitu HTTP polling

dengan membawa peningkatan dalam kehandalan, kinerja, serta efisiensi (Skvorc,

Horvat, & Srbljic, 2014). Dari uraian di atas maka websocket sangat tepat

digunakan untuk web dengan update data real-time seperti game, chat, Internet

of Things (IoT) dan masih banyak lagi.

Meskipun memiliki fungsi yang hampir sama dan performanya tidak sebaik

protokol TCP dalam komunikasi, namun websocket mendukung teknologi

sebelumnya (backward compatible) untuk infrastruktur web saat ini (Skvorc,

Horvat, & Srbljic, 2014). Websocket handshake masih menggunakan standar HTTP

1.1, terlebih lagi komunikasi dengan websocket mendukung fitur-fitur yang sudah

ada seperti :

1. Dukungan penuh secara native pada web browser, termasuk SSL untuk

keamanan.

2. Proxy dan firewall.

3. URL-based endpoint yang memungkinkan banyak atau bahkan layanan

tidak terbatas pada satu TCP port.

4. Tidak ada batasan panjang data seperti yang ada pada protokol TCP.

Gambar di bawah ini menjelaskan sequence diagram dari webscoket protokol

serta perbandingan dengan protokol TCP. Karena dibangun menggunakan TCP,

maka websocket juga membutuhkan handshake terlebih dahulu untuk membuat

koneksi, bedanya pada TCP diperlukan 3-way-handsake sedangkan pada

websocket client mengirim upgrade request dan server membalasnya dengan

upgrade respond. Dari sini maka terbentuklah koneksi antara server yang

mendukung komunikasi secara asynchronous dan full-duplex.

Page 11: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

6

Gambar 2.1 Proses komunikasi websocket

2.2.1 Websocket Handshake

Spesifikasi standar protokol websocket didefinisikan dalam RFC6455. Untuk

menjaga protokol ini bisa bekerja pada teknologi web yang sudah ada, spesifikasi

tersebut mengatur bahwa koneksi websocket diawali dengan melakukan

handshake untuk perpindahan dari HTTP ke websocket. Bowser mengirim

websocket request ke server (ws:// atau wss://), menandakan bahwa browser

ingin berpindah protokol dari HTTP menjadi websocket. Server menangkap

informasi ini berdasarkan Upgrade header yang dikirim seperti request berikut:

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-websocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Origin: http://example.com

Sec-websocket-Protocol: chat, superchat

Sec-websocket-Version: 13

Apabila server mendukung websocket maka ia akan mengirimkan balasan

untuk berpindah protokol. Dari sini hingga ke depannya, segala koneksi dengan

HTTP selesai dan pengiriman data dilakukan berdasarkan websocket frames.

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-websocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Sec-websocket-Protocol: chat

2.2.2 Data Framing

Unit data yang ditransfer melalui websocket disebut websocket frames.

websocket frames mendukung binary data, text dalam UTF-8 encoded, dan control

frames. Beberapa informasi sengaja ditambahkan dalam tiap-tiap frame seperti

pada gambar berikut :

Page 12: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

7

Gambar 2.2 Websocket frames

2.2.3 Websocket API

Selain protokol, spesifikasi websocket juga mengatur API untuk berinteraksi

dengan protokol. Websoket API merupakan event-based, meliputi kesiapan

protokol, respons untuk jaringan dan pesan serta jenis data yang ditransfer antara

client dan server. Tabel di bawah ini merupakan ringkasan dari websocket API :

Callback Deskripsi

onOpen Dijalankan ketika sesi websocket terbentuk, memberitahukan bahwa protokol siap digunakan untuk transfer data.

onError Dijalankan ketika terjadi kesalahan.

onClose Dijalankan ketika salah satu peer (client atau server) mengakhiri sebuah sesi.

onMessage Dijalankan ketika semua pesan diterima dari salah satu peer.

Tabel 2.1 Grafik kuadratik Base-12

2. 2 Load balancing

Ketika sebuah layanan dikembangkan dengan menggunakan server

terdistribusi, satu masalah akan timbul yaitu bagaimana mendistribusikan koneksi

dari client pada server. Client bisa saja memilih secara acak sebuah server untuk

melayani mereka. Akan tetapi hal ini dapat menyebabkan ketidakseimbangan

dalam pendistribusian. Oleh karena itu mekanisme load balancing diperlukan

(Qveflander, 2010).

Load balancing merupakan kemampuan untuk menyebarkan beban dari

proses untuk sebuah aplikasi kepada beberapa sistem yang berbeda untuk

meningkatkan kemampuan pemrosesan pada permintaan yang datang. Sehingga

Page 13: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

8

dengan load balancing akan mengirimkan beberapa porsi pemrosesan dari

permintaan ke sebuah sistem kepada sistem independen lain yang akan ditangani

secara bersamaan. Keuntungannya adalah menurunkan jumlah pemrosesan yang

harus dilakukan oleh server penerima utama, memungkinkan server penerima

utama untuk menangani permintaan yang lebih banyak dan meningkatkan

kinerjanya dikarenakan berkurangnya kompetisi sumber daya pada server

penerima utama, dan lebih banyak perangkat yang memproses keseluruhan

beban (Kurniawan, 2013).

2.3.1 Round-Robin DNS

Metode load balancing yang paling sederhana yaitu menggunakan DNS.

Pendekatan ini menggunakan DNS A records dengan penjadwalan round-robin

untuk memilih server. Salah satu contoh pengunaan round-robin DNS adalah

Google. Dengan mengetikkan perintah host –t a

google.comhttp://www.google.co.id/ pada terminal maka akan didapatkan datar

DNS A untuk Google.com.

Penggunaan DNS untuk load balancing sangat sederhana, tetapi memiliki

kekurangan. Metode ini tidak dapat mengetahui keadaan server, apabila salah

satu server down, paket akan tetap dikirimkan pada server tersebut. IP dari DNS

juga bisa tersimpan di cache sehingga setiap kali client melakukan request, dia

akan mendapatkan server yang sama.

2.3.2 Layer Transport Load balancing (L4)

Layer 4 pada OSI model merupakan layer tansport. Penggunaan paling umum

dari protokol di layer 4 adalah TCP (Transmission Control Protocol) dan UDP (User

Datagram Protocol). Di sinilah biasanya hardware-based load balancer bekerja.

Load balancer ini menggunakan ASICs (Application Specific Integrated Circuits)

khusus untuk dapat mengerjakan sesuatu (modifikasi paket jaringan) dengan

sangat cepat dibandingkan dengan sistem lainnya. Sebagai gantinya, penggunaan

sistem ini memakan biaya yang tinggi.

IPVS (IP Virtual Server) merupakan software-based load balancer pada layer 4

yang ditanamkan pada Linux Kernel. Server IPVS yang bekerja sebagai load

balancer untuk mengatur beberapa server utama. Dari sisi client, hanya tahu satu

alamat IP (VIP) dan melakukan request pada alamat tersebut tanpa mengetahui

adanya server dalam cluster. Salah satu contoh penggunaan IPVS ini adalah Linux

Virtual Server (LVS) yang akan dijelaskan pada sub-bab berikutnya.

2.3.3 Layer Aplikasi Load balancing (L7)

Load balancing pada layer transport hanya mendistribusikan paket melalui

protokol TCP/UDP pada beberapa server dalam cluster tanpa mengetahui data

Page 14: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

9

yang dibawa paket tersebut. Dengan aplikasi yang bergantung pada client session,

load balancing pada layer aplikasi menjadi krusial.

Load balancing pada layer aplikasi mampu memeriksa isi paket yang

dikirimkan dan melakukan load balancing berdasarkan isi paket jika diperlukan.

Kelemahan dari hal ini adalah overhead yang besar sehingga mengurangi

scalability jika dibandingkan load balancing pada layer transport.

Tidak seperti L4 load balancing yang masih terbatas, aplikasi untuk L7 load

balancing sangat banyak sperti Nginx, HAProxy, Apache, Pound dan masih banyak

lagi. Semuanya memiliki kelebihan, kelemahan dan karakteristik masing-masing

untuk menangani paket dan mendistribusikannya pada server.

2. 3 Linux Virtual Server

Linux Virtual Server (LVS) merupakan aplikasi yang mengarahkan koneksi

jaringan ke beberapa server untuk membagi beban, hal ini dapat digunakan untuk

membangun layanan dengan availability dan scalability yang tinggi. LVS

mengarahkan koneksi ke server menggunakan algoritma penjadwalan tertentu

dan bertindak sebagai layanan virtual pada satu alamat IP (Zhang W. , 1999).

Pengguna berinteraksi dengan cluster seolah-olah adalah server tunggal dan

tidak terpengaruh oleh interaksi yang terjadi dalam cluster. Scalability dicapai

dengan menambahkan atau menghapus sebuah node di cluster. High availability

disediakan dengan mendeteksi kegagalan node atau daemon dan konfigurasi

ulang sistem yang tepat.

Tiga pilar utama dalam arsitektur LVS digambarkan pada diagram di bawah ini

dan meliputi :

1. Load balancer, berada pada front-end sebagai layanan yang dapat diakses

oleh dunia luar. Load balancer mengarahkan koneksi jaringan dari client

yang hanya mengetahui satu IP ke beberapa server yang sebenarnya

untuk pemrosesan selanjutnya.

2. Server pool, merupakan cluster dan beberapa server yang menjadi back-

end dan melakukan tugas sebenarnya seperti web, ftp, mail, DNS, dsb.

3. Back-end storage, menyediakan ruang penyimpanan yang dapat

digunakan bersamaan oleh server dalam cluster, sehingga memudahkan

server untuk menyediakan konten dan layanan yang sama.

Page 15: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

10

Gambar 2.3 Arsitektur LVS (LVS, 2016)

Load balancer menangani koneksi yang masuk menggunakan metode IP load

balancing. LVS akan memilih server dari server pool, mempertahankan koneksinya

dan mengarahkan paket ke server, dan semua ini dilakukan di dalam Kernel

sehingga overhead pada load balancer menjadi rendah. Selain itu LVS dapat

digunakan untuk koneksi dalam jumlah yang sangat besar dan menangani banyak

server sehingga tidak akan menyebabkan terjadi masalah bottleneck.

2.4.1 Metode IP load balancing

IP load balancing pada LVS mendukung tiga metode load balancing untuk

menyediakan layanan dengan scalability tinggi. Ketiga metode tersebut yaitu :

1. Linux Virtual Server via NAT

Seiring dengan berkurangnya Ipv4 dan beberapa masalah keamanan, semakin

banyak jaringan menggunakan private IP address yang tak bisa digunakan untuk

mengakses internet. Dari dasar inilah Network AdressTranslation (NAT) sangat

dibutuhkan.

NAT bekerja dengan menyesuaikan header paket sehingga client beranggapan

bahwa mereka menghubungi satu server (Virtual IP address), tetapi server

mengetahui bahwa mereka dihubungi langsung oleh client.

Alur kerja dari LVS/NAT adalah sebagi berikut ketika client mengakses

layanan, paket request yang ditujukan untuk virtual IP address diterima oleh load

balancer. Load balancer akan memeriksa IP dan port tujuan paket apakah ada

dalam rule table, memilih sebuah server berdasarkan algoritma penjadwalan dan

menulis koneksi yang terjadi pada hash table. Selanjutnya IP dan port pada paket

ditulis kembali menggunakan alamat server sesungguhnya dan paket diteruskan

ke sever. Selanjutnya ketika respon sampai, load balancer menuliskan kembali IP

dan port virtual server pada paket. Ketika koneksi berakhir atau timeout, koneksi

dalam hash table juga akan dihapus.

Page 16: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

11

Gambar 2.4 LVS/NAT

2. Linux Virtual Server via IP Tunneling

IP tunneling (IP encapsulation) merupakan teknik untuk melakukan

enkapsulasi IP datagram dalam IP datagram, sehingga memungkinkan datagram

untuk satu IP dialihkan ke IP lainnya.

Alur kerja dari LVS/TUN hampir sama dengan LVS/NAT. Dalam LVS/TUN setiap

data yang sampai pada load balancer dari client akan dienkapsulapsi untuk

diarahkan ke server, sedangkan paket dari server akan didekapasulasi untuk

dikirim kembali ke client.

Gambar 2.5 LVS/TUN

3. Linux Virtual Server via Direct Routing

Pada LVS/DR server dan load balancer harus dihubungkan secara fisik tanpa

ada perantara di tengahnya menggunakan LAN seperti Hub/Switch. Virtual IP

address dibagi pada server dan load balancer. Semua server mempunyai loopback

Page 17: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

12

interface dengan virtual IP address sedangkan load balancer menggunakan virtual

IP address untuk menerima paket.

Alur kerja dari LVS/DR yaitu load balancer memilih server dan meneruskan

paket dari client. Ketika server menerima paket tersebut dan memeriksa bahwa

tujuannya adalah dia, maka server tersebut bisa memberikan respon secara

langsung ke client tanpa melalui load balancer lagi.

Gambar 2.6 LVS/DR

2.4.2 Algoritma Penjadwalan

LVS menerapkan setidaknya 10 algoritma penjadwalan untuk memilih server

dari cluster untuk tiap koneksi. Algoritma tersebut yaitu : Robin Robin, Weighted

Round Robin, Least-Connection, Weighted Least-Connection, Locality-Based Least-

Connection, Locality-Based Least-Connection with Replication, Destination

Hashing, Source Hashing, Shortest Expected Delay, dan Never Queue.

2. 4 Nginx

Nginx merupakan aplikasi open source sebagai HTTP server, reverse proxy dan

juga IMAP/POP3 proxy server. Nginx terkenal dengan performa tinggi, stabil, kaya

fitur, konfigurasi yang sederhana dan penggunaan resource yang rendah (Zubayr,

2016). Dikarenakan kinerja yang sangat bagus, Nginx sudah banyak digunakan

diseluruh dunia dalam beberapa tahun terakhir (Yuan, Sun, Wang, & Liu, 2013).

Nginx merupakan server yang dibuat khusus untuk aplikasi dengan banyak

user, komunikasi data yang tinggi serta mengatasi masalah C10K. Tidak seperti

server biasanya, Nginx merupakan modular, event-driven, single-thread dan

menggunakan non-blocking arsitektur. Sebuah penelitian menyimpulkan bahwa

Nginx mempunya performa yang lebih baik dalam hal responsiveness, scalability

dan efisiensi dalam menangani beban berat (Prakash, Biju, & Sowmya, 2015). Hal

Page 18: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

13

ini menjadikan Nginx sebagai alat yang efektif untuk diterapkan pada semua jenis

server, mulai dari VPS kecil hingga server cluster.

Seperti uraian di atas, Nginx dapat berperan sebagai HTTP reverse proxy load

balancer untuk membagi traffic pada beberapa server guna meningkatkan

performa, scalabiity dan reliability dari web aplikasi (Nginx, 2016). Secara default

Nginx menyediakan modul khusus sebagai load balancer (upstream module)

dengan tiga metode penjadwalan yaitu :

1. Round-robin — Request yang diterima oleh server di distribusikan

menggunakan round-robin yaitu dari server pertama, kemudian server

berikutnya, hingga server terakhir dan kembali lagi ke server pertama.

2. Least-connected — Request akan diberikan pada server yang paling

sedikit menangani client.

3. IP-hash — Alamat IP dari client di-hash untuk menentukan server yang

digunakan. Dengan IP-hash, client akan dilayani oleh server yang sama

setiap kali request.

Metode penjadwalan lain juga tersedia dengan menambahkan third-party

module pada Nginx. Hal yang terpenting adalah load balancing menggunakan

Nginx sudah mendukung protokol websocket pada versi 1.3 ke atas.

Gambar 2.7 Arrrsitektur Nginx (Alexeev, 2016)

2. 5 Node.js

Node.js merupakan sebuah environment yang mengalami peningkatan trend

cukup tinggi di tahun 2014. Environment ini dirilis pertama kali pada 27 Mei 2009

dengan dipelopori oleh Ryan Dahl, sebuah environment client-server berbasis

JavaScript yang melandaskan operasinya pada mesin V8 yang dikembangkan

perusahaan bernama Google untuk melakukan parsing bahasa JavaScript dalam

browser besutan mereka, Google Chrome.

Page 19: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

14

Konsep dasar yang diusung Node.js adalah konsep pemrograman non-

blocking yang ekstensif. Konsep ini benar-benar cocok digunakan di atas sistem

mesin V8 besutan Google yang memang dirancang dan diciptakan untuk

melakukan pekerjaan lokal yang berhubungan dengan manipulasi tampilan

website bersamaan dengan input dari interaksi yang dilakukan pengguna terhadap

tampilan tersebut. Untuk mewujudkan hal tersebut, konsep non-blocking yang

memungkinkan operasi dapat berjalan asynchronous tanpa melakukan blocking

terhadap input akhirnya ditunjuk untuk menjadi dasar konsep V8 Engine. V8

Engine inilah yang kemudian digunakan sebagai dasar pengembangan

environment pemrograman dengan konsep yang sama namun tidak dalam

lingkungan lokal, melainkan dalam lingkungan server-client.

Secara fundamental, keunggulan environment Node.js sebenarnya terletak

pada dukungan engine Node.js untuk melakukan proses asynchronous melalui

functional programming secara ekstensif. Dengan memberikan dukungan

melakukan proses secara asynchronous atau interrupt-based, Node.js

menawarkan potensi performa layanan yang lebih baik dengan pemangkasan

waiting-time yang dapat di minimalkan menggunakan konsep interrupt-based

operation.

Namun disamping konsep operasi yang didasarkan pada sistem interupsi

kode, keunggulan lain Node.js terdapat pada sistem package manager bernama

npm yang sebenarnya dihadirkan sebagai fitur tambahan namun berubah menjadi

sebuah kelengkapan wajib yang diperlukan ketika melakukan pengembangan

dalam lingkungan Node.js. Dengan adanya dihadirkannya npm sebagai media

distribusi package terintegrasi, perkembangan Node.js melesat tinggi. Dengan

npm yang mempermudah developer mendistribusikan komponen mereka, banyak

muncul komponen/package penting yang kemudian menjadi komponen yang

terhitung vital dalam pengembangan sistem dalam environment Node.js.

2. 6 Socket.io

Socket.io merupakan JavaScript library yang berjalan pada server dengan

runtime Node.js dan juga browser. Selain menyediakan abstraksi protokol

websocket untuk komunikasi, Socket.io juga mendukung skema lainnya sebagai

fallback apabila browser atau client tidak mendukung websocket. (Cheng, 2013)

Fallback yang didukung oleh Socket.io yaitu (berdasarkan prioritas) :

1. Websocket

2. Adobe® Flash® Socket

3. AJAX long polling

4. AJAX multipart streaming

5. Forever Iframe

6. JSONP Polling

Page 20: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

15

Socket.io memiliki fitur utama seperti broadcast dan multicast yang tidak

dimiliki oleh websocket biasa (Wikipedia, 2016). Socket.io sudah dikembangkan

dalam beberapa bahasa lainnya seperti Python, Java, Golang, Erlang dan Perl

menggunakan paradigma asynchronus, event-driven dan non-blocking I/O (Cheng,

2013).

Dikarenakan Socket.io mampu bekerja pada server dan client maka

pengiriman pesan menjadi lebih mudah, client hanya perlu membuat event untuk

mengirim pesan pada sever dan event handler pada sisi client. Berikut merupakan

contoh implementasi Socket.io pada Node.js :

var server = require('http').createServer();

var io = require('socket.io')(server);

io.on('connection', function(socket){

socket.on('event', function(data){});

socket.on('disconnect', function(){});

});

server.listen(3000);

Page 21: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

16

BAB 3. METODOLOGI PENELITIAN

Metodologi penelitian menggambarkan metode serta langkah-langkah yang

digunakan dalam penelitian ini mulai dari awal hingga akhir. Tahapan penelitian

ini dapat dilihat pada diagram di bawah ini :

Studi Literatur

Analisa Kebutuhan

Perancangan

Implementasi

Pangujian dan Analisa

Kesimpulan

Gambar 3.1 Diagram alur metodologi penelitian

3.1 Studi Literatur

Pada tahap studi literatur ini akan dilakukan kajian terhadap teori yang

berhubungan dengan bidang penelitian, seperti pengumpulan serta analisis data

dari buku, jurnal, artikel dan referensi lainnya. Hal tersebut dilakukan untuk

memperkaya pengetahuan secara teori dan juga sebagai acuan dalam melakukan

perancangan sistem dan penarikan kesimpulan nantinya. Referensi yang

digunakan terdiri dari segala pustaka yang berhubungan dengan websocket, Load

balancing, Linux Virtual Server, Nginx, Node.Js serta Socket.io.

3.2 Analisa Kebutuhan

Tujuan dari analisa kebutuhan adalah mendapatkan daftar kebutuhan yang diperlukan untuk membangun sistem, jenis data yang diambil serta prosedur penelitian. Analisa kebutuhan dilakukan dengan melakukan studi literatur kemudian mengolah informasi yang didapatkan dan merumuskannya menjadi sebuah objek penelitian. Kebutuhan yang akan dianalisa antara lain :

1. Spesifikasi hardware dan software yang digunakan dalam sistem.

2. Kebutuhan fungsional dan non-fungsional sistem.

3. Metrik yang digunakan dalam pengujian.

4. Metode serta skenario pengujian.

Page 22: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

17

3.3 Perancangan

Perancangan sistem dilakukan setelah hasil analisa kebutuhan terkumpul.

Dari hasil analisa tersebut, nantinya akan dibangun arsitektur sistem. Hal-hal yang

akan dirancang pada tahap ini yaitu websocket server, websocket client (tunggal),

websocket server cluster menggunakan layer 4 dan layer 7 load balancer, serta

client untuk webscoket server cluster. Perancangan sistem diwujudkan dalam

gambar arsitektur sistem serta interaksi antar sistem.

Selain perancangan sistem, dalam tahap ini juga digambarkan diagram alur

dari tahapan-tahapan pengujian, menggunakan skenario yang sudah ditentukan.

3.4 Implementasi

Pada tahap ini, seluruh analisa kebutuhan dan perancangan yang telah dibuat

akan diimplementasikan menjadi sistem yang dapat berjalan secara keseluruhan.

Implementasi terdiri dari dua bagian utama, pertama yaitu implementasi topologi

jaringan dalam sistem dan kedua yaitu implementasi websocket menggunakan

Node.js dan Socket.io.

3.5 Pengujian dan Analisis

Pada tahap ini, sistem yang sudah dibangun dijalankan sesuai dengan

fungsinya sebagai bagian inti dari tahap pengujian. Ada tiga jenis pengujian yang

dilakukan yaitu :

1. Pengujian websocket server dan client dengan Node.js dan Socket.io

2. Pengujian websocket cluster menggunakan layer 4 dan layer 7 load

balancer. Pengujian ini dibagi lagi menjadi dua yaitu :

a. Pengujian kebutuhan fungsional dan non-fungsional sistem.

b. Pengujian kinerja tiap-tiap load balancer dengan skenario yang sudah

ditentukan pada tahap sebelumnya.

3. Pengujian validitas data.

Pengujian websocket server dan client dilakukan dengan menggunakan

pengujian teknik menggunakan white box testing, sedangkan pengujian laiinya

menggunakan black box testing karena pengujian ini berfokus pada data yang

dihasilkan sistem bukan cara kerja sistem. Pengujian dilakukan beberapa kali

untuk mendapatkan hasil yang optimal.

Sedangkan tahap analisa akan dilakukan setelah tahap pengujian selesai dan

semua data terkumpul. Data tersebut nantinya akan dianalisa secara matematis

kemudian diubah menjadi bentuk visual supaya mudah untuk dipahami. Data-data

yang direkam pada saat pengujian yaitu :

1. Penggunaan CPU pada tiap server (CPU utilization)

2. Data yang berhasil dikirimkan dalam satuan waktu (troughput)

Page 23: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

18

3. Waktu dari client mengirim request hingga menerima balasan dari server

(latency)

4. Jumlah client yang dapat dilayani oleh server (concurrency)

Selanjutnya yaitu pengujian validitas data yang dibuktikan dengan

memberikan screenshot hasil pengujian sebagai bukti bahwa tak ada data yang

direkayasa.

3.6 Pengambilan Kesimpulan

Setelah semua tahapan analisa kebutuhan, perancangan, implementasi dan

pengujian sistem telah selesai dilakukan, Pengambilan kesimpulan dilakukan

berdasarkan data-data yang sudah terkumpul dari tahap pengujian. Kesimpulan

yang diambil adalah jawaban atas pertanyaan-pertanyaan pada rumusan masalah.

Setelah mengambil kesimpulan maka tahap terakhir dari penulisan skripsi ini

adalah saran. Saran dimaksudkan untuk memperbaiki kesalahan-kesalahan yang

terjadi dan menyempurnakan tulisan serta sebagai pertimbangan dalam

mengembangkan sistem ini lebih lanjut.

Page 24: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

19

DAFTAR PUSTAKA

Alexeev, A. (2016). Nginx. Dipetik Februari 1, 2016, dari Back to The Architecture

of Open Source Applications: http://www.aosabook.org/en/nginx.html

Cheng, C. (2013). Learn Gevent Socket.io. Dipetik Januari 2016, 2016, dari

Readthedocs.org: http://learn-gevent-socketio.readthedocs.org/en/latest

/socketio.html

Kulshrestha, A. (2013). An Empirical Study of HTML5 Websockets and their Cross

Browser Behaviour for Mixed Content and Untrusted Certificates.

International Journal of Computer Applications.

Kurniawan, Y. (2013). Analisis Kinerja Algoritma Load Balancer dan Implementasi

pada Layanan Web. Malang: Universitas Brawijaya.

LVS. (2016). What is virtual server? Dipetik Januari 28, 2016, dari Linux Virtual

Server Official Website: http://www.linuxvirtualserver.org/whatis.html

Nginx. (2016). Load Balancing with Nginx. Dipetik Januari 28, 2016, dari Nginx

Official Website: http://nginx.org/en/docs/http/load_balancing.html

Prakash, Biju, & Sowmya, K. M. (2015). Performance Analysis of Process Driven and

Event Driven Web Servers. Surathkal: Dept. of Information Technology

NITK.

Qveflander, N. (2010). Pushing real time data using HTML5 Web Sockets. Umea:

Umea University.

Skvorc, D., Horvat, M., & Srbljic, S. (2014). Performance Evaluation of Websocket

Protocol for Implementation of Full-Duplex Web Streams. Zagreb:

University of Zagreb/School of Electrical Engineering and Computing.

Wikipedia. (2016). Socket.io Wikipedia. Dipetik Januari 28, 2016, dari Wikipedia:

https://en.wikipedia.org/wiki/Socket.IO

Xu, Y., & Xie, X. (2009). Research and Design on LVS Cluster System. Guiyang:

School of Computer Science and Technology Guizhou University.

Yuan, W., Sun, H., Wang, X., & Liu, X. (2013). Towards Efficient Deployment of

Cloud Applications. Beijing: School of Computer Science and Engineering.

Zhang, L., & Shen, X. (2013). Research and Development of Real-time Monitoring

System Based on WebSocket Technology. Shenyang: International

Conference on Mechatronic Sciences, Electric Engineering and Computer

(MEC).

Page 25: Proposal Skripsi Analisa Kinerja Layer 4 dan Layer 7 Load balancer pada Protokol Websocket

20

Zhang, W. (1999). Linux Virtual Server for Scalable Network Services. Changsha:

National Laboratory for Parallel & Distributed Processing.

Zubayr. (2016). Setting up NGINX for HTTP load balancing. Dipetik Januari 28,

2016, dari zubayr.github.io: https://zubayr.github.io/pdf/2015-01-03-

nginx-setup.pdf