39 BAB 4 PERANCANGAN DAN UJICOBA 4.1 PERANCANGAN

advertisement
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.
Download