Modifikasi Distributed File Server pada GlusterFS Menggunakan Indikator Beban
1)
Stefan Julianto, 2)Wiwin Sulistyo, ST., M.Kom.,
3)
Dr. Sri Yulianto, J.P., S.Si., M.Kom.
Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga, Jawa Tengah 50711 Phone (0298) 321212 Email : 1)
[email protected], 2)
[email protected] 3)
[email protected]
ABSTRACT File that is popular and downloaded more than other files is a common thing that happens in file server. High traffic is determined from total users that access the file from the servers. There are some files that downloaded more than other files on the servers. This thing could make bottleneck occur in ones of the servers that served the files. Method that being used is NDLC (Network Development Life Cycle). NDLC method has purpose to plan an architecture of file servers from the decision of the topology that being used and the plan to choose the application and optimalization of the file servers. The purpose of this research is to use GlusterFS as the filesystem to address the issues. The type of filesystem that going to be used is distributed and striped type. The two type of the filesystems will being used to solve the problem of bottleneck in some of servers that have overload traffic into another server with low traffic.
ABSTRAK File yang populer dan diunduh lebih sering dibandingkan files lainnya merupakan hal yang sering terjadi pada file server. Padatnya traffic jaringan ditentukan oleh jumlah user yang mengunduh file pada server. Dari sejumlah file yang terdapat pada server, terdapat beberapa file yang diunduh lebih banyak dari file lainnya. Hal ini mengakibatkan bottleneck pada salah satu server yang menyimpan file tersebut, sedangkan server lainnya dalam keadaan tidak padat. Metode yang digunakan adalah metode NDLC (Network Development Life Cycle). Digunakannya metode ini bertujuan untuk merancang sebuah arsitektur file server dari awal penentuan topology hardware sampai pada perancangan aplikasi dan optimalisasi file server. Tujuan dari penelitian ini adalah merancang file server menggunakan filesystem GlusterFS. Tipe Filesystem yang dipakai menggunakan tipe distributed dan stripe. Kedua tipe tersebut digunakan untuk mengatasi bottleneck pada salah satu server yang mengalami kepadatan jaringan untuk dibagi bebannya ke server lainnya.
1.
Pendahuluan
Banyaknya user yang mengunduh file pada fileserver dapat mengakibatkan padatnya salah satu server pada cluster file server. Padatnya salah satu server tersebut mengakibatkan menurunnya transfer rate dari server ke user. Semakin menurunnya transfer rate maka semakin lama pula waktu yang dibutuhkan user untuk selesai mengunduh file. Ukuran file turut menentukan lama sebuah file untuk selesai diunduh, semakin besar ukuran file, semakin lama user selesai untuk mengunduhnya. Kinerja suatu cluster server dapat terganggu dikarenakan server dalam cluster yang berfungsi sebagai storage mengalami gangguan. Terdapat kemungkinan 50% 1
2
bahwa di dalam suatu cluster server, storage server yang kemungkinan besar mengalami gangguan atau kerusakan[4]. Untuk mencegah storage server pada cluster tidak mengalami penurunan kinerja, dibutuhkan suatu perancangan fileserver yang saling bekerja sama untuk membagi beban jaringan. Pada penelitian ini akan menggunakan GlusterFS untuk mengatur pembagian file pada cluster fileserver. Dengan pembagian tipe volume distributed dan stripe, diharapkan akan dapat mendistribusi beban jaringan. Dengan didistribusikannya file sesuai tingkat popularitasnya, maka diharapkan tidak terjadi bottleneck pada salah satu server dari kumpulan cluster fileserver yang ada.
2.
Kajian Pustaka
Penelitian dengan judul Analysis of Six Distributed File System[2], melakukan perbandingan dari enam jenis aplikasi distributed file systems. Diantaranya terdapat GlusterFS DFS. GlusterFS memiliki kelebihan dalam kecepatan input/output yang lebih baik dibanding DFS jenis lainnya. Selain itu GlusterFS juga tidak memisahkan antara server metadata dengan server penyimpanan data, sehingga GlusterFS dapat dikembangkan hingga beberapa server dalam jumlah yang sangat banyak. Kelebihan GlusterFS inilah yang dianggap sangat cocok dengan kebutuhan web file server yang merupakan tipe cluster server yang membutuhkan transfer rate tinggi dan dapat diperluas dengan mudah dan berskala besar. Tabel 1 Perbandingan Fitur DFS [2]
Architecture Naming Api
Fault detection
HDFS Centralized Index CLI, FUSE REST, API
iRODS Centrlized Database CLI, FUSE REST, API
Fully connect No failover
P2P
System availability Data Replication availability Placement Auto strategy Replication Async Cache WORM, consistency lease Load balancing Auto
GlusterFS Decentralized EHA FUSE, mount
Lustre Centralized Index FUSE
Detected
Manually
No failover
Ceph Distributed CRUSH FUSE, mount REST Fully connect High
High
Failover
Replication
Replication
RAID-like
No
Manual
Auto
Manual
No
Sync Lock
Sync Lock
Sync No
RAID-like Lock
Manual
Manual
No
Pada tabel 1 merupakan perbandingan dari enam DFS yang sering digunakan. GlusterFS merupakan salah satu DFS yang memiliki placement strategy manual. Sehingga untuk menjadikan GlusterFS DFS menjadi filesystem yang dapat melakukan placement strategy dinamis, perlu ditambahkan sebuah script tambahan untuk manajemen file pada file server cluster. Sebuah sistem cluster file server memiliki beberapa server komputer yang saling berbagi akses di dalam sebuah filesystem di dalam shared storage[1]. Untuk menghindari terjadinya server overload pada salah satu server di dalam cluster file server, perlu dilakukan
3
management cluster. Ketika terjadi server overload, maka management cluster harus mampu memindahkan atau membagi beban server ke server lainnya di dalam cluster file server. GlusterFS memiliki desain client server dimana tidak terdapat server metadata. GlusterFS menyimpan data dan metadata ke beberapa devices yang terletak di beberapa server yang saling terhubung. Kumpulan devices itu disebut volume , yang dapat dikonfigurasi untuk menyimpan data secara stripe ke dalam bentuk blocks dan mereplikasinya. Blocks kemudian didistribusikan ke dalam beberapa device di dalam volume[5]. GlusterFS menggunakan algoritma Elastic Hasing Algorithm. Algoritma ini tidak memisahkan antara data dengan metadatanya. Lokasi data diketahui dengan hanya membutuhkan informasi berupa path name dan file name. Tidak dipisahkannya data dan metadatanya dikarenakan lokasi file dapat ditentukan secara independen.
Gambar 1 Cara Kerja Gluster Filesystem Distributed[7]
Pada gambar 2 merupakan penjelasan cara kerja umum GlusterFS. Brick adalah storage filesystem yang ditempatkan ke dalam volume. Brick kemudian menjadi kesatuan di dalam perangkat (server) yang memuat volume. Volume adalah perangkat yang merupakan tempat menampung data sebenarnya. Setelah brick dikelompokkan ke dalam volume dengan tipe tertentu misalnya tipe striped, maka stripping data akan terjadi ke dalam beberapa bricks di dalam satu volume. 3.
Metode Perancangan Sistem
Perancangan File Server menggunakan pendekatan metode NDLC ( Network Development Life Cycle ). Tahapan yang terdapat di dalamnya yaitu, analysis, design, simulation prototyping, implementation, monitoring, management.
Gambar 2 Network Development Life Cycle[6]
4
Gambar 2 menunjukkan diagram NDLC yang akan digunakan pada file server. Tahap pertama yaitu tahap analysis merupakan tahapan untuk menentukan dan menganalisa kebutuhan system File Server dengan GlusterFS. GlusterFS membutuhkan minimal dua server yang berfungsi sebagai Gluster server dan minimal 1 server sebagai GlusterFS client. Gluster server merupakan server yang menampung data berupa file yang disimpan sehingga Gluster server inilah yang merupakan pusat file server pada arsitektur file server menggunakan GlusterFS ini. Analisis lainnya yang dianalisa adalah seberapa besar maximum file size yang diperbolehkan diunggah ke file server. Besaran file maximum yang disimpan pada server inilah yang menjadi patokan untuk menentukan apakah suatu file akan disimpan pada filesystem distributed atau filesystem striped. Analisis yang terakhir adalah analisis untuk menentukan jumlah total download per jam untuk masing-masing file untuk dikatergorikan sebagai file yang memiliki tingkat jumlah unduh tinggi. Jumlah total download per jam akan di reset tiap satu jam dengan pertimbangan kemampuan maksimum transfer rate ethernet cable, sehingga file yang melebihi batas 100 total download per jam akan dipindahkan antar kedua filesystem distributed dan striped. Ukuran file yang dijadikan batas adalah minimal 100 mb dengan mengacu pada transfer rate ethernet, yaitu 100 mb/s. Tahap Design yang akan digunakan merupakan topologi antara file server-server yang menyimpan file dengan web server/GlusterFS client. Pada tahapan ini, design yang digunakan menyesuaikan dengan prototype local network. Local network ini hanya mencakup jaringan LAN. Ketiga server hostname dalam cluster GlusterFS harus saling terdaftar di dalam hosts di masing-masing server. Protocol yang digunakan adalah tcp, dan port yang digunakan adalah port 24007 untuk Gluster daemon, 24008 untuk infiniband management, port 34865 – 34867 untuk inline GlusterNFS server dan port 111 untuk portmapper.
Gambar 3 Topology Jaringan Web File Server dengan GlusterFS
5
Gambar 3 menjelaskan topology jaringan yang akan dipakai oleh cluster glusterfs. Topology yang digunakan merupakan topology dasar dari glusterfs. Kedua gluster server adalah server 1 dan server 2. Web server adalah server yang juga berfungsi sebagai server gluster client. Shell script yang akan dibuat terdapat pada web server untuk mengatur distribusi file pada file server. Tahap simulasi akan dijalankan pada virtual server menggunakan aplikasi VirtualBox. File Server dan web server akan diinstall pada Ubuntu Server 12.04. Server yang akan disimulasikan adalah dua file server Gluster dan satu server GlusterFS client. Web server akan diinstall pada server GlusterFS client menggunakan apache2. Database mysql akan dibuat pada server GlusterFS client untuk menyimpan data file berupa nama file, ukuran file, dan path file. Pada tahap implementation akan diimplementasikan semua tahapan dari tahapan design sampai ke tahapan simulation prototyping. Dimulai dengan instalasi Gluster server pada kedua file server dan instalasi GlusterFS client pada head server. Selain instalasi utama berupa cluster GlusterFS, diperlukan juga instalasi mysql, apache web server, web browser (firefox), wonderhaper, dan tcptrack sebagai aplikasi pelengkap web file server menggunakan GlusterFS.
Start
Shell Script
Database File
tidak
ya total unduh lebih dari 100
tidak
ukuran file >100mb
ya copy file from distribute to stripe
Finish
Gambar 4 Flowchart Implementasi Shell Script pada File Server
6
Gambar 4 menjelaskan flowchart implementasi shell script pada file server. total unduh adalah total unduh file pada file server. Ukuran file adalah ukuran file yang disimpan pada file server. Alasan ukuran file ditentukan 100 mb sebagai acuan adalah dikarenakan striping data lebih efektif pada file berukuran besar, yang pada penelitian ini dipakai 100 mb sebagai batas minimal suatu file untuk dapat didistribusikan ke dalam filesystem tipe striped[7]. Tahap monitoring diperlukan untuk memonitor file server apakah telah berjalan sesuai dengan konfigurasi yang ditentukan. Monitoring menggunakan tcptrack dari sisi head server untuk memonitor kondisi Gluster server. Tcptrack memonitor alamat IP Gluster server yang terhubung dengan head server berupa transfer rate dan status jaringan. Dari sisi client, monitoring dilakukan dengan mengamati transfer rate pada download manager browser (firefox). Data yang didapat dari hasil monitoring akan dicatat dan dianalisa apakah sesuai hasil yang diingankan atau tidak dan apa yang menyebabkan hasil yang didapat tersebut. Tahapan management adalah tahapan terakhir yang merupakan tahapan penting yang digunakan sebagai kebijakan utama untuk mendistribusikan file ke dalam filesystem distributed atau striped. Management dilakukan secara otomatis dengan menggunakan shell script. Shell script akan mengatur dan mengecek kondisi file menggunakan data dari database mysql dan melakukan tindakan sesuai dengan kondisi yang telah ditentukan pada tahap analysis.
4.
Hasil dan Pembahasan
Persiapan pertama yang dilakukan adalah dengan melakukan konfigurasi di ketiga server yang merupakan bagian dari cluster GlusterFS. Pembagian konfigurasi server dibagi ke dalam dua tahap. Tahap pertama adalah melakukan konfigurasi gluster server di kedua server yang nantinya berfungsi sebagai tempat penyimpanan data. Konfigurasi gluster server dapat dilihat pada gambar 5.
Gambar 5 Konfigurasi Gluster Server
7
Pada gambar 5, gluster server memiliki dua directory yang diperuntukkan untuk menyimpan file. Directory /datadis adalah directory utama untuk menyimpan file. Directory /data adalah directory untuk menyimpan file sementara. Semua file yang diupload ke file server akan otomatis disimpan ke dalam directory /datadis. Sedangkan file yang akan disimpan pada directory /data, adalah file yang telah diunduh sebanyak lebih dari seratus kali. Shell script inilah yang akan memindahkan file yang terdapat pada directory /datadis ke dalam directory /data. Tipe distributed adalah tipe filesystem di mana file yang didistribusikan ke dalam file server dibagi secara merata ke semua bricks yang ada. Tipe striped merupakan tipe filesystem dimana file yang ada dipecah ke dalam ukuran block kecil sesuai ukuran block size standar glusterfs yaitu 128 kb yang kemudian pada konfigurasi yang dipakai diubah menjadi 100 mb per block data. Tahap kedua adalah konfigurasi head server atau gluster client. Gluster client merupakan jembatan yang menghubungkan semua gluster server yang ada. Pada server gluster client inilah sebuah virtual directory akan digunakan oleh aplikasi php sebagai tempat penyimpanan file. Gambar 6 menunjukkan lokasi storage yang digunakan oleh gluster server.
Gambar 6 Filesystem Distributed dan Striped pada Gluster Client
Gambar 6 menunjukkan web server yang akan ditempatkan pada head server GlusterFS dengan tujuan agar web server dapat langsung menggunakan directory volume gluster server. Pada server ini juga terdapat aplikasi php yang digunakan untuk membuat website dengan fungsi upload dan download. Besaran maksimum file yang diatur oleh konfigurasi file pada file php.ini. Konfigurasi php.ini bertujuan untuk menyesuaikan dengan syarat yang dibuat pada shell script untuk mengatur besaran file minimum untuk didistribusikan ke filesystem striped, sehingga tidak terjadi kesalahan pada proses management file. Database yang digunakan adalah database mysql. Database menyimpan data yang berisi tentang informasi file tersimpan pada file server. Field utama yang terdapat pada database file adalah namafile, ukuran, path, totalhr. Struktur database dapat dilihat pada gambar 7.
Gambar 7 Struktur Utama Database File
8
Gambar 7 menjelaskan rancangan database yang akan digunakan oleh shell script untuk management file. Field namafile adalah data berupa nama file, ukuran adalah data berupa ukuran file dalam satuan kb (kilobytes), path adalah data berupa directory dimana file disimpan pada gluster client secara virtual, totalhr adalah data berupa total download dalam durasi kurun waktu satu jam. Management file secara dinamik diatur secara otomatis oleh shell script. Shell script berfungsi untuk melakukan kontrol secara berkala kepada database file. Setiap jam shell script akan mencari sebuah file yang memiliki total download melebihi batas minimum yang telah ditetapkan yaitu 100 download per jam. File yang telah memiliki total download lebih dari 100 dan juga memiliki ukuran lebih dari 200 Mb, akan dicopy ke dalam filesystem striped yang terdapat pada directory /data. Shell script akan terus melakukan pengecekan secara berkala sampai tidak ada lagi file yang memenuhi kriteria di atas, dan kemudian shell script akan berada dalam kondisi idle. Selain melakukan fungsi memindahkan file ke dalam filesystem striped, shell script juga bertanggung jawab untuk mengontrol total size dari seluruh file yang terdapat pada filesystem striped. Dikarenakan filesystem distributed merupakan filesystem utama tempat penyimpanan file, maka total size dari filesystem striped tidak dapat melebihi total size filesystem distributed. Oleh karena itu shell script juga bertugas untuk menghapus file dari filesystem striped untuk memberikan ruang kosong.
#!/bin/bash maxtotal=$(mysql –D coba1 –u root –pcluster –e “select max(totalhr) as max from infofile where ukuran>300000 and path=’/var/www/serverdis’ and totalhr >100”) max=${maxtotal:4} if[“$max” == “NULL”] then echo”no file” else namafile=$(mysql –D coba1 –u root –pcluster –e “select namafile from infofile where ukuran>300000” nama=${namafile:9} fi
Kode Program 1 cp /var/www/serverdis/$nama /var/www/serverstrip
Shell Sript Management File
Kode Program 1 Shell Script untuk Distribusi File
Kode program 1 adalah script yang digunakan oleh shell script untuk management file yang berguna untuk mendisribusikan file pada file server. Pada kode program ini juga dijalankan perintah untuk mengecek data file pada database sebagai factor untuk melakukan sebuah tindakan pendisribusian file. File yang telah diseleksi dan memiliki tingkat request lebih dari 100 request per detik dan memiliki ukuran file lebih dari 300 megabytes akan didistribusikan ke dalam gluster server bertipe filesystem striped. Pengujian dilakukan dengan membandingkan keadaan dimana Cluster File Server hanya menggunakan satu tipe filesystem dengan cluster file server yang menggunakan gabungan kedua tipe filesystem dengan optimalisasi shell script. Pengujian melihat transfer rate yang dihasilkan jika kedua konfigurasi tersebut mengalami tingkat request yang tinggi yang menimbulkan server overload pada salah satu gluster server.
Tabel 2 Hasil Pengujian Throughput Gluster Server
9
Pengujian ke 1 2 3 4 5 6 7 8 9 10
Server 1 Distributed (Mbps) 5,6 5,6 5,5 5,4 4,9 5,7 5,6 4,9 5,1 5,3
Server 2 Striped (Mbps) 7,1 7,5 8,3 7,2 7,2 7,2 7,5 7,1 8,1 7,7
Pada tabel 2 terlihat jelas bahwa tipe server striped meningkatkan performa throughput server dengan rentang rata-rata 2-3 Mbps. Hasil pengujian pada tabel 2 masih pada tahap awal dimana kedua gluster server dalam keadaan normal dan belum diberi batasan transfer rate. Pengujian selanjutnya adalah pengujian untuk melihat throughput gluster server jika salah satu server mengalamai penurunan throughput. 6000 5000 4000 Distributed
3000
Striped
2000 1000 0 100 requests
>100 requests
Gambar 8 Perbandingan Throughput Server Sebelum dan Sesudah Optimalisasi
Gambar 8 menunjukkan perbedaan signifikan throuhput gluster server.Pada request dengan total 100 request, transfer rate pada kedua jenis filesystem relatif masih tidak terdapat perbedaan signifikan. Pada saat request telah melebih 100 requests untuk file yang sama, maka oleh management script beban menjadi terbagi dua. Pada server 1, dimana file yang diminta berada yang pada saat requests berada pada jumlah maximum, shell script memecah file yang diminta tersebut dan sebagian pecahannya didistribusikan ke server 2.
10 3000 2500 2000 Distributed
1500
Striped & Distributed 1000 500 0 10
20
30
40
50
60
70
80
90
Gambar 9 Perbandingan Throughput antar Gluster Server
Gambar 9 merupakan grafik yang menunjukkan kondisi real time saat terjadi transfer file dari gluster server ke gluster client. Hasil throughput server 1 mencerminkan adanya penurunan throughput secara drastis disaat server 2 terjadi kenaikan througput yang sangat drastis. Hal ini dikarenakan server 1 yang melakukan transfer file dalam keadaan heavy load sesudah shell script memindahkan pecahan dari file yang memiliki requests rate yang tinggi. Titik terjadinya perubahan throughput pada kedua server merupakan titik dimana server 1 telah selesai melakukan transfer file dan kemudian dilanjutkan oleh server 2 yang memiliki throughput yang lebih besar dibandingkan server 1. 2500 2000 1500 Client
1000 500 0 10
20
30
40
50
60
70
80
90
Gambar 10 Hasil Pengamatan Transfer Rate pada Client
Gambar 10 merupakan hasil pengujian dari sisi client yang melakukan download file, terlihat terjadi peningkatan transfer rate yang signifikan setelah rentang waktu 60 detik. Hal ini dikarenakan file server telah merespon dengan melakukan management transfer file dari sisi file server. Sehingga dari grafik 3 ini dapat disimpulkan bahwa optimalisasi dengan management file server GlusterFS berhasil meningkatkan transfer rate pada client yang mengunduh file yang dikategorikan sebagai file populer.
11
5.
Simpulan
Hasil pengujian menunjukkan hasil yang sangat signifikan pada saat terjadi overload pada salah satu file server. File server yang mengalami heavy overload yang diakibatkan request yang melebihi 100 requests per detik mengakibatkan transfer rate berkurang hingga 70% dalam konfigurasi single filesystem glusterfs distributed menjadi bottleneck kepada file server lain yang tidak mengalamai over load. Konfigurasi yang merupakan gabungan filesystem glusterfs distributed dan striped, jika terjadi bottleneck pada salah satu file server maka file yang menyebabkan over load akan dibagi ke file server lain sehingga transfer rate pada client hanya berkurang 10 %. Kekurangan pada konfigurasi ini dalam lingkungan cluster glusterfs adalah tipe filesystem striped secara merata membagi atau memecah file ke semua server yang ada yang terdapat pada seluruh volume tipe striped. Dengan kata lain, jika terdapat server lainnya yang mengalami overload pada saat yang bersamaan, meskipun sudah dioptimalisasikan dengan shell script yang dibuat, transfer rate yang didapat masih jauh dari optimal. Sehingga untuk pengembangan ke depan diharapkan dapat melakukan management yang lebih efisien dalam kondisi file server multi over load.
12
6. [1] [2] [3] [4]
[5]
[6]
[7]
Daftar Pustaka
Sehgal Priya, Vasily Tasarov, Erez Zadok, 2009, Evaluating Performance and Energy in File Systems Server Workloads, Stony Brook University, New York. Depardon Benjamin, 2013, Analysis of Six Distributed File Systems, Laboraioire MIS, Universite de Picardie Jules Verne, Amiens. Baskoro Pranata 2013 Rancang Bangun Server Learning Management System (LMS) Berbasis Metode Load Balancing, Jurusan Teknik Elektro, ITS, Solo. Kasick Michael, 2010, Black Box Problem Diagnosis in Parallel Filesystems, Electrical & Computer Engineering Department, Carnegie Mellon University, Pittsburg. Wang Yuan, 2011, Performance Evaluation of A Infiniband-based Lustre Parallel File System, Information Engineering School, Communication Engineering of China, Beijing. Etkin, Joshua dan John A. Zinky, 1989, Development Life Cycle of Computer Networks: The Executable Model Approach, IEEE Transaction on Software Engineering 15: 1078. Gluster, Inc, 2011, An Introduction to Gluster Architecture, http://www.gluster.org. Diakses tanggal 20 Mei 2014.