bab iii - rancangan dan implementasi
DESCRIPTION
rancangan implementasiTRANSCRIPT
-
BAB III
PERANCANGAN DAN IMPLEMENTASI
3.1. Alur Pengerjaan Tugas Akhir
Untuk menganalisis linux virtual server (LVS) dan My SQL Cluster dengan
tingkat ketersediaan tinggi pada tugas akhir ini dilakukan perancangan, implementasi
dan pengukuran beberapa parameter meliputi throughput, request loss, waktu respon,
dan cpu utilization. Adapun alur pengerjaan tugas akhir ini ditunjukkan pada Gambar
3.1.
Gambar 3.1 Diagram Alir Konsep Penelitian
-
BAB III PERANCANGAN DAN IMPLEMENTASI
17
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
3.2. Perancangan Load Balancer dan MySQL Cluster
Sistem yang diimplementasikan dalam tugas akhir ini terdiri dari dua
komponen utama, yaitu linux virtual server dan MySQL Cluster. Dimana linux virtual
server akan berfungsi sebagai load balancer dan failure detection sedangkan My SQL
Cluster akan berfungsi menyediakan database yang high availability.
Pada tugas akhir ini terdapat tiga komponen utama yaitu:
a. Client, merupakan komputer yang bertugas untuk membangkitkan permintaan http.
b. Director, sebagai sebuah server yang bertugas untuk meneruskan paket dari client
kepada real server. Client dari jaringan luar akan menganggap director seolah
sebagai server tunggal. Komputer director disini juga berfungsi sebagai
manajemen node. Manajemen node berfungsi untuk mengatur sinkronisasi antara
data node yang ada di dalam My SQL Cluster.
c. Real Server, sebagai server yang melayani permintaan client. Ada dua komponen
yang berjalan di real server yaitu web server dan mysql. Web server berfungsi
sebagai penyedia layanan http dan mysql berfungsi sebagai tempat penyimpanan
data website atau sebagai data node.
Secara lebih jelas digambarkan pada Gambar 3.2.
Gambar 3.2 Rancangan Konfigurasi Sistem
-
BAB III PERANCANGAN DAN IMPLEMENTASI
18
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
Sistem yang dirancang menggunakan empat buah komputer yang membentuk
sebuah cluster, dengan beban pada real server diseimbangkan oleh load
balancer/director menggunakan metode penjadwalan Weighted Least Connection
(WLC). Terdapat dua buah director dengan status active-standby untuk mendukung
sistem dengan tingkat ketersediaan tinggi dan dua buah real server dengan status
keduanya aktif. Selain berfungsi sebagai load balancer, director berfungsi juga
sebagai manajemen node. Director dan real server dihubungkan oleh switch dan
kedua real server menampilkan website yang identik
Kedua real server memerlukan sinkronisasi data agar saat salah satu real
server down bisa langsung digantikan oleh real server yang lain tanpa ada perbedaan
data yang ditampilkan. Oleh sebab itu dibutuhkan suatu metode penyimpanan data
yang dapat mendukung hal tersebut, dalam tugas akhir ini digunakan metode MySQL
Cluster. MySQL Cluster dirancang menggunakan empat computer, dimana dua
komputer sebagai manajemen node menggunakan platform linux gentoo dan dua
komputer sebagai data node menggunakan platform linux ubuntu.
Untuk menguji kehandalan sistem dilakukan simulasi adanya kegagalan pada
salah satu real server, jika salah satu real server gagal atau mati maka real server
lainnya akan melayani semua permintaan yang datang. Kemudian juga menguji sifat
redundancy sistem dengan cara mematikan director yang aktif, sehingga standby
director akan menggantikan director yang mati tersebut dan melanjutkan tugasnya.
3.3. Komponen Sistem
3.3.1. Komponen Perangkat Keras
Dalam tugas akhir ini sistem cluster diuji dengan cara membangkitkan
request secara simultan dalam jumlah yang banyak. Untuk itu akan memerlukan
jumlah client yang banyak. Maka digunakan request generator supaya cukup
dengan satu buah komputer seolah-olah bisa menghasilkan request yang
dihasilkan oleh banyak client secara simultan. Spesifikasi komputer yang
digunakan sebagai client yaitu :
1. Processor : Intel Core 2 Duo E4600 @2.40GHz
2. RAM : 1024MB
3. Ethernet : Realtek RTL8101E PCI-E 100 Mbps
-
BAB III PERANCANGAN DAN IMPLEMENTASI
19
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
Dua buah director dan manajemen node digunakan untuk meningkatkan
kehandalan sistem yang bersifat fault tolerance dimana kedua director bekerja
secara bergantian. Ketika salah satu director mengalami kegagalan maka
director yang lain siap menggantikan dan meneruskan kerja director yang
mengalami kegagalan tersebut. Spesifikasi komputer yang digunakan sebagai
director yaitu
a. Director primary
1. Processor : AMD Athlon 64 Processor 3000+
2. RAM : 512 MB
3. Ethernet : - nVidia Corporation MCP51 10/100 Mbps
- Dlink Sistem Inc RTL8139 10/100 Mbps
b. Director secondary
1. Processor : AMD Athlon 64 Processor 3000+
2. RAM : 512 MB
3. Ethernet : - nVidia Corporation MCP51 10/100 Mbps
- Dlink Sistem Inc RTL8139 10/100 Mbps
Minimal diperlukan dua real server untuk menciptakan sistem
clustering, dimana aplikasi yang digunakan yaitu aplikasi http. Spesifikasi
komputer yang digunakan yaitu :
a. Real Server I
1. Processor : Intel Core 2 Duo E4600 @2.40GHz
2. RAM : 4 GB
3. Ethernet : Realtek RTL8101E PCI-E 100 Mbps
b. Real Server II
1. Processor : Intel Core 2 Duo E4600 @2.40GHz
2. RAM : 4 GB
3. Ethernet : Realtek RTL8101E PCI-E 100 Mbps
3.3.2. Komponen Perangkat Lunak
Perangkat lunak yang digunakan dalam tugas akhir ini adalah sebagai berikut :
A. Loadbalancer
1. Sistem Operasi
-
BAB III PERANCANGAN DAN IMPLEMENTASI
20
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
Komputer sebagai director yang diberi label lb1 dan lb2
menggunakan system operasi Linux Gentoo.
2. Kernel
Kernel merupakan inti dari suatu sistem operasi Linux yang
berhubungan dengan perangkat keras. Pada bagian kernel terdapat berbagai
pilihan untuk memilih dan mengaktifkan driver perangkat keras dan
algoritma penjadwalan yang digunakan.
Kernel yang digunakan saat penelitian tugas akhir ini adalah kernel
versi 2.6.36-gentoo-r5 untuk komputer director yang diberi label lb1 dan
versi 2.6.34-gentoo-r12 untuk komputer director yang diberi label lb2..
Sedangkan untuk computer sebagai real server dan client menggunakan
kernel versi 2.6.24-16-generic
3. Ipvsadm
IP Virtual Server Administration (IPVSADM) digunakan untuk
mengatur kerja director sehingga dapat menambahkan layanan-layanan apa
saja yang mampu diberikan, memilih algoritma penjadwalan yang
digunakan, dan meneruskan request kepada real server yang aktif. Pada
director dengan label lb1 dan lb2 keduanya menggunakan ipvsadm versi
1.25.
4. Heartbeat
Heartbeat merupakan sebuah program yang menyediakan fitur high
availability pada linux virtual cluster. Diimplementasikan untuk
menciptakan sistem active-standby, apabila director primary mengalami
kerusakan maka director secondary akan mengambil alih tugas. Perangkat
lunak yang digunakan pada penelitian ini yaitu heartbeat versi 2.0.8.
5. Ldirectord
Linux director daemon (ldirectord) memiliki fungsi untuk
memonitor keadaan real server sehingga bisa diketahui status setiap real
server sedang hidup atau mati. Apabila salah satu real server down maka
ldirectord akan mengubah tabel IPVS sehingga paket yang datang tidak
akan diteruskan kepada real server yang mati tersebut. Versi ldirectord
yang digunakan adalah versi 1.186
-
BAB III PERANCANGAN DAN IMPLEMENTASI
21
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
B. Real Server
1. Sistem Operasi
Sedangkan komputer sebagai real server keduanya menggunakan sistem
operasi Linux Ubuntu. Untuk komputer client yang berfungsi sebagai
pembangkit request menggunakan sistem operasi Linux Ubuntu.
2. Kernel
Kernel merupakan inti dari suatu sistem operasi Linux yang berhubungan
dengan perangkat keras. Pada bagian kernel terdapat berbagai pilihan untuk
memilih dan mengaktifkan driver perangkat keras dan algoritma
penjadwalan yang digunakan.
Kernel yang digunakan untuk komputer sebagai real server dan client
menggunakan kernel versi 2.6.24-16-generic
3. Web server
Web server adalah suatu perangkat lunak yang berfungsi menerima
permintaan http atau https dari client melalui web browser dan mengirimkan
kembali hasilnya dalam bentuk halaman-halaman web yang umumnya
berbentuk dokumen html. Di dalam tugas akhir ini web server yang
digunakan adalah apache versi 2.2.19
4. PHP
PHP (Hypertext Preprocessor) yang merupakan bahasa
pemrograman berbasis web yang memiliki kemampuan untuk memproses
data dinamis. Php yang digunakan dalam tugas akhir ini adalah php versi
5.2.17
5. My SQL
MySQL adalah sebuah perangkat lunak system manajemen basis
data atau DBMS yang multithread, multiuser dan juga banyak digunakan
oleh user di internet. MySQL juga mendukung fungsi database cluster.
Dalam tugas akhir ini MySQL yang digunakan adalah versi 5.1.24
6. Httperf
Perangkat lunak yang digunakan untuk membangkitkan request agar
dapat menghasilkan banyak request dalam satu waktu yaitu httperf. Dengan
menggunakan httperf maka tidak perlu ada banyak komputer sebagai client,
-
BAB III PERANCANGAN DAN IMPLEMENTASI
22
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
cukup satu komputer sebagai client tetapi mampu menghasilkan banyak
request secara simultan. Pada penelitian tugas akhir ini digunakan httperf
versi 0.8.
3.4. Proses Instalasi dan Konfigurasi Sistem
Dalam sistem operasi linux tidak semua fasilitas pada kernel diaktifkan,
pengguna bisa memilih fasilitas apa saja yang ingin diaktifkan sesuai dengan
kebutuhan sehingga bisa lebih optimal.
Beberapa fasilitas pada kernel diperlukan untuk implementasi linux virtual
cluster. Langkah-langkah untuk mengkompilasi kernel serta kode lengkap konfigurasi
dan perintah perangkat lunak iptables, ipvsadm, ldirectord, heartbeat, dan MySQL
cluster akan dijelaskan pada lampiran C. Pada bagian ini akan dijelaskan kode umum
konfigurasi pada sistem linux virtual server khususnya pada director dan kode umum
konfigurasi MySQL cluster.
3.4.1. Heartbeat
Saat instalasi heartbeat harus diaktifkan pula program untuk
memonitor status real server , dalam tugas akhir ini digunakan ldirectord
sebagai pemonitor status real server. Berkas konfigurasi utama ldirectord
terdapat di ldirectord.cf. Berkas ldirectord berisi informasi alamat ip virtual
yang harus diakses oleh client, alamat ip real server, service yang dijalankan
real server, dan algoritma penjadwalan yang digunakan. Untuk lebih jelasnya
bisa dilihat pada konfigurasi di bawah ini
# /etc/ha.d/ldirectord.cf
checktimeout = 3
checkinterval = 5
autoreload = yes
quiescent = yes
virtual = 10.14.200.7:80
real = 192.168.1.10:80 masq
real = 192.168.1.11:80 masq
fallback = 127.0.0.1:80
service = http
scheduler = wlc
protocol = tcp
checktype = connect
-
BAB III PERANCANGAN DAN IMPLEMENTASI
23
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
Ada tiga berkas penting sebelum mengaktifkan heartbeat yaitu ha.cf,
haresources, dan authkeys. Berkas ha.cf berisi mengenai cara dan jenis media
perantara yang digunakan untuk saling bertukar informasi antara primary dan
secondary director. Untuk konfigurasi di primari director adalah sebagai
berikut
Sedangkan untuk konfigurasi secondary director adalah sebagai
berikut,
Berkas kedua yaitu haresources berisi keterangan mengenai nama
node, ip virtual, dan perintah untuk mengetahui keadaan real server. Berfungsi
saat takeover dimana akan terjadi proses perpindahan dari director primary
yang mengalami kegagalan kepada director secondary yang akan
menggantikan.
Pada director primary dan secondary harus memiliki isi berkas
haresources yang sama.
# /etc/ha.d/haresource
Lb1 IPaddr::10.14.200.7/24/eth0 IPaddr::192.168.1.9/29/eth1
ldirectord::ldirectord.cf
# /etc/ha.d/ha.cf
keepalive 2
deadtime 10
warntime 10
ucast eth0 10.14.200.72 // ip public director secondary
auto_failback off
node lb1
node lb2
# /etc/ha.d/ha.cf
keepalive 2
deadtime 10
warntime 10
ucast eth0 10.14.200.73 // ip public director secondary
auto_failback off
node lb1
node lb2
-
BAB III PERANCANGAN DAN IMPLEMENTASI
24
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
Hearbeat memiliki kunci autentikasi antara director primary dan
secondary, sehingga hanya director tertentu yang memiliki kunci autentikasi
sama yang dapat melakukan pertukaran informasi satu sama lain. Berkas
autentikasi heartbeat menggunakan metode CRC, SHA1, atau MD5.
Berkas authkeys pada kedua director harus sama
3.4.2. Ipvsadm
Ipvsadm sebagai perangkat lunak untuk manajemen LVS yang
meneruskan jalannya paket dari client kepada real server untuk kemudian
dilayani dan dikembalikan lagi kepada client. Director active dan standby
memiliki konfigurasi ipvsadm yang sama.
Untuk mengetahui konfigurasi sistem LVS dengan melihat tabel ipvs
melalui perintah ipvsadm.
3.4.3. Iptables
Untuk mengimplementasikan topologi dengan metode NAT, maka
diperlukan iptables dengan konfigurasi agar semua paket dari jaringan publik
tidak bisa mengakses langsung kepada real server tetapi dari sisi real server
dapat mengakses langsung ke jaringan publik.
Untuk mengimplementasikan topologi dengan metode NAT, maka
diperlukan iptables dengan konfigurasi agar semua paket dari jaringan publik
[root@LVS]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=65536)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn
InActConn
TCP 10.14.200.7:80 wlc
-> 192.168.1.10:80 Masq 1 0 0
-> 192.168.1.11:80 Masq 1 0 0
ipvsadm -A -t 10.14.200.7:80 -s wlc
ipvsadm -a -t 10.14.200.7:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 10.14.200.7:80 -r 192.168.1.11:80 -m
# /etc/ha.d/authkeys
auth 2
2 sha1 butzz
-
BAB III PERANCANGAN DAN IMPLEMENTASI
25
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
tidak bisa mengakses langsung kepada real server tetapi dari sisi real server
dapat mengakses langsung ke jaringan publik.
3.4.4. MySQL Cluster
Ada tiga komponen utama di dalam My SQL Cluster yaitu manajemen
node, data node, dan sql node.
1. Data node, berfungsi untuk menyimpan semua data yang menjadi milik
MySQL Cluster. Semua data direplikasi di node-node ini.
2. SQL node, berfungsi sebagai pintu akses untuk masuk ke dalam node-node data yang ter-cluster.
3. Manajemen node berfungsi untuk mengendalikan konfigurasi sistem ketika
startup. Selain itu, node ini juga dapat digunakan sebagai pengidentifikasi
setiap perubahan setting yang terjadi pada cluster. Dalam tugas akhir ini
ada dua komputer yang digunakan sebagai manajemen node. Manajemen
node diletakkan pada komputer lb1 dan lb2. Sehingga apabila manajemen
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables t nat A POSTROUTING o eth1 s 192.168.1.8/29 j \ SNAT -to-source 192.168.1.9
# /etc/my.cnf [client] port=3306 socket=/tmp/mysql.sock [mysqld] ndbcluster ndb-connectstring=192.168.1.12,192.168.1.13 default-storage-engine=NDBCLUSTER [mysql_cluster] ndb-connectstring=192.168.1.12,192.168.1.13 # /etc/my.cnf [client] port=3306 socket=/tmp/mysql.sock [mysqld] ndbcluster ndb-connectstring=192.168.1.12,192.168.1.13 default-storage-engine=NDBCLUSTER [mysql_cluster] ndb-connectstring=192.168.1.12,192.168.1.13
-
BAB III PERANCANGAN DAN IMPLEMENTASI
26
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
node pada lb1 down dapat langsung digantikan oleh manajemen node pada
lb2.
3.5. Skenario Implementasi
Skenario pengukuran pada penelitian tugas akhir ini secara garis besar terbagi
menjadi 3 yaitu skenario performansi sistem, skenario performansi database, dan
skenario dengan simulasi gangguan
# /var/lib/mysql-cluster/config.ini [NDBD DEFAULT] NoOfReplicas=2 DataMemory=1000M # How much memory to allocate for data storage IndexMemory=100M # How much memory to allocate for index storage [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Section for the cluster management node [NDB_MGMD] # IP address of the management node (this system) Hostname = 192.168.1.12 Id = 2 [NDB_MGMD] Hostname = 192.168.1.13 Id = 1 # Section for the storage nodes [NDBD] # IP address of the first storage node Id=3 Hostname=192.168.1.10 DataDir=/usr/local/mysql/var/mysql-cluster BackupDataDir=/usr/local/mysql/var/mysql-cluster/backup DataMemory=2048M [NDBD] # IP address of the second storage node Id=4 Hostname=192.168.1.11 DataDir=/usr/local/mysql/var/mysql-cluster BackupDataDir=/usr/local/mysql/var/mysql-cluster/backup DataMemory=2048M # one [MYSQLD] per storage node [MYSQLD] Id=5 Hostname=192.168.1.10 [MYSQLD] Id=6 Hostname=192.168.1.11
-
BAB III PERANCANGAN DAN IMPLEMENTASI
27
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
3.5.1. Skenario Performansi Sistem
Skenario dilakukan dengan cara mengirimkan request ke alamat suatu
website, request dilakukan dengan penambahan secara simultan. Dilakukan
pada sistem server tunggal dan sistem dengan metode linux virtual cluster.
3.5.2. Skenario Performansi Database
Skenario dilakukan dengan cara mengirimkan request ke alamat suatu
halaman website, dilakukan dengan cara penambahan request secara simultan.
Dilakukan pada sistem linux virtual server dengan menggunakan konsep
database shared nothing cluster dan pada sistem linux virtual server dengan
menggunakan konsep database shared disk cluster.
3.5.3. Skenario Real Server dengan Simulasi Gangguan
Semua real server pada linux virtual server dalam keadaan aktif,
sehingga keduanya dapat memberikan layanan kepada client. Skenario dengan
mengirimkan request kepada system linux virtual server, kemudian salah satu
real server disimulasikan mengalami gangguan dengan cara mematikan salah
satu komputer real server. Layanan yang sedang diproses dan request
selanjutnya tidak akan diteruskan kepada real server yang mengalami
gangguan tersebut melainkan melimpahkan kepada real server yang sedang
aktif.
3.5.4. Skenario Director dengan Simulasi Gangguan
Pada penelitian tugas akhir ini diimplementasikan dua buah director
dengan keadaan active-standby. Untuk menunjukan high-availability maka
perlu disimulasikan ketika salah satu director mengalami kegagalan atau mati.
Sehingga director lainnya akan mengambil alih tugas director yang mati, maka
terjadi proses take over yang memerlukan waktu beberapa detik.
3.6. Parameter yang dianalisis
3.6.1. CPU Utilization
CPU Utilization adalah tingkat penggunaan sumber daya CPU sehingga
dapat diketahui tingkat kesibukan perangkat yang digunakan.
-
BAB III PERANCANGAN DAN IMPLEMENTASI
28
IMPLEMENTASI LOAD BALANCING WEB SERVER DAN
MYSQL CLUSTER UNTUK MENJAMIN HIGH
AVAILABILITY PADA WEBSITE
... (2.1)
3.6.2. Request Loss
Request Loss merupakan persentase kegagalan request yang dikirimkan
ke server tujuan, disebabkan antara lain :
1. Terjadinya overload request pada server tujuan.
2. Error yang terjadi pada media fisik.
3. Kegagalan akibat overflow buffer pada sisi penerima.
4. Timeout akibat antrian paket terlalu panjang.
3.6.3. Waktu Respon
Waktu respon ialah waktu yang dibutuhkan sistem dalam melayani
setiap paket yang datang dengan satuan mili detik.
3.6.4. Throughput
Throughput merupakan banyaknya bit yang dilayani dengan benar dalam
suatu selang waktu tertentu dengan satuan bit per detik.
% request loss = request yang dikirim
100 % request hilang
Total bit yang dilayani dengan benar Throughput =
... (2.2) Total waktu pengamatan