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.