BAB 4 PERANCANGAN DAN UJICOBA
4.1
PERANCANGAN JARINGAN 4.1.1
Topologi Jaringan Berikut adalah rancangan jaringan untuk situs web inilahkoran:
Gambar 4.1 Topologi Jaringan 39
40 Dari rancangan jaringan diatas dapat dijelaskan bahwa pengaksesan situs web inilahkoran dimulai dari mengakses Virtual Router Redundancy Protocol atau VRRP (192.168.1.2) yang dibuat oleh software failover yang ter-install pada masing – masing load balancer. Failover akan memprioritaskan load balancer master (192.168.1.3) untuk menjadi load balancer, akan tetapi jika load balancer master mendapatkan masalah sehingga tidak dapat beroperasi maka failover akan bertugas untuk mengalihkan ke load balancer backup (192.168.1.4) untuk menjadi load balancer. Setelah itu load balancer tersebut akan membagi beban kepada ketiga web server (192.168.1.5, 192.168.1.6, dan 192.168.1.7) dengan menggunakan algoritma round-robin. Setiap web server yang akan mengakses database server harus mengakses VRRP (192.168.1.8) terlebih dahulu yang dibuat oleh software failover yang ter-install pada masing – masing load balancer (192.168.1.9 dan 192.168.1.10), dan fungsi dari failover dan load balancer tersebut sama dengan yang sebelumnya hanya saja beban yang dibagi adalah untuk database server. Terdapat 5 database server yaitu 3 Data dan SQL node (192.168.1.11, 192.168.1.12, dan 192.168.1.13) serta 2 Management node (192.168.1.14 dan 192.168.1.15). Ketiga database server (Data dan SQL node) tersebut terbagi bebannya oleh load balancer, serta masing – masing database server satu sama lain saling sinkron. Dimana jika salah satu database server melakukan insert atau update atau delete maka database server yang lain juga melakukan hal yang sama, ini disebut dengan sync replication. Sync replication bisa
41 terwujud karena adanya peran dari database server (Management node). Terdapat 2 Management node yang menangani dan memantau database server (Data dan SQL node). Ketika Management node 1 mengalami kegagalan, maka ada Management node 2 yang kemudian menangani dan memantau database server (Data dan SQL node) serta dapat menghindari potensi split-brain, dimana terjadinya ketidaksamaan isi dalam masing – masing database server (Data dan SQL node) yang kemungkinan terjadi karena tidak adanya Management node.
4.1.2
Hardware Berikut adalah spesifikasi hardware yang akan digunakan dalam rancangan jaringan situs web inilahkoran: •
Load balancer dan Failover o Prosesor 2.4GHz o Memori 2GB o Harddisk 80GB o NIC Gigabit Ethernet
•
Web server dan Database server o Prosesor Dual-core 2.33GHz o Memori Dual-channel 4GB o Harddisk 160GB o NIC Gigabit Ethernet
42 4.1.3
Software Berikut adalah software yang akan digunakan dalam rancangan jaringan situs web inilahkoran: •
HAProxy Perangkat lunak gratis yang menawarkan ketersediaan tinggi dan load balancing untuk aplikasi berbasis TCP dan HTTP.
•
Keepalived Perangkat lunak gratis yang menawarkan ketersediaan tinggi dan failover yang menggunakan VRRP (Virtual Router Redundancy Protocol).
•
Nginx Perangkat lunak gratis web server dengan fokus utama pada concurrency tinggi, kinerja dan penggunaan memori yang rendah.
•
PHP-FPM Perangkat lunak untuk implementasi PHP FastCGI, dimana FastCGI adalah pengeksekusian PHP pada web server dengan kelebihan mengurangi overhead yang memungkinkan server untuk menangani permintaan halaman web yang lebih banyak secara sekaligus. o php5-mysql Paket ini menyediakan modul untuk koneksi database MySQL langsung dari script PHP.
43 •
MySQL Cluster Suatu Relational database management system dengan teknologi yang menyediakan shared-nothing clustering dan dirancang untuk menyediakan ketersediaan tinggi dan throughput yang tinggi dengan latency
rendah,
sementara
memungkinkan
untuk
mendekati
skalabilitas linier. o libaio1 Library
yang
dibutuhkan
MySQL
Cluster
untuk
memungkinkan ruang pengguna untuk menggunakan sistem pemanggil kernel asinkron Linux I/O, penting bagi kinerja database. •
Xinetd Suatu daemon yang berjalan pada banyak sistem seperti Unix dan mengelola konektivitas berbasis internet.
4.1.4
Sistem Operasi Dalam rancangan jaringan ini hanya menggunakan sebuah sistem operasi yaitu Debian versi 6 (Squeeze). Debian merupakan sistem operasi yang berbasis Linux dengan beberapa keunggulan, diantara lain: •
Gratis Dapat mengambil sistem operasi Debian tanpa dikenai biaya dan dapat memperbanyak dan memodifikasinya.
44 •
Stabil Sistem tidak mudah mengalami hang walaupun telah menjalankan program secara terus menerus dalam kurun waktu yang relatif lama yaitu lebih dari satu bulan, dengan tanpa harus melakukan restart.
•
Cross Platform Dapat dijalankan pada hampir semua jenis atau tipe komputer yang ada saat ini.
4.1.5
Instalasi dan konfigurasi Perancangan dilakukan secara simulasi pada satu PC, dikarenakan keterbatasan sumber daya seperti hardware, serta semua instalasi dan konfigurasi dilakukan melalui terminal pada Debian. 4.1.5.1 Konfigurasi Debian Setelah instalasi Debian, kemudian dilanjutkan melakukan penggantian repositori bawaan dengan repositori lokal, ini bertujuan agar download software berjalan dengan lebih cepat daripada download dari repositori bawaan
yang bersifat
internasional. Untuk mengganti repositori bawaan, ketik perintah ‘nano /etc/apt/sources.list’ lalu pada depan alamat repositori bawaan ditambah ‘#’ agar hanya menjadi komentar, kemudian tambah repositori lokal dipaling bawah, yaitu: Tabel 4.1 Repositori Debian lokal deb http://kebo.vlsm.org/debian squeeze main contrib non-free
45 deb-src http://kebo.vlsm.org/debian squeeze main contrib non-free
deb http://kebo.vlsm.org/debian squeeze-proposed-updates main non-free contrib
kemudian disimpan. Selanjutnya ketik perintah ‘gpg --keyserver keys.gnupg.net --recv-key 89DF5277’ dan dilanjutkan dengan perintah ‘gpg -a --export 89DF5277 | apt-key add –‘ yang berguna untuk dapat ijin mengakses dari repositori lokal tersebut. Setelah repositori diganti lalu ketik perintah ‘aptitude update’ agar update list repositori lokal tersebut. Kemudian khusus pada komputer yang akan menjadi web server tambahkan repositori dari PHP-FPM, yaitu: Tabel 4.2 Repositori PHP-FPM deb http://packages.dotdeb.org stable all deb http://php53.dotdeb.org stable all
yang berguna untuk dapat download software PHP-FPM, karena di repositori bawaan maupun lokal tidak disediakan. Lalu yang terakhir khusus pada komputer yang akan menjadi database server, firewall Debian harus dimatikan. Karena jika tidak, MySQL Cluster tidak dapat berjalan dikarenakan MySQL
Cluster
butuh
keleluasaan
penuh
saat
saling
46 berkomunikasi antar database server. Lakukan dengan membuat script yang mematikan firewall pada saat booting, ketik perintah ‘nano /etc/firewall’ lalu diisi sebagai berikut: Tabel 4.3 Script untuk mematikan Firewall #!/bin/bash echo -n "Disabling Firewall..." iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT echo " Done!" exit 0
kemudian disimpan, dilanjutkan ketik perintah ‘chmod +x /etc/firewall’ agar script tersebut dapat dieksekusi. Selanjutnya tambahkan lokasi dari script tersebut pada rc.local agar dapat berjalan pada saat booting, dengan ketik perintah ‘nano /etc/rc.local’ kemudian tambahkan ‘/etc/firewall’ pada baris sebelum ‘exit 0’ kemudian disimpan.
47 4.1.5.2 Konfigurasi Load balancer dan Failover Pertama lakukan instalasi software – software yang dibutuhkan untuk komputer yang akan menjadi load balancer dan failover, yaitu HAProxy sebagai load balancer dan Keepalived sebagai failover.
Ketik perintah ‘apt-get install haproxy
keepalived’ untuk instalasi, kemudian dilanjutkan konfigurasi yang pertama dilakukan pada load balancer dan failover (192.168.1.3 dan 192.168.1.4) untuk web server. Pertama lakukan konfigurasi Keepalived pada komputer yang akan menjadi master (192.168.1.3),
ketik
perintah
‘nano
/etc/keepalived/keepalived.conf’ selanjutnya diisi sebagai berikut: Tabel 4.4 Konfigurasi Keepalived Web Server Master vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 }
vrrp_instance VI_1 { interface eth2 state MASTER virtual_router_id 51 priority 101
48 virtual_ipaddress { 192.168.1.2 } track_script { chk_haproxy } }
kemudian disimpan dan dilanjutkan pada komputer yang menjadi backup (192.168.1.4) diisi sebagai berikut: Tabel 4.5 Konfigurasi Keepalived Web Server Backup vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 }
vrrp_instance VI_1 { interface eth2 state MASTER virtual_router_id 51 priority 100 virtual_ipaddress {
49 192.168.1.2 } track_script { chk_haproxy } }
kemudian disimpan. Dari konfigurasi diatas Keepalived akan membuat VRRP (Virtual Router Redundancy Protocol) yang dapat mengecek apakah HAProxy berjalan atau tidak, serta membuat virtual IP (192.168.1.2) sebagai tempat akses dan kemudian akan menentukan diarahkan ke master atau backup berdasarkan hasil pengecekan terhadap HAProxy yang terdapat pada masing – masing load balancer. Selanjutnya lakukan konfigurasi pada kedua komputer agar HAProxy jalan pada saat booting, yaitu dengan ketik perintah ‘nano /etc/default/haproxy’ dan ganti nilai pada ENABLED dari 0 menjadi 1, kemudian disimpan. Selanjutnya konfigurasi HAProxy pada kedua komputer yaitu dengan ketik perintah ‘nano /etc/haproxy/haproxy.cfg’ lalu diisi sebagai berikut: Tabel 4.6 Konfigurasi HAProxy Web Server global log 127.0.0.1 local0
50 log 127.0.0.1 local1 notice maxconn 1024 user haproxy group haproxy daemon
defaults log
global
mode http option httplog option dontlognull retries 3 option redispatch maxconn 1024 contimeout
5000
clitimeout
50000
srvtimeout
50000
listen webfarm *:80 mode http balance roundrobin cookie SERVERID insert option http-server-close
51 option forwardfor option httpchk HEAD /check.txt HTTP/1.0 server Web1 192.168.1.5:80 cookie 1 check inter 3000 rise 2 fall 2 server Web2 192.168.1.6:80 cookie 2 check inter 3000 rise 2 fall 2 server Web3 192.168.1.7:80 cookie 3 check inter 3000 rise 2 fall 2
listen stats :1936 mode http stats enable stats hide-version stats realm Haproxy\ Statistics stats uri / stats auth administrator:0000
kemudian disimpan. Dari konfigurasi diatas bahwa ada 3 web server yang akan dibagi bebannya dengan algoritma round-robin, serta dapat mengecek ketersediaan pada setiap web server setiap 3 detik melalui cek pada check.txt yang terdapat pada masing – masing web server, apakah bisa diakses atau tidak, serta memastikan 2 kali apakah server up atau down sebelum dapat digunakan, selain itu dapat dipantau secara statistik melalui port
52 1936. Kemudian dilanjutkan melakukan IP forwarding, ketik perintah ‘echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf’ yang berguna untuk melanjutkan paket yang dikirim antar komputer, serta
melakukan
non-local
IP
binding
dengan
perintah
‘net.ipv4.ip_nonlocal_bind = 1’ yang berguna agar dapat mendengarkan dari IP yang ada maupun tidak ada pada komputer lokal. Setelah konfigurasi pada load balancer dan failover untuk web server, kemudian dilanjutkan konfigurasi pada load balancer dan failover (192.168.1.9 dan 192.168.1.10) untuk database server. Pertama konfigurasi Keepalived yang pada dasarnya sama dengan konfigurasi failover yang sebelumnya yang membedakan hanya pada virtual IP (192.168.1.8) dan VRRP ID pada Keepalived, yaitu pada master (192.168.1.9) diisi sebagai berikut: Tabel 4.7 Konfigurasi Keepalived Database Server Master vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 }
vrrp_instance VI_2 {
53 interface eth2 state MASTER virtual_router_id 52 priority 101 virtual_ipaddress { 192.168.1.8 } track_script { chk_haproxy } }
Kemudian disimpan dan pada backup (192.168.1.10) diisi sebagai berikut: Tabel 4.8 Konfigurasi Keepalived Database Server Backup vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 }
vrrp_instance VI_2 {
54 interface eth2 state MASTER virtual_router_id 52 priority 100 virtual_ipaddress { 192.168.1.8 } track_script { chk_haproxy } }
kemudian disimpan. VRRP ID harus beda dalam satu jaringan, jika tidak akan bentrok antar failover yang akan menyebabkan salah satu failover (Keepalived) tidak dapat berjalan. Selanjutnya lakukan konfigurasi pada kedua komputer agar HAProxy jalan pada saat booting, yaitu ketik perintah ‘nano /etc/default/haproxy’ dan ganti nilai pada ENABLED dari 0 menjadi 1, lalu simpan. Kemudian
dilanjutkan
konfigurasi
HAProxy
pada
kedua
komputer yaitu ketik perintah ‘nano /etc/haproxy/haproxy.cfg’ lalu diisi sebagai berikut: Tabel 4.9 Konfigurasi HAProxy Database Server global
55
log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 1024 user haproxy group haproxy daemon
defaults log
global
mode tcp option tcplog option dontlognull retries 3 option redispatch maxconn 1024 contimeout
5000
clitimeout
50000
srvtimeout
50000
listen cluster 0.0.0.0:3306 mode tcp balance roundrobin
56 option tcpka option httpchk server Node1 192.168.1.11:3306 check port 9200 inter 3000 rise 2 fall 2 server Node2 192.168.1.12:3306 check port 9200 inter 3000 rise 2 fall 2 server Node3 192.168.1.13:3306 check port 9200 inter 3000 rise 2 fall 2
listen stats :1936 mode http stats enable stats hide-version stats realm Haproxy\ Statistics stats uri / stats auth administrator:0000
kemudian disimpan. Dari konfigurasi diatas bahwa ada 3 database server yang akan dibagi bebannya dengan algoritma round-robin, serta dapat mengecek ketersediaan pada setiap database server setiap 3 detik melalui port 9200 dan memastikan 2 kali apakah server up atau down sebelum dapat digunakan, selain itu dapat dipantau
secara statistik
melalui
port
1936.
Dilanjutkan
melakukan IP forwarding dengan mengetik perintah ‘echo
57 "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf’ yang berguna untuk melanjutkan paket yang dikirim antar komputer, serta melakukan non-local IP binding dengan perintah ‘net.ipv4.ip_nonlocal_bind = 1’ yang berguna agar dapat mendengarkan dari IP yang ada maupun tidak ada pada komputer lokal.
4.1.5.3 Konfigurasi Web server Pertama lakukan instalasi software – software yang dibutuhkan
web
server
(192.168.1.5,
192.168.1.6,
dan
192.168.1.7) yaitu Nginx sebagai web server, lalu PHP-FPM sebagai implementasi PHP pada web server dan php5-mysql sebagai modul MySQL untuk dapat diakses PHP. Ketik perintah ‘apt-get update’ agar update list repositori PHP-FPM. Dilanjutkan ketik perintah ‘apt-get install nginx php5-fpm php5-mysql’ untuk instalasi. Kemudian konfigurasi Nginx pada ketiga web server, ketik perintah ‘nano /etc/nginx/nginx.conf’ selanjutnya diisi sebagai berikut: Tabel 4.10 Konfigurasi Nginx pada Web Server user www-data;
worker_processes 2; pid /var/run/nginx.pid;
58 events { worker_connections 1024; }
http { sendfile on; tcp_nopush on; tcp_nodelay on;
keepalive_timeout 65; types_hash_max_size 2048;
include /etc/nginx/mime.types; default_type application/octet-stream;
access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
kemudian disimpan. Konfigurasi diatas adalah konfigurasi bawaan dari Nginx, penggantian hanya dilakukan pada nilai
59 ‘working_processes’ menjadi 2, karena working processes itu disesuaikan dengan jumlah prosesor atau core prosesor yang ada pada web server. Kemudian dilanjutkan dengan membuat folder untuk menyimpan konten – konten web server, ketik perintah ‘mkdir /var/www’. Selanjutnya membuat soket Unix untuk menghubungkan Nginx dengan PHP-FPM, pertama ketik perintah ‘mkdir /var/run/php-fpm’ untuk pembuatan lokasi penempatan soket dan selanjutnya ketik perintah ‘touch /var/run/php-fpm/phpfpm.sock’ untuk membuat file soketnya. Soket Unix bertujuan agar proses komunikasi antara Nginx dan PHP-FPM melalui soket Unix. Kemudian dilanjutkan membuat check.txt agar HAProxy dapat mengecek ketersediaan web server, dengan ketik perintah ‘touch /var/www/check.txt’. Selanjutnya membuat konfigurasi web
pada
Nginx,
ketik
perintah
‘nano
/etc/nginx/sites-
available/web’, lalu diisi sebagai berikut: Tabel 4.11 Konfigurasi situs web pada Nginx server { listen 80; server_name localhost;
root /var/www; index index.php;
60 location ~ \.php$ { fastcgi_index index.php; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; } }
kemudian disimpan. Dari konfigurasi diatas konten web diakses dari folder /var/www, lalu komunikasi antara Nginx dengan PHPFPM melalui soket Unix serta menggunakan kemampuan FastCGI yang dimiliki oleh PHP-FPM agar bisa menangani permintaaan halaman web yang banyak secara sekaligus. Kemudian lakukan konfigurasi di PHP-FPM agar komunikasi antara Nginx dengan PHP-FPM
melalui
soket
Unix,
ketik
perintah
‘nano
/etc/php5/fpm/pool.d/www.conf’ lalu ganti tujuan dari ‘listen = 127.0.0.1:9000’ menjadi /var/run/php-fpm/php-fpm.sock, lalu disimpan. Selanjutnya hapus web bawaan Nginx, ketik perintah ‘rm
/etc/nginx/sites-enabled/default’
kemudian
agar
dapat
digunakan konfigurasi web yang sudah dibuat sebelumnya, ketik perintah ‘ln -s /etc/nginx/sites-available/web’ lalu ketik perintah ‘ngxdissite default’ untuk pemastian bahwa web bawaan Nginx sudah tidak digunakan.
61 4.1.5.4 Konfigurasi Database server Pertama lakukan instalasi software – software yang dibutuhkan database server. Khusus database server yang menjadi Management node (192.168.1.14 dan 192.168.1.15) hanya akan di-install MySQL Cluster sebagai management, lalu untuk database server yang menjadi Data dan SQL node (192.168.1.11, 192.168.1.12, dan 192.168.1.13) akan di-install MySQL Cluster sebagai Data dan SQL, lalu libaio1 sehingga MySQL Cluster dapat memuat shared libraries agar MySQL Cluster dapat membagi – bagi file, dan yang terakhir Xinetd untuk dapat mengirimkan status ketersediaan database server ke HAProxy melalui port 9200. Pertama instalasi dan konfigurasi dilakukan pada database server (Management node) dimulai dengan instalasi MySQL Cluster yang package-nya di-download dari
situs
web
MySQL,
kemudian
ditaruh
di
folder
/home/administrator. Ketik perintah ‘tar -C /usr/local -xzvf mysqlcluster-gpl-7.2.8-linux2.6-i686.tar.gz’ untuk extraksi, kemudian dilanjutkan
perintah
‘mv
/usr/local/mysql-cluster-gpl-7.2.8-
linux2.6-i686 /usr/local/mysql’ untuk penamaan ulang folder MySQL Cluster-nya. Selanjutnya membuat folder mysql-cluster, ketik perintah ‘mkdir /usr/local/mysql/mysql-cluster’ untuk cache. Kemudian konfigurasi MySQL Cluster, ketik perintah ‘nano /usr/local/mysql/config.ini’ pada masing – masing Management node lalu diisi sebagai berikut:
62 Tabel 4.12 Konfigurasi MySQL Cluster pada Database Server (Management node) [ndb_mgmd] NodeId=1 HostName=192.168.1.14 DataDir=/var/lib/mysql-cluster
[ndb_mgmd] NodeId=1 HostName=192.168.1.15 DataDir=/var/lib/mysql-cluster
[ndbd default] DataDir=/var/lib/mysql-cluster NoOfReplicas=3 DataMemory=3072M IndexMemory=384M
[ndbd] NodeId=3 HostName=192.168.1.11
[ndbd]
63 NodeId=4 HostName=192.168.1.12
[ndbd] NodeId=5 HostName=192.168.1.13
[mysqld] HostName=192.168.1.11
[mysqld] HostName=192.168.1.12
[mysqld] HostName=192.168.1.13
kemudian
disimpan.
Dari
konfigurasi
diatas
terdapat
2
Management node yang salah satunya bersifat Active dan lainnya Passive kemudian Data dan Index memori disesuaikan dengan memori RAM yang ada pada database server, lalu ada 3 database server (Data dan SQL node) yang direplika secara sinkron. Kemudian yang terakhir pembuatan folder untuk penyimpanan data MySQL Cluster, ketik perintah ‘mkdir /var/lib/mysqlcluster’.
64 Setelah konfigurasi pada database server (Management node), kemudian dilanjutkan konfigurasi pada database server (Data dan SQL node). Pertama dimulai dengan instalasi MySQL Cluster yang package-nya di-download dari situs web MySQL, kemudian ditaruh difolder /home/administrator. Ketik perintah ‘tar
-C
/usr/local
-xzvf
mysql-cluster-gpl-7.2.8-linux2.6-
i686.tar.gz’ untuk extraksi, kemudian dilanjutkan perintah ‘mv /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 /usr/local/mysql’ untuk penamaan ulang folder MySQL Cluster-nya. Selanjutnya membuat folder mysql untuk menyimpan konfigurasi, ketik perintah ‘mkdir /etc/mysql’ dilanjutkan konfigurasi MySQL Cluster, ketik perintah ‘nano /etc/mysql/nano my.cnf’ pada masing – masing Management node lalu diisi sebagai berikut: Tabel 4.13 Konfigurasi MySQL Cluster pada Database Server (Data & SQL node) [client] port=3306 socket=/tmp/mysql-cluster
[mysqld] port=3306 socket=/tmp/mysql-cluster ndbcluster
65 ndb-connectstring=192.168.1.14,192.168.1.15 skip-name-resolve
[mysql_cluster] ndb-connectstring=192.168.1.14,192.168.1.15
kemudian
disimpan.
Dari
konfigurasi
diatas,
SQL
akan
mengakses database melalui soket dan pada port 3306, kemudian database server (Data dan SQL node) terhubung dengan database server (Management node) serta saling sikron dan mengabaikan nama host pada masing – masing database server yang berguna mempercepat proses penghubungan antara Management dan Data & SQL node. Selanjutnya membuat lokasi soket, ketik perintah ‘mkdir /tmp/mysql-cluster’ dilanjutkan pembuatan folder untuk penyimpanan data MySQL Cluster, ketik perintah ‘mkdir /var/lib/mysql-cluster’. Instalasi database server (Data dan SQL node) selesai dilanjutkan pembuatan akun untuk MySQL Cluster di Debian, ketik perintah ‘useradd mysql’ dan kemudian jalankan instalasi
MySQL,
ketik
perintah
‘./usr/local/mysql/
scripts/mysql_install_db --user=mysql’ dilanjutkan pemberian kepemilikan dan grup agar dapat mengakses MySQL Cluster dan datanya, ketik perintah ‘chown -R root .’ lalu ‘chown -R mysql data’ dan ‘chgrp -R mysql .’. Setelah itu membuat script agar
66 database server dapat dicek ketersediaanya oleh HAProxy, ketik perintah ‘nano /opt/mysqlchk’ lalu diisi sebagai berikut: Tabel 4.14 Script untuk mengecek ketersediaan Database Server oleh HAProxy #!/bin/bash MYSQL_HOST="localhost" MYSQL_PORT="3306" MYSQL_USERNAME="mysqlchk" MYSQL_PASSWORD="0000"
TMP_FILE="/tmp/mysqlchk.out" ERR_FILE="/tmp/mysqlchk.err"
/usr/local/mysql/bin/mysql
--host=$MYSQL_HOST
--
port=$MYSQL_PORT --user=$MYSQL_USERNAME \ --password=$MYSQL_PASSWORD
-e"show
$TMP_FILE 2> $ERR_FILE
if [ "$(/bin/cat $TMP_FILE)" != "" ] then /bin/echo -e "HTTP/1.1 200 OK" /bin/echo -e "MySQL is running." else
databases;"
>
67 /bin/echo -e "HTTP/1.1 503 Service Unavailable" /bin/echo -e "MySQL is not running." Fi
kemudian disimpan. Script diatas akan login pada SQL database server kemudian melaksanakan query sederhana yaitu ‘show databases;’. Jika query tersebut berhasil maka script tersebut mengirim pesan melalui Xinetd bahwa database server tersedia untuk digunakan. Kemudian pemberian kepemilikan dan modus script tersebut, ketik perintah ‘chown nobody /opt/mysqlchk’ dan ‘chmod 744 /opt/mysqlchk’ agar hanya dapat diakses sendiri. Selanjutnya konfigurasi Xinetd agar dapat membaca pesan dari script, ketik perintah ‘nano /etc/xinetd.d/mysqlchk’ lalu diisi sebagai berikut: Tabel 4.15 Konfigurasi Xinetd service mysqlchk { flags = REUSE socket_type = stream port = 9200 wait = no user = nobody server = /opt/mysqlchk
68 log_on_failure += USERID disable = no only_from = 0.0.0.0/0 per_source = UNLIMITED }
kemudian simpan. Konfigurasi diatas akan mengirim pesan kepada HAProxy melalui port 9200. Kemudian jalankan script ketik perintah ‘/opt/mysqlchk’ agar bisa memberi modus pada file temporer yang dibuat script dan ketik perintah ‘chmod 777 /tmp/mysqlchk.*’ untuk penggantian modusnya sehingga dapat diakses. Selanjutnya mengatur pengguna di MySQL. Pertama jalankan database server (Management node) terlebih dahulu, ketik
perintah
‘./usr/local/mysql/bin/ndb_mgmd
--config-
file=config.ini’ kemudian perintah ‘./bin/ndb_mgm’, selanjutnya jalankan database server (Data dan SQL node) ketik perintah ‘./usr/local/mysql/bin/ndbd’ lalu jalankan SQL, ketik perintah ‘./usr/local/mysql/support-files/mysql.server
start’
kemudian
masuk ke SQL ‘./usr/local/mysql/bin/mysql -u root’. Setelah masuk lihat user apa saja yang ada di database server, ketik perintah ‘SELECT User, Host, Password FROM mysql.user;’ kemudian beri user tersebut password, ketik perintah ‘SET PASSWORD FOR 'root'@'localhost' = PASSWORD('0000');’ kemudian untuk user selanjutnya ‘SET PASSWORD FOR
69 'root'@'127.0.0.1' = PASSWORD('0000');’. Kemudian membuat user serta password untuk dapat diakses oleh web server, ketik perintah ‘CREATE USER 'root'@'%' IDENTIFIED BY '0000';’, dilanjutkan memberikan hak penuh kepada user tersebut, ketik perintah ‘SELECT User, Host, Password FROM mysql.user;’ lalu lihat password pada kolom password yang ditampilkan, kemudian ketik ‘GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*password' WITH GRANT OPTION;’, isi *password dengan password yang ditampilkan. Kemudian membuat user dan password untuk script, ketik perintah ‘CREATE USER 'mysqlchk'@'localhost' IDENTIFIED BY '0000';’, dilanjutkan memberikan hak membaca saja kepada user tersebut, ketik perintah ‘SELECT User, Host, Password FROM mysql.user;’ lalu lihat password pada kolom password yang ditampilkan, kemudian ketik ‘GRANT SELECT ON *.* TO 'mysqlchk'@'localhost'
IDENTIFIED
BY
PASSWORD
'*password' WITH GRANT OPTION;’, isi *password dengan password yang ditampilkan. 4.2
Uji Coba Agar dapat membuktikan rancangan jaringan tersebut berjalan dengan baik, maka diperlukan adanya sebuah uji coba yang dapat membuktikan bahwa rancangan jaringan tersebut dapat berjalan dengan baik. Dalam uji coba ini dilakukan secara simulasi dan akan dilihat apakah rancangan jaringan tersebut
70 dapat berjalan dengan baik, dari client mengakses situs web sampai fungsi – fungsi yang terdapat pada rancangan jaringan tersebut. 4.2.1
Persiapan alat uji coba Dalam melakukan hal simulasi, PC yang digunakan memiliki spesifikasi hardware sebagai berikut: o Prosesor Quad-core 2.33GHz o Memori Dual-channel 4GB o Harddisk 160GB o NIC Fast Ethernet
Berikut adalah software yang digunakan untuk mengsimulasikan jaringan situs web adalah sebagai berikut: •
Oracle VM VirtualBox 4.2.4 Oracle VM VirtualBox adalah software virtualisasi, yang dapat digunakan untuk mengeksekusi sistem operasi "tambahan" di dalam sistem operasi "utama".
•
HeidiSQL 7.0 HeidiSQL adalah sebuah perangkat lunak sistem manajemen basis data SQL untuk MySQL.
•
Mozilla Firefox 17.0 Mozilla Firefox adalah perangkat lunak yang berfungsi menampilkan dan melakukan interaksi dengan dokumen-dokumen yang disediakan oleh web server.
71 •
Situs web PHP sederhana Dibuat untuk melakukan uji coba apakah web server dan database server berjalan dengan baik.
•
httperf Suatu alat untuk mengukur kinerja web server. Menyediakan fasilitas yang fleksibel untuk menghasilkan berbagai beban kerja HTTP dan untuk mengukur kinerja server. Fokus httperf tidak pada satu patokan pelaksanaan tertentu, tetapi pada penyediaan yang kuat, alat kinerja tinggi yang memfasilitasi pengukuran konstruksi tingkat mikro maupun makro.
4.2.2
Percobaan Load Balancer dan failover Setelah semua komputer – komputer server berjalan, kemudian dilakukan uji coba terhadap load balancer untuk web dan database server. Pada browser ketik ‘192.168.1.2:1936’ untuk web server, sedangkan ‘192.168.1.8:1936’ untuk database server, sehingga akan tampil data statistik yang dibuat oleh HAProxy sebagai berikut:
Gambar 4.2 Statistik web server
72
Gambar 4.3 Statistik database server
status berwarna hijau menandakan bahwa web maupun database server siap digunakan, dan beban dibagi dengan cara algoritma round-robin. Kemudian dilanjutkan uji coba failover. Uji coba dilakukan pada komputer yang menjadi failover untuk load balancer web maupun database server, dengan cara ketik perintah ‘ip addr sh eth2’ di komputer failover master sehingga akan tampil sebagai berikut:
Gambar 4.4 Tampilan pada failover master
73
Gambar 4.5 Tampilan pada failover master
tampilan diatas menandakan bahwa failover menggunakan load balancer 192.168.1.3 untuk web server dan 192.168.1.9 untuk database server, sebagai load balancer master. Agar lebih pasti lakukan perintah ‘tail -f /var/log/messages’ pada failover master maka akan tampil sebagai berikut:
Gambar 4.6 Tampilan log Keepalived master
74
Gambar 4.7 Tampilan log Keepalived master
tampilan diatas menandakan bahwa load balancer 192.168.1.3 untuk web server dan 192.168.1.9 untuk database server menjadi load balancer master, karena terdapat tulisan ‘Entering MASTER STATE’ pada tampilan diatas. Sedangkan pada load balancer backup akan tampil sebagai berikut:
Gambar 4.8 Tampilan pada failover backup
75
Gambar 4.9 Tampilan pada failover backup
tampilan diatas menandakan bahwa failover menjadikan load balancer 192.168.1.4 untuk web server dan 192.168.1.10 untuk database server, sebagai load balancer backup. Kemudian pada tampilan log Keepalived akan tampil sebagai berikut:
Gambar 4.10 Tampilan log Keepalived backup
76
Gambar 4.11 Tampilan log Keepalived backup
tampilan diatas menandakan bahwa load balancer 192.168.1.4 untuk web server dan 192.168.1.10 untuk database server menjadi load balancer backup, karena terdapat tulisan ‘Entering BACKUP STATE’ pada tampilan diatas. Tetapi jika load balancer master untuk web ataupun database server mati maka tampilan failover backup sebagai berikut:
Gambar 4.12 Tampilan pada failover backup
77
Gambar 4.13 Tampilan pada failover backup
tampilan diatas menandakan bahwa failover menggunakan load balancer 192.168.1.4 untuk web server dan 192.168.1.10 untuk database server, sebagai load balancer master. Kemudian pada tampilan log Keepalived akan tampil sebagai berikut:
Gambar 4.14 Tampilan log Keepalived backup
78
Gambar 4.15 Tampilan log Keepalived backup
tampilan diatas menandakan bahwa load balancer 192.168.1.4 untuk web server dan 192.168.1.10 untuk database server menjadi load balancer master, karena terdapat tulisan ‘Entering MASTER STATE’ pada tampilan diatas.
4.2.3
Percobaan Web server Uji coba web server dilakukan dengan memasukan konten web pada masing – masing web server di lokasi /var/www. Konten web untuk uji coba berupa situs web sederhana yang berformat PHP. Berikut adalah tampilan konten web yang sudah dimasukan pada masing – masing web server dan didistribusikan oleh web server yang diakses melalui 192.168.1.2:
79
Gambar 4.16 Tampilan situs web sederhana untuk uji coba
tampilan diatas menandakan bahwa web server dapat mendistribusikan situs web berformat PHP dengan baik.
4.2.4
Percobaan Database server Setelah uji coba load balancer dan failover serta web server dilanjutkan uji coba pada database server. Pertama jalankan database server (Management node) yaitu 192.168.1.14 dan 192.168.1.15, ketik perintah
‘./usr/local/mysql/bin/ndb_mgmd
--config-file=config.ini’
dilanjutkan dengan perintah ‘./usr/local/mysql/bin/ndb_mgm’. Kemudian jalankan database server (Data dan SQL node) yaitu 192.168.1.11, 192.168.1.12,
dan
192.168.1.13.
‘./usr/local/mysql/bin/ndbd’
dan
Selanjutnya kemudian
ketik ketik
perintah perintah
80 ‘./usr/local/mysql/support-files/mysql.server
start’.
Seperti
berikut:
Gambar 4.17 Tampilan Data dan SQL node 1
Gambar 4.18 Tampilan Data dan SQL node 2
tampilan
81
Gambar 4.19 Tampilan Data dan SQL node 3
Selanjutnya pada database server (Management node) ketik perintah ‘show’ maka akan tampil sebagai berikut:
Gambar 4.20 Tampilan Management node
tampilan menandakan semua database server (Data dan SQL node) sudah berhubungan dengan database server (Management node 1) yang Active dan Management node 2 menjadi Passive dan membuat Data dan SQL
82 node saling sinkron. Kemudian lakukan uji coba pengisian pada situs web serderhana yang bertujuan apakah database server dapat berjalan dengan baik. Diisi sebagai berikut:
Gambar 4.21 Tampilan situs web sederhana yang telah diisi
tampilan diatas menandakan bahwa web server dan database server masing – masing dapat saling berhubungan dan berjalan dengan baik. Selanjutnya uji coba apakah database server saling sinkron dan melakukan sync replication. Dengan menggunakan HeidiSQL yang akses langung pada database server (Data dan SQL node) yaitu 192.168.1.11, 192.168.1.12, dan 192.168.1.13 dapat dilihat sebagai berikut:
83
Gambar 4.22 Tampilan HeidiSQL pada 192.168.1.11
Gambar 4.23 Tampilan HeidiSQL pada 192.168.1.12
84
Gambar 4.24 Tampilan HeidiSQL pada 192.168.1.13
tampilan menandakan bahwa sync replication pada masing – masing database server berjalan dengan baik, karena semua data terreplika secara keseluruhan.
4.2.5
Evaluasi Percobaan Setelah uji coba selesai dilakukan kemudian dilanjutkan dengan evaluasi terhadap uji coba tersebut. Evaluasi dilakukan dengan menggunakan software httperf yang dapat mengukur seberapa jauh kemampuan simulasi rancangan yang telah dibuat. Berikut adalah tampilan hasil pengujian beban terhadap rancangan yang telah dibuat:
85
Gambar 4.25 Tampilan pengujian dengan httperf
tampilan diatas memperlihatkan hasil pengujian yang dilakukan pada 1000 koneksi yang masuk dalam satu detik. Dapat disimpulkan bahwa server – server dapat melayani 1000 koneksi dalam waktu 19.325 detik. Kemudian dalam satu detiknya server – server dapat melayani 51.7 koneksi, serta dengan permintaan rata – rata 51.7 per detik. Kemudian respon dari server – server dalam melayani percobaan tersebut adalah dengan rata – rata 59.6 respon per detik, dengan minimun 20.0 respon per detik dan maksimum 127.3 respon per detik. Lalu beban CPU server – server selama dalam percobaan tersebut mencapai 67.3%, dengan kecepatan I/O jaringan yaitu 51.1 KB per detik.