Abstrak
Session, merupakan cara yang digunakan untuk menyimpan informasi pada komputer server untuk
digunakan pada beberapa halaman termasuk halaman itu sendiri. Dalam penggunaan klaster web server
mampu menghasilkan kinerja yang lebih baik daripada menggunakan server tunggal yang menghandle
sebuah website. Namun terdapat masalah yang timbul di dalam pengembangan antara klaster web server
terhadap penggunaan session itu sendiri. Pada klaster web server yang diwakilkan oleh satu node server
akan berjalan secara independen, jika session awal yang dibentuk dalam aplikasi web tersebut hanya
didalam satu node server saja maka node server lainnya tidak bisa mendapatkan akses session yang
sama. Solusi yang bisa digunakan ialah menyimpan data session tersebut kedalam sebuah database
berupa MySQL serta akses data session dapat dibagikan ke web server lainnya. Terungkap permasalahan
lagi bagaimana satu klaster web server dapat berkomunikasi terhadap database dalam menyimpan dan
meminta data session. Dengan permasalahan tersebut, penelitian ini mengembangkan metode Shared
Session yang akan diterapkan melalui PHP. Untuk membuktikan metode tersebut dapat menjalankan
sistem sesuai fungsinya dilakukan dua buah pengujian yaitu pengujian login serta logout dan pengujian
black box. Pada pengujian login dan logout yang direncanakan mampu menyelesaikan fungsi utamanya
dalam menyimpan dan membagikan data session walaupun terdapat kondisi satu server web yang
nonaktif. Pada pengujian black box didapatkan hasil response time di masing-masing skenario, pada
skenario pertama dari 100 request session menghasilkan response time sebesar 18,7 second sampai
dengan 26,2 second, pada skenario kedua dari 200 request session menghasilkan response time sebesar
1 minute sampai dengan 1,38 minute, pada skenario ketiga dari 300 request session menghasilkan
response time sebesar 10,07 second sampai dengan 15,25 second.
Kata kunci: session, shared session, PHP, MySQL, response time.
Abstract
Session is a method that used to store information on a computer server that can be used on several
pages including the page itself. In using a web server cluster, it can produce a better performance than
using a single server that handles a website. But there are some problems that arise in the development
between the web server cluster against the use of the session itself. In a web server cluster is a
represented by a single node will run independently, if the initial session formed in the web application
only have one node server, then the other server nodes can’t get the same session access. The solution
that can be used is to save the data session into database with mySQL, and the access of data session
can be shared to another web servers. Another problem was revealed is how one web server cluster can
communicate with the database in storing dan requesting data sessions. With these problems, this study
developed the Shared Session method that will be applied through PHP. To prove that the method can
run the system according to function, two tests are applied, login and logout testing and black box
testing. In testing the login and logout that is designed can be fulfilled in storing and sharing data
sessions even though there is a condition of one disabled web server. In the black box testing the
response time results obtained in each scenario, in the first scenario of 100 session requests produces
a response time of 18.7 second to 26.2 second, in the second scenario of 200 session requests produces
a response time of 1 minutes up to 1.38 minutes, in the third scenario of 300 session requests to produce
a response time of 10.07 seconds to 15.25 seconds.
Keywords session, shared session, PHP, MySQL, response time.
Metode shared session beserta server database Pada penelitian oleh (Rosalia, Munadi, &
ini dapat mencegah jika salah satu node server Mayasari, 2016). Maya Rosalia menawarkan
yang diarahkan oleh load balancing ini mati atau penelitian mengenai implementasi clustering
tidak aktif kemudian dapat di handle oleh node untuk virtual web server dan high availability
server yang ada ataupun masih aktif, karena server menggunakan metode load balancing dan
session data masih disimpan dalam database. failover untuk meningkatkan kehandalan dan
Sehingga pada tugas akhir ini penulis ketersediaan layanan. Dalam implementasinya,
menawarkan penilitian tentang load balancer akan dikonfigurasi menggunakan
“IMPLEMENTASI SHARED SESSION Haproxy dan Nginx sebagai media load
DALAM KLASTER SERVER WEB balancing untuk layanan HTTP. Kemudian akan
MENGGUNAKAN PHP DAN MYSQL”. dibandingkan performansi dua software load
balancing dan failover dengan parameter yang
2. PENELITIAN TERKAIT akan diuji meliputi throughput, request per-
Penelitian yang dilakukan oleh detik, request loss, cpu utilization dan downtime.
(Ansharullah, 2016). Ansharullah menawarkan Penelitian ini di latar belakangi karena semakin
penelitian mengenai pengembangan dalam banyak yang mengakses melalui suatu situs web
bidang jaringan komputer telah dilakukan oleh membuat beban kerja yang lebih pada suatu
SMK Negeri 2 Kudus. Akan tetapi masih banyak penyedia layanan yang disebut web server dan
mengalami masalah salah satunya adalah beban menjadi kurang optimal. Suatu single server
server. Terlebih lagi di SMK Negeri 2 Kudus bisa mengalami kegagalan yang disebabkan oleh
memiliki kurang lebih 800 orang pengguna. meningkatnya jumlah request yang mencapai
Penelitian implementasikan sistem Load ribuan bahkan jutaan pada waktu yang
Balancing dengan tujuan untuk mengatasi bersamaan atau disebut dengan overload. Hal ini
beban server tersebut yang tidak sesuai dengan akan merugikan pihak yang mempercayakan
kapasitasnya dan untuk mengoptimalkan beban situsnya pada suatu web server, karena situs
server sebelum dan sesudah penerapan sistem tersebut tidak dapat diakses untuk waktu
Load Balancing algoritma Round Robin pada tertentu.
server di SMK Negeri 2 Kudus. Dengan metode
yang digunakan adalah metode Komparatif yaitu Penelitian oleh (Dwi Prastyo, 2017). Dwi
penelitian yang bertujuan membandingkan dan Prastyo menawarkan penelitian mengenai
menganalisa dua gejala atau lebih, implementasi dua backend server dengan
membandingkan algoritma Least connection menggunakan teknik load balancing, failover,
sebagai algoritma sebelumnya dengan algoritma serta shared session. Penelitian ini di latar
Round Robin. Pengujian Load Balancing dengan belakangi berdasarkan oleh ujian yang
dengan kedua algoritma menggunakan software merupakan kegiatan yang pasti dilakukan oleh
yang bernama Httperf. Httperf menampilkan setiap pelajar dan pengajar. Ujian yang sering
nilai sesuai parameter. dilakukan biasanya bersifat tertulis atau manual,
sangat jarang sekali dilakukannya ujian bersifat
Penelitian yang dilakukan oleh (Yoga online atau otomatis. Tetapi ujian online untuk
Hartomo, 2015). Yoga Hartomo menawarkan saat ini mulai digunakan tetapi masih
penelitian mengenai penggabungan beberapa menggunakan single server.Ujian menggunakan
server (cluster) dengan teknik Load Balancer, sistem single server masih banyak terdapat
bisa digunakan untuk mengatasi permasalahan kekurangan, antara lain response time lama,
tersebut karena teknik ini bekerja dengan server banyak menampung beban, tidak ada
membagi beban yang diterima oleh server dan server backup jika sewaktu-waktu server down.
ketika salah server mengalami kegagalan, maka Dengan adanya load balancing, trafik dapat
anggota cluster yang aktif akan melayani berjalan optimal, memaksimalkan throughput,
permintaan dari client. Penelitian ini bertujuan memperkecil response time dan menghindari
untuk membuat web server dengan teknik Load overload pada salah satu jalur koneksi. Dengan
Balancer pada mesin virtual. Aplikasi yang diterapkannya failover, ketika salah satu server
digunakan dalam penelitian ini adalah VMware, down atau mati maka server yang lain akan
Ubuntu Server 14.10, Pound, HAProxy dan menggantikannya di saat proses failover terjadi
Webserver Stress Tool 8. fungsi shared session pun berjalan agar saat
perpindahan server tidak perlu login ulang
kembali.
4. Kemudian session baru tersebut akan walaupun mengakses session dari server
ditandai untuk disimpan di database web yang berbeda dalam satu klaster.
MySQL dalam bentuk data string pada tabel
“ci_sessions”. Lalu dalam bentuk 4. IMPLEMENTASI SISTEM
permintaan akan dikirim ke database
Dari arsitektur sistem yang telah dirancang
bahwa session saat itu telah login dan sudah
kemudian diimplementasikan melalui sebuah
tersimpan pada database.
aplikasi website yang digunakan sebagai
5. Mengembalikan data yang sebelumnya perantara tampilan sistem dari share session.
telah di request yakni session, berupa Berikut ini adalah beberapa fungsional dari
response data untuk user bahwa session aplikasi website yang telah diimplementasikan.
yang dibentuk sudah disimpan. 1. Aplikasi website dapat menjalankan
6. Saat setelah session dapat tersimpan di fungsi login.
database dalam beberapa waktu tertentu Pada gambar ini menjelaskan fungsi login
ada kondisi shared session ini akan aktif, dari website, di mana sebelumnya sudah
terbangun sebuah cookies saat mengakses
yakni jika salah satu web server meminta
website pada browser dan menjadi cikal
akses session yang sama, misalnya
diasumsikan salah satu server web mati dari bakal session terbentuk sekaligus yang akan
keempat server web. Akhirnya server web disimpan pada database. Dengan asumsi
bahwa user tersebut telah mendaftarkan
yang aktif tersebut memerlukan data
identitas dirinya sebagai akun terdaftar ke
session yang sudah tersimpan untuk
dibagikan ke web server lainnya yang aktif. dalam sistem dan sudah disimpan di dalam
Dengan diatasi oleh server web yang aktif, datanya database. Tampilan halaman pada
gambar 4.1.
dengan cara server web tersebut memeriksa
Tabel 4.1 Source code proses login pada
data user dan menyesuaikan dengan session aplikasi website
ID yang aktif pada database. Secara function aksi_login(){
otomatis kemudian user tidak perlu $username = $this->input-
melakukan autenfitikasi login yang sama >post('username');
meskipun user tersebut menjalankan proses $password = $this->input-
>post('password');
login pada web server yang mati atau $where = array(
mengalami kegagalan menyediakan 'username' => $username,
service. 'password' => md5($password));
$cek=$this->usermodel
7. Setelah selesai mengambil data user dan >cek_login("users",$where)-
mencocokan session ID yang sama >num_rows();
kemudian sistem secara otomatis $datauser=$this->usermodel-
>cek_login("users",$where)-
memproses untuk melakukan login >result();
otomatis agar data user bisa diakses pada
web server aktif yang lainnya. Maka user 2. Aplikasi website menjalankan fungsi
dapat melajutkan aktifitas pada halaman membuat data session.
website tersebut tanpa terhambat kendala Pada fungsional ini aplikasi dapat
login kembali. menjalankan fungsi membuat session baru
8. Web server yang aktif tersebut, yang berdasarkan cookie yang telah di request
ditampilkan melalui aplikasi website oleh browser sebelumnya. Kemudian dari
mengirimkan respon ke user melalui session yang terbentuk akan disimpan pada
perantara load balancing bahwa session database server. Dan jika data masukan
saat itu telah aktif dan berhasil di akses. username dan password dari user salah akan
menampilkan pesan peringatan. Berikut ini
9. Login berhasil secara otomatis dilakukan adalah source code yang diimplementasikan
sistem dimana merupakan tanda proses pada tabel 4.2.
terakhir bahwa seluruh session dapat Tabel 4.2 Source code menjalankan fungsi
dibagikan ke seluruh web server yang membuat session
membutuhkan akses session tersebut. if($cek > 0){
$data_session = array(
10. Menampilkan halaman timeline bahwa user 'nama' => $username,
dapat masuk kedalam aplikasi website 'status' => "login",
'datauser'=>$datauser, $this->session->sess_destroy();
); redirect(base_url("pages"))
$this->session- ;
>set_userdata($data_session); }}
redirect(base_url("pages/timeline
"));
Tampilan website melalui aplikasi browser
}else{ yang menampilkan sistem share session dapat
echo "Username dan password salah
!"; menjalankan fungsinya di mana dari session
} awal dibentuk lalu data tersebut disimpan di
} dalam database tetap dapat dibagikan ke web
server yang lainnya meskipun ada keadaan
3. Aplikasi website memeriksa sekaligus tertentu yang misalnya terdapat web server yang
membagikan data session yang tersimpan membentuk session awal tersebut terjadi
pada database. masalah layanan server down. Tampilan
Pada fungsional ini aplikasi website halaman website dilihat pada gambar 4.1
menjalankan perintah di mana user yang
sudah melakukan login berhasil, maka data
session yang tersimpan dalam database.
Kemudian session dapat diakses oleh server
web lainnya yang membutuhkan akses
session di waktu yang sama. Yang mana
server web tersebut bukan server web
pertama yang membuat akses session
sebelumnya. Berikut ini adalah source code
yang diimplementasikan pada tabel 4.3.
Tabel 4.3 Source code aplikasi website
memeriksa sekaligus membagikan data
session
public function login(){
Gambar 4.1 Tampilan Halaman website
if($this->session-
>userdata("status")=="login"){ Lalu tampilan database MySQL yang
$where = array(
menyimpan seluruh data session. Tampilan
'username'=>$this->session- aplikasi databse MySQL dapat dilihat pada
>userdata("nama") gambar 4.2.
);
$datauser=$this->usermodel-
>cek_login("users",$where)-
>row();
$data['user']=$datauser;
if($datauser){
$dat['nama'] = $datauser-
>username;
$dat['iduser'] = $datauser->id;
Hasil dari pengujian black box disini untuk 75450 Server web
Ke-2 2 800
mengetahui skalabilitas dari aplikasi website milisecond 2 dan 3 mati
berdasarkan skenario yang telah dirancang 800
72500 Server web
Ke-3 2 milisecond 3 dan 4 mati
sedemikian rupa melalui aplikasi uji pada
klaster server web. Dari 3 skenario di atas 82930 Server web
Ke-4 2 800
pada setiap skenario melakukan 4 kali percobaan milisecond 4 dan 1 mati
yang mana 1 kali hasil percobaan
merepresentasikan kemampuan setiap server 3. Hasil skenario ke-3
web. Berikut ini hasil dari pengujian black box Berdasarkan hasil skenario yang telah
dengan parameter response time dari masing- dijalankan dengan waktu tempuh dari
masing server web: empat kali percobaan dari masing-masing
1. Hasil skenario ke-1 server web mendapatkan waktu rata-rata
Berdasarkan hasil skenario yang telah selama 03 menit 50 detik dalam
dijalankan dengan waktu tempuh dari menyelesaikan setiap percobaan didapatkan
empat kali percobaan dari masing-masing hasil pengujian yang bisa dilihat pada tabel
server web mendapatkan waktu rata-rata 5.4.
selama 01 menit 20 detik dalam Tabel 5.4 Tabel rata-rata response time dari
menyelesaikan setiap percobaan didapatkan skenario ke-1
hasil pengujian yang bisa dilihat pada tabel
Perco Server Req Rata-rata Status
5.2.
baan web uest respons server web
Tabel 5.2 Tabel rata-rata response time dari yang time (ms)
skenario ke-1 aktif
Perco Server Req Rata-rata Status 120 13770 Server web
baan web uest respons server web Ke-1 1 0 milisecond 1,2,3 mati
yang time (ms)
aktif 120 12670 Server web
Ke-2 1
0 milisecond 2,3,4 mati
24501 Server web
Ke-1 3 400 120 10070 Server web
milisecond 1 mati
Ke-3 1 0 milisecond 3,4,1 mati
26200 Server web
Ke-2 3 400 120 15250 Server web
milisecond 2 mati
Ke-4 1 0 milisecond 4,1,2 mati
18789 Server web
Ke-3 3 400 milisecond 3 mati
23839 Server web
Ke-4 3 400 milisecond 4 mati 6. PENUTUP
Bedasarkan implementasi sistem dan
2. Hasil skenario ke-2 analisis hasil pengujian dari kinerja sistem
Berdasarkan hasil skenario yang telah shared session yang berperan sebagai sistem
dijalankan dengan waktu tempuh dari perantara database dengan seluruh server web
empat kali percobaan dari masing-masing aktif pada satu klaster server web, didapatkan
server web mendapatkan waktu rata-rata beberapa kesimpulan yang diantaranya sebagai
selama 01 menit 57 detik dalam berikut:
menyelesaikan setiap percobaan didapatkan Mekanisme shared session yang sudah
hasil pengujian yang bisa dilihat pada tabel diimplementasikan dalam penelitian ini dapat
5.3. memastikan efisiensi dari penggunaan sebuah
Tabel 5.3 Tabel rata-rata response time dari website bagi user yang telah melakukan login ke
skenario ke-2
dalam aplikasi website melalui satu server web
dengan tidak perlu melakukan login kembali
meskipun mengakses halaman website dan