perpustakaan.uns.ac.id
digilib.uns.ac.id
BAB IV IMPLEMENTASI DAN ANALISA
4.1
Instalasi Aplikasi Failover Cluster 4.1.1 Instalasi Kernel Kernel merupakan bagian penting untuk menjalankan sistem operasi. Dalam penelitian ini menggunakan kernel-uek versi 2.6.39 untuk mengoptimalkan kinerja dari sistem management cluster. Instalasi kernel versi ini menggunakan repository dari Oracle. Download repository oracle seperti berikut (lakukan pada kedua web server): [root@node1] # cd /etc/yum.repos.d [root@node1 yum.repos.d] # wget http://public-yum.oracle.com/public-yum-ol6.repo [root@node2] # cd /etc/yum.repos.d [root@node2 yum.repos.d] # wget http://public-yum.oracle.com/public-yum-ol6.repo
Gambar 4.1 Download Repository Oracle Kemudian edit repository oracle hingga menghasilkan seperti berikut (enable ol6_UEK_base menjadi 1); … [ol6_UEK_base] name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch) baseurl=http://publicyum.oracle.com/repo/OracleLinux/OL6/UEK/base/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1 …
Gambar 4.2 Enable ol6 UEK base
commit to user
28
perpustakaan.uns.ac.id
digilib.uns.ac.id
Perintah instalasi kernel seperti berikut (lakukan pada kedua web server) : [root@node1] # yum install kernel-uek -y [root@node2] # yum install kernel-uek -y
Gambar 4.3 Instalasi Kernel UEK 4.1.2 Instalasi pacemaker, cman, pcs, ccs, resource-agents, ocfs2-tools Paket instalasi ini tentunya untuk management cluster pada web server. Untuk dapat menginstal paket tersebut, PC harus sudah memiliki sistem operasi CentOS 6.5 32-bit dan terhubung dengan internet. Sebelum menginstal paket tersebut alangkah baiknya diupdate terlebih dahulu CentOS-nya. Perintah update seperti berikut (lakukan pada kedua web server) : [root@node1] # yum update -y [root@node2] # yum update -y
Gambar 4.4 Update CentOS 6.5 Setelah CentOS up-to-date, instal paket management clusternya di kedua web server. Perintah seperti berikut (lakukan pada kedua web server) : [root@node1] # yum install pacemaker cman pcs ccs resource-agents ocfs2-tools-1.6 -y [root@node2] # yum install pacemaker cman pcs ccs resource-agents ocfs2-tools-1.6 -y
Gambar 4.5 Instalasi Management Cluster Download ocfs2-tools-1.6 kemudian lakukan instalasi seperti berikut (lakukan pada kedua web server) : [root@node1] # rpm –Uvh ocfs2-tools ocfs2-tools-1.6.4-2.2.i686.rpm [root@node1] # yum install gcc –y [root@node1] # yum update -y [root@node2] # rpm –Uvh ocfs2-tools ocfs2-tools-1.6.4-2.2.i686.rpm [root@node2] # yum install gcc –y [root@node2] # yum update -y
commit to userpaket ocfs2-tools-1.6 Gambar 4.6 Instalasi
29
perpustakaan.uns.ac.id
4.1.3
digilib.uns.ac.id
Instalasi Apache Apache bertindak sebagai web server yang nantinya akan digunakan oleh client untuk merespon request-nya, perintah instalasinya seperti berikut (lakukan pada kedua web server) : [root@node1] # yum install httpd -y [root@node2] # yum install httpd -y
Gambar 4.7 Instalasi Apache
4.1.4
Instalasi MySQL Server Mysql server bertindak sebagai penyedia database untuk client. Mysql server yang digunakan dalam penelitian ini adalah mysql-community-server. Sebelumnya, download terlebih dahulu repository mysql-community-server pada situs resmi developer mysql. Perintah download repository seperti berikut (lakukan pada kedua web server) : [root@node1] # wget http://repo.mysql.com/mysql-community-release-el65.noarch.rpm [root@node2] # wget http://repo.mysql.com/mysql-community-release-el65.noarch.rpm
Gambar 4.8 Download Repository MySQL Server Kemudian instal repo mysql-community-server yang telah didownload, perintah seperti berikut (lakukan pada kedua web server) : [root@node1] # rpm -Uvh mysql-community-release-el6-5.noarch.rpm [root@node2] # rpm -Uvh mysql-community-release-el6-5.noarch.rpm
Gambar 4.9 Instalasi Repository MySQL Server Versi mysql-community-server yang digunakan adalah versi 5.5. Versi 5.5 ini adalah versi untuk Red Hat Enterprise Linux dan Oracle Linux. Perintah instalasi mysql-server seperti berikut (lakukan pada kedua web server):
commit to user
30
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # yum install mysql-community-server -y [root@node2] # yum install mysql-community-server -y
Gambar 4.10 Instalasi MySQL Community Server
4.1.5
Instalasi DRBD Drbd bertindak sebagai perangkat untuk sinkronisasi data. Versi drbd yang digunakan yakni versi 0.8.3 (stable). Perintah instalasi paket drbd seperti berikut (lakukan pada kedua web server): [root@node1] # yum install drbd83-utils kmod-drbd83 -y [root@node2] # yum install drbd83-utils kmod-drbd83 -y
Gambar 4.11 Instalasi DRBD
4.2
Instalasi Aplikasi Load Balancing 4.2.1
Instalasi HAProxy Haproxy bertindak sebagai pembagi beban traffic pada web server. Perintah instalasi haproxy seperti berikut : [root@lb] # yum install haproxy -y
Gambar 4.12 Instalasi HAProxy
4.3
Instalasi Aplikasi Pendukung 4.3.1 Instalasi PhpMyAdmin Phpmyadmin bertindak sebagai management database, untuk mempermudah
dalam
hal
pengelolaan
database.
Instalasi
phpmyadmin membutuhkan tambahan repository dari epel. Perintah instalasi repo epel seperti berikut (lakukan pada kedua web server) : [root@node1] # yum install http://dl.fedoraproject.org/pub/epel/6/i386/epelrelease-6-8.noarch.rpm -y [root@node2] # yum install http://dl.fedoraproject.org/pub/epel/6/i386/epelrelease-6-8.noarch.rpm -y
Gambar 4.13 Instalasi Repository EPEL
commit to user
31
perpustakaan.uns.ac.id
digilib.uns.ac.id
Perintah instalasi phpmyadmin seperti berikut (lakukan pada kedua web server) : [root@node1] # yum install phpMyAdmin php-mysql php-mcrypt -y [root@node2] # yum install phpMyAdmin php-mysql php-mcrypt -y
Gambar 4.14 Instalasi PhpMyAdmin 4.3.2 Instalasi Joomla Joomla adalah jenis web CMS (Content Management System). Dalam penelitian ini, joomla akan difungsikan untuk ujicoba
kelayakan
failover
cluster.
Download
joomla
di
joomla.org/download.html. Dalam penelitian ini menggunakan versi joomla
2.5.24.
Perintah
extract
joomla
di
folder
/var/www/html/joomla pada node1 seperti berikut : [root@node1 joomla] # unzip Joomla_2.5.24-Stable-Full_Package.zip
Gambar 4.15 Extract Joomla ZIP Kemudian lakukan instalasi joomla hingga didapatkan seperti berikut (device drbd0 harus sudah di-mount di /var/www/html).
Gambar 4.16 Interface Joomla
commit to user
32
perpustakaan.uns.ac.id
4.4
digilib.uns.ac.id
Konfigurasi Aplikasi Failover Cluster 4.4.1 Konfigurasi Network, Selinux, Firewall Untuk dapat menghubungkan satu server load balancing dan dua web server melalui jaringan lokal maka dibutuhkan ip address agar seluruh server dapat berkomunikasi. Serta pengaturan ip address untuk gateway dari client diluar jaringan lokal, seperti berikut : IP Address Server Load Balance [root@lb] # vi /etc/sysconfig/network-scripts/ifcfg-eth0 #IP Load Balancing di eth0 yang menangani request dari client DEVICE=eth0 BOOTPROTO=static HWADDR=00:00:21:21:05:0B IPADDR=192.168.200.1 NETMASK=255.255.255.0 ONBOOT=yes [root@lb] # vi /etc/sysconfig/network-scripts/ifcfg-eth1 #IP Load Balancing di eth1 untuk koneksi jaringan lokal DEVICE=eth1 BOOTPROTO=static HWADDR=00:0D:87:6A:10:0B IPADDR=10.10.10.1 NETMASK=255.255.255.0 ONBOOT=yes
Gambar 4.17 Konfigurasi IP Address Server Load Balance IP Address Server Web Node1 [root@node1] # vi /etc/sysconfig/network-scripts/ifcfg-eth0 #IP Load Web Server 1 di eth0 untuk koneksi jaringan lokal DEVICE=eth0 BOOTPROTO=static HWADDR= 00:0B:6A:75:EA:21 IPADDR=10.10.10.2 NETMASK=255.255.255.0 ONBOOT=yes
to user Gambar 4.18 commit Konfigurasi IP Address Server Web Node1
33
perpustakaan.uns.ac.id
digilib.uns.ac.id
IP Address Server Web Node2 [root@node2] # vi /etc/sysconfig/network-scripts/ifcfg-eth0 #IP Web Server 2 di eth0 untuk koneksi jaringan lokal DEVICE=eth0 BOOTPROTO=static HWADDR=40:61:86:02:73:72 IPADDR=10.10.10.3 NETMASK=255.255.255.0 ONBOOT=yes
Gambar 4.19 Konfigurasi IP Address Server Web Node2 Penjelasan : a). vi /etc/sysconfig/network-scripts/ifcfg-eth0 : perintah untuk membuat file ifcfg-eth0 di dalam folder /etc/sysconfig/networkscripts/, untuk konfigurasi ip address di eth0. b). DEVICE
: nama ethernet yang terdeteksi, pada penelitian ini yaitu eth0.
c). BOOTPROTO
: menjelaskan jenis network-nya, yaitu static.
d). HWADDR
: MAC address ethernet yang sedang digunakan, yaitu eth0 (cek MAC address dengan ifconfig)
e). IPADDR
: pemberian ip address.
f). NETMASK
: pemberian netmask untuk ip address.
g). ONBOOT
: perintah untuk mengaktifkan ethernet pada waktu booting.
Konfigurasi untuk memberikan hostname di tiap-tiap server, seperti berikut :
commit to user
34
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@lb] # vi /etc/sysconfig/network #Edit seperti ini HOSTNAME=lb [root@node1] # vi /etc/sysconfig/network HOSTNAME=node1 [root@node2] # vi /etc/sysconfig/network HOSTNAME=node2
Gambar 4.20 Konfigurasi Hostname Penjelasan : a). vi /etc/sysconfig/network : perintah untuk mengedit file network di dalam folder /etc/sysconfig/, untuk memberikan nama hostname di masing-masing server. b). HOSTNAME
: nama hostname.
Perintah untuk mengecek hostname yakni hostname. Kemudian mengedit /etc/hosts seperti berikut (lakukan pada semua server) : [root@lb] # vi /etc/hosts #Tambahkan seperti ini 10.10.10.1 lb.syakurawonogiri.com lb 10.10.10.2 node1.syakurawonogiri.com node1 10.10.10.3 node2.syakurawonogiri.com node2
Gambar 4.21 Konfigurasi File Hosts Kemudian testing network apakah masing-masing server dapat saling berkomunikasi dengan cara ping ip_address_server atau ping hostname di tiap-tiap server. Bila ada balasan reply berarti masing-masing server sudah dapat saling berkomunikasi. Tahap selanjutnya konfigurasi untuk selinux. Fungsi dari selinux yakni mengunci akses kontrol aplikasi. Selinux memiliki 3 mode : enforcing, permissive dan disabled. Secara default, selinux di commit to userDalam penelitian ini mode yang centos dalam kedaan diaktifkan.
35
perpustakaan.uns.ac.id
digilib.uns.ac.id
digunakan adalah permissive, yakni selinux tidak diaktifkan, namun akan menolak login jika ada aktifitas yang memberlakukan selinux. Konfigurasi selinux seperti berikut : [root@lb] # vi /etc/selinux/config #Edit seperti ini SELINUX=permissive
Gambar 4.22 Konfigurasi SELinux Selanjutnya konfigurasi untuk firewall-nya. Secara default, port yang diijinkan akses melalui firewall yakni hanya port 22. Port 22 adalah port untuk ssh. Karena dalam penelitian ini menggunakan drbd, apache, mysql server, pacemaker dan ocfs2 untuk cluster-nya, jika firewall tidak dikonfigurasi dengan benar maka sinkronisasi data tidak akan dapat berjalan dan apache yang memberikan service berupa http tidak akan pernah bisa diakses dari client. Dan untuk port mysql tidak perlu diijinkan akses dari firewall, karena mysql diikutkan port dari drbd. Konfigurasi firewall seperti berikut: [root@lb] # vi /etc/sysconfig/iptabels #Edit pada bagiani ini -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7788 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 5405 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT
Gambar 4.23 Konfigurasi Firewall Penjelasan : a). -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
: memperbolehkan remote server melalui ssh
melalui tcp port 22. b). -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j commit to user ACCEPT : memperbolehkan akses http melalui tcp port 80. 36
perpustakaan.uns.ac.id
digilib.uns.ac.id
c). –A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
: memperbolehkan akses database melalui tcp port
3306. d). -A INPUT -m state --state NEW -m tcp -p tcp --dport 7788 -j ACCEPT
: memperbolehkan akses DRBD melalui tcp port
7788. e). -A INPUT -m state --state NEW -m udp -p udp --dport 5405 -j ACCEPT
: memperbolehkan akses anggota cluster melalui
udp port 5405. f). -A INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT
: memperbolehkan akses file system ocfs2 melalui
tcp port 7777. Konfigurasi firewall seperti di atas berlaku untuk masingmasing web server. Sedangkan firewall pada server load balance hanya meloloskan port 80 untuk akses http. 4.4.2
Konfigurasi DRBD menggunakan OCFS2 Tahap konfigurasi terpenting dalam penelitian ini berada di drbd. Karena tugas drbd untuk melakukan sinkronisasi data diantara kedua web server agar diperoleh data yang sama diantara kedua web server. Untuk melakukan konfigurasi drbd diperlukan partisi atau harddisk kosong. Pada penelitian ini menggunakan harddisk kosong 80 GB yang diambil partisi 10 GB untuk drbd. Untuk partisi harddisk seperti berikut:
commit to user
37
perpustakaan.uns.ac.id
digilib.uns.ac.id
NODE 1 [root@node1]# fdisk -cu /dev/sdb Command (m for help): p Disk /dev/sdb: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000b8ee9 Device Boot
Start
End
Blocks Id System
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-167772159, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159): +10G Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): w The partition tabel has been altered! Calling ioctl() to re-read partition tabel. Syncing disks. [root@localhost ~]# pvcreate /dev/sdb1 Physical volume “/dev/sdb1” successfully created [root@localhost ~]# vgcreate vg_drbd /dev/sdb1 Volume group “vg_drbd” successfully created [root@localhost ~]# lvcreate -l 2559 vg_drbd -n lv_drbd Logical volume “lv_drbd” created
commit to user Gambar 4.24 Partisi Harddisk Node1 38
perpustakaan.uns.ac.id
digilib.uns.ac.id
NODE 2 [root@localhost ~]# fdisk -cu /dev/sda Command (m for help): p Disk /dev/sda: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00007613 Device Boot
Start
End
Blocks Id System
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (2048-167772159, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159): +10G Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): w The partition tabel has been altered! Calling ioctl() to re-read partition tabel. Syncing disks. [root@localhost ~]# pvcreate /dev/sda1 Physical volume ”/dev/sda1” successfully created [root@localhost ~]# vgcreate vg_drbd /dev/sda1 Volume group “vg_drbd” successfully created [root@localhost ~]# lvcreate -l 2559 vg_drbd -n lv_drbd Logical volume “lv_drbd” created
commit to user Gambar 4.25 Partisi Harddisk Node2 39
perpustakaan.uns.ac.id
digilib.uns.ac.id
Penjelasan : a). fdisk -cu /dev/sda : mengelola tabel partisi di linux pada disk /dev/sda. b). Command p
: melihat list tabel partisi.
c). Command n
: membuat partisi baru.
d). Command t
: mengubah id sistem partisi.
e). Command w
: menuliskan tabel ke disk, kemudian keluar dari command.
f). pvcreate /dev/sda1 : membuat physical volume dari disk /dev/sda1. g). vgcreate vg_drbd /dev/sda1 : membuat volume group dengan nama vg_drbd pada disk /dev/sda1. h). lvcreate -l 2559 vg_drbd -n lv_drbd : membuat logical volume baru pada volume group vg_drbd dengan nama lv_drbd. i). fdisk -cu /dev/sdb : mengelola tabel partisi di linux pada disk /dev/sdb. j). pvcreate /dev/sdb1 : membuat physical volume dari disk /dev/sdb1. k). vgcreate vg_drbd /dev/sdb1 : membuat volume group dengan nama vg_drbd pada disk /dev/sdb1. l). lvcreate -l 2559 vg_drbd -n lv_drbd : membuat logical volume baru pada volume group vg_drbd dengan nama lv_drbd. Setelah partisi siap digunakan di kedua web server, selanjutnya membuat file sinkron.res untuk resource drbd seperti berikut (lakukan pada kedua web server) :
commit to user
40
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # vi /etc/drbd.d/sinkron.res #Membuat isian kode sperti ini resource sinkron { startup { become-primary-on both; wfc-timeout 30; outdated-wfc-timeout 20; degr-wfc-timeout 120; } net { allow-two-primaries; cram-hmac-alg sha1; shared-secret syakurasyakura; } syncer { rate 100M; al-extents 257; on-no-data-accessible io-error; } on node1 { device /dev/drbd0; disk /dev/vg_drbd/lv_drbd; address 10.10.10.2:7788; flexible-meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/vg_drbd/lv_drbd; address 10.10.10.3:7788; flexible-meta-disk internal; } }
Gambar 4.26 Konfigurasi Resource DRBD
commit to user
41
perpustakaan.uns.ac.id
digilib.uns.ac.id
Penjelasan : a). resource sinkron
: membuat resource dengan nama sinkron yang akan digunakan oleh drbd untuk disinkronisasikan.
b). startup
: menjalankan script yang akan dieksekusi saat booting.
c). become-primary-on both : script startup mempromosikan ke primary. d). wfc-timeout 30
: script startup memproses resource sampai resource terhubung sampai batas waktu tunggu 30 detik.
e). outdated-wfc-timeout 20 : menunggu timeout koneksi selama 20 detik jika node di dalam cluster sudah usang. f). degr-wfc-timeout 120
: menunggu timeout koneksi selama 2 menit jika node di dalam cluster rusak (reboot).
g). net : menjalankan script pada network yang sedang aktif. h). allow-two-primaries
: memperbolehkan cluster memiliki lebih dari satu node primary.
i). cram-hmac-alg sha1
: script net untuk merahasiakan data drbd menggunakan algoritma kernel sha1.
j). shared-secret syakurasyakura
: script kunci untuk otentikasi drbd yakni syakurasyakura.
k). syncer
: pembatasan bandwidth yang digunakan oleh proses resynchronization.
l). rate 10M
: membatasi transfer rate maksimal 10 MB.
m). al-extents 257
: ukuran set aktif (4M = 257 extents = 1 GB set aktif). commit to user
42
perpustakaan.uns.ac.id
digilib.uns.ac.id
n). on-no-data-accessible io-error : menangguhkan IO (Input/Output) apabila sambungan ke peer gagal. o). on node1
: pengaturan pada node node1 (media sinkronisasi). : perangkat yang digunakan untuk
p). device /dev/drbd0
sinkronisasi yakni /dev/drbd0. q). disk /dev/vg_drbd/lv_drbd : partisi yang digunakan untuk sikronisasi yakni /dev/vg_drbd/lv_drbd. r). address 10.10.10.2:7788
: ip address yang digunakan untuk sinkronisasi yakni 10.10.10.2 melalui port 7788.
s). flexible-meta-disk internal : memberikan meta-data secara internal. Kemudian membuat meta data penyimpanan drbd pada kedua web server : [root@node1] # drbdadm create-md sinkron [root@node2] # drbdadm create-md sinkron
Gambar 4.27 Meta Data Penyimpanan DRBD Selanjutnya menjalankan service drbd pada kedua web server seperti berikut: [root@node1] # service drbd start [root@node2] # service drbd start
Gambar 4.28 Start Service DRBD Menjalankan perintah sinkronisasi disk dengan menjalankan perintah berikut. Hanya dijalankan pada node primary. Karena dalam penelitian ini menggunakan jenis master-master, maka semua node menjadi primary. [root@node1]# drbdadm -- --overwrite-data-of-peer primary all
commit to user Gambar 4.29 Perintah Sinkronisasi Disk DRBD 43
perpustakaan.uns.ac.id
digilib.uns.ac.id
Untuk melihat proses sinkronisasi dan mengecek jenis sinkronisasi seperti berikut (bisa dilihat pada kedua web server): [root@node1]# cat /proc/drbd [root@node2]# cat /proc/drbd
Gambar 4.30 Cek Sinkronisasi Disk DRBD Jika proses sinkronisasi sudah selesai, ditandai dengan status UpToDate/UpToDate, lakukan format harddisk yang dijadikan sebagai perangkat drbd. Perintah ini hanya dijalankan pada node primary. Format filesystem yang digunakan dalam penelitian ini yakni ocfs2. Perintah format filesystem ocfs2 seperti berikut : [root@node1]# mkfs.ocfs2 -T datafiles -N 2 -L ocfs2_drbd0 /dev/drbd0
Gambar 4.31 Format Disk DRBD Menggunakan Filesystem OCFS2 Kemudian membuat folder dengan nama ocfs2 di dalam folder /etc/. Perlu diingat, ocfs2 hanya mengeksekusi file dengan nama cluster.conf di dalam folder /etc/ocfs2/. Berikut perintah konfigurasi ocfs2 :
commit to user
44
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1]# mkdir /etc/ocfs2 [root@node1]# cd /etc/ocfs2/ [root@node1]# vi cluster.conf # Buat seperti ini node: ip_port = 7777 ip_address = 10.10.10.2 number = 0 name = node1 cluster = clustersyakura node: ip_port = 7777 ip_address = 10.10.10.3 number = 1 name = node2 cluster = clustersyakura cluster: node_count = 2 name = clustersyakura
Gambar 4.32 Konfigurasi OCFS2 Penjelasan : node: a). ip_port
: port yang digunakan untuk komunikasi OCFS2 (default : 7777).
b). ip_address : alamat interface fisik yang digunakan untuk komunikasi OCFS2. c). number
: nomor unik untuk node antara 0 – 254.
d). name
: hostname yang digunakan untuk komunikasi OCFS2.
e). cluster
: nama untuk commit tocluster user OCFS2.
45
perpustakaan.uns.ac.id
digilib.uns.ac.id
cluster: a). node_count : jumlah total node di dalam cluster OCFS2 b). name
: nama untuk cluster OCFS2
Perintah konfigurasi service o2cb seperti berikut : [root@node1]# service o2cb configure Configuring the O2CB driver. This will configure the on-boot properties of the O2CB driver. The following questions will determine whether the driver is loaded on boot. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Load O2CB driver on boot (y/n) [n]: y Cluster stack backing O2CB [o2cb]:o2cb Cluster to start on boot (Enter "none"to clear) [ocfs2]:clustersyakura Specify heartbeat dead threshold (>=7) [31]:62 Specify network idle timeout in ms (>=5000) [30000]:60000 Specify network keepalive delay in ms (>=1000) [2000]:2000 Specify network reconnect delay in ms (>=2000) [2000]:2000 Writing O2CB configuration: OK Setting cluster stack "o2cb": OK Starting O2CB cluster clustersyakura: OK
Gambar 4.33 Konfigurasi Service o2cb 4.4.3 Konfigurasi Apache Untuk monitoring keadaan server apache melalui URL, edit konfigurasi di /etc/httpd/conf/httpd.conf seperti berikut :
commit to user
46
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # vi /etc/httpd/conf/httpd.conf #Tambahkan bagian ini
SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 10.10.10.0/24
Gambar 4.34 Konfigurasi Apache Konfigurasi server-status di atas memperbolehkan serverstatus diakses oleh ip address yang berada di bawah ip loopback 127.0.0.1 dan network 10.10.10.0/24 yang terhubung secara lokal melalui switch hub D-Link. 4.4.4 Konfigurasi MySQL Server Konfigurasi mysql-server ini harus sangat diperhatikan, terutama untuk tujuan folder penyimpanan database mysql-server dan tujuan penyimpanan socket-nya. Kedua hal tersebut yang mendasari mysql-server dapat berfungsi sebagaimana mestinya. Perintah konfigurasi mysql-server seperti berikut : [root@node1] # service mysqld start [root@node1] # mkdir /var/www/html/database [root@node1] # mv /var/lib/mysql/* /var/www/html/database/ [root@node1] # vi /etc/my.cnf #Edit seperti ini … datadir=/var/www/html/database/ socket=/var/lib/mysql/mysql.sock
Gambar 4.35 Konfigurasi MySQL Server
4.4.5
Konfigurasi Pacemaker, cman, pcs, ccs, resource-agents Pada konfigurasi ini digunakan untuk monitoring cluster. Pertama, konfigurasi cman cluster menggunakan ccs seperti berikut : commit to user
47
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # ccs -f /etc/cluster/cluster.conf --createcluster pacemaker1 [root@node1] # ccs -f /etc/cluster/cluster.conf --addnode node1 [root@node1] # ccs -f /etc/cluster/cluster.conf --addnode node2 [root@node1] # ccs -f /etc/cluster/cluster.conf --addfencedev pcmk agent=fence_pcmk [root@node1] # ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect node1 [root@node1] # ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect node2 [root@node1] # ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk node1 pcmkredirect port=node1 [root@node1] # ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk node2 pcmkredirect port=node2
Gambar 4.36 Konfigurasi Management Cluster Penjelasan : a). ccs -f /etc/cluster/cluster.conf
: ccs dapt mengeksekusi file dengan nama cluster.conf dari folder /etc/cluster/.
b). --createcluster pacemaker1 : membuat cluster.conf baru dengan nama cluster pacemaker1. (menghapus yang lama jika ada) c). --addnode node1
: menambahkan node node1 untuk cluster.
d). --addnode node2
: menambahkan node node2 untuk cluster.
e). --addfencedev pcmk agent=fence_pcmk
: menambahkan perangkat fence.
f). --addmethod pcmk-redirect node1 : menambahkan metode fence dari node1. g). --addmethod pcmk-redirect node2 : menambahkan metode fence dari node2. h). --addfenceinst pcmk node1 pcmk-redirect port=node1 i). --addfenceinst pcmk node2 pcmk-redirect port=node2 commit to user
48
: menambahkan fence instance untuk node1. : menambahkan fence instance untuk node2.
perpustakaan.uns.ac.id
digilib.uns.ac.id
Hasil konfigurasi dari file cluster.conf di folder /etc/cluster :
Gambar 4.37 Preview Konfigurasi Management Cluster Setelah mendaftarkan node1 dan node2 pada cman cluster, sekarang
menon-aktifkan
quorum
pada
cman.
Quorum
ini
difungsikan sebagai pengelompok anggota cluster dengan batas minimum untuk bisa menjadi cluster. Karena dalam penelitian ini hanya menggunakan dua web server, maka perintah untuk menonaktifkan quorum pada cman seperti berikut: [root@node1] # echo "CMAN_QUORUM_TIMEOUT=0">> /etc/sysconfig/cman
Gambar 4.38 Non-aktif Quorum pada CMAN Untuk melakukan konfigurasi pacemaker, maka aktifkan terlebih dahulu service cman maupun service pacemaker seperti commit to user berikut : 49
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # service cman start [root@node1] # service pacemaker start
Gambar 4.39 Aktivasi Service CMAN dan Pacemaker Konfigurasi pacemaker dapat dilakukan di kedua web server setelah service cman dan service pacemaker diaktifkan. Kemudian non-aktifkan
terlebih
dahulu
quorum
pada
pacemaker
dan
nonaktifkan juga stonith seperti berikut : [root@node1] # pcs property set no-quorum-policy=ignore [root@node1] # pcs property set stonith-enabled=false
Gambar 4.40 Menonaktifkan Quorum pada Pacemaker dan Menonaktifkan Stonith Verifikasi terlebih dahulu apakah terdapat error sebelum konfigurasi pacemaker. Perintah verifikasi seperti berikut : [root@node1] # crm_verify -L
Gambar 4.41 Verifikasi Pacemaker Konfigurasi pacemaker menggunakan pcs seperti berikut. Sebelumnya, samakan waktu di masing-masing server menggunakan ntpdate, terutama untuk web server karena untuk membaca log yang sumbernya dari server yang berbeda agar monitoring cluster menghasilkan informasi yang up-to-date. [root@node1] # ntpdate 0.id.pool.ntp.org [root@node2] # ntpdate 0.id.pool.ntp.org
Gambar 4.42 Konfigurasi ntpdate Kemudian konfigurasi resource apache, mysql dan drbd di pacemaker seperti berikut :
commit to user
50
perpustakaan.uns.ac.id
digilib.uns.ac.id
[root@node1] # pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl=”http://localhost/server-status” op monitor interval=60s [root@node1] # pcs resource create WebMySQL lsb:mysqld op monitor interval=60s [root@node1] # pcs resource create WebData ocf:linbit:drbd drbd_resource=sinkron op monitor interval=60s [root@node1] # pcs resource master WebDataClone WebData master-max=2 master-node-max=1 clone-max=2 clone-node-max=1 notify=true [root@node1] # pcs resource create WebFS Filesystem device=”/dev/drbd0” directory=”/var/www/html/” fstype=”ocfs2” [root@node1] # pcs resource create dlm ocf:pacemaker:controld op monitor interval=60s [root@node1] # pcs constraint colocation add WebFS WebDataClone INFINITY with-rsc-role=Master [root@node1] # pcs constraint colocation add WebSite WebFS INFINITY [root@node1] # pcs constraint colocation add WebMySQL WebFS INFINITY [root@node1] # pcs constraint order promote WebDataClone then start WebFS [root@node1] # pcs constraint order WebFS then WebSite [root@node1] # pcs constraint order WebFS then WebMySQL [root@node1] # pcs resource clone dlm clone-max=2 clone-node-max=1 [root@node1] # pcs resource clone WebFS [root@node1] # pcs resource clone WebSite [root@node1] # pcs resource clone WebMySQL
Gambar 4.43 Konfigurasi Resource Pacemaker Penjelasan : a). pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl=”http://localhost/serverstatus” op monitor interval=60s : membuat
resource
ocf:heartbeat:apache
dengan dengan
nama
WebSite
file
konfigurasi
dengan apache
tipe di
/etc/httpd/conf/httpd.conf yang bisa di monitor melalui URL melalui alamat http://localhost/server-status dan apache ini diperiksa setiap commit 60 detik.to user
51
perpustakaan.uns.ac.id
digilib.uns.ac.id
b). pcs resource create WebMySQL lsb:mysqld op monitor interval=60s : membuat resource dengan nama WebMySQL dengan tipe lsb:mysqld yang di monitor setiap 60 detik. c). pcs resource create WebData ocf:linbit:drbd drbd_resource=sinkron op monitor interval=60s : membuat resource dengan nama WebData dengan tipe ocf:linbit:drbd yang memiliki resource drbd dengan nama resource sinkron dan drbd di monitor setiap 60 detik. d). pcs resource master WebDataClone WebData master-max=2 masternode-max=1 clone-max=2 clone-node-max=1 notify=true : mengelola resource dengan nama WebDataClone sebagai multistate (master/slave) resource yang memiliki max 2 node sebagai master. e). pcs resource create WebFS Filesystem device=”/dev/drbd0” directory=”/var/www/html/” fstype=”ocfs2” : membuat resource dengan nama WebFS dengan tipe Filesystem yang menggunakan perangkat /dev/drbd0 dan perangkat dimount di folder /var/www/html/, menggunakan tipe file system ocfs2. f). pcs resource create dlm ocf:pacemaker:controld op monitor interval=60s : membuat
resource
dengan
nama
dlm
dengan
tipe
ocf:pacemaker:controld yang di monitor setiap 60 detik. Resource ini untuk monitoring lock_dlm yang digunakan oleh ocfs2. g). pcs constraint
: mengatur kendala resource.
h). colocation add WebFS WebDataClone INFINITY with-rscrole=Master : diartikan bahwa wajib bagi WebFS untuk berjalan di node yang sama dengan WebDataClone dengan skor INFINITY yang commit to user bertindak sebagai master.
52
perpustakaan.uns.ac.id
digilib.uns.ac.id
i). colocation add WebSite WebFS INFINITY : diartikan bahwa wajib bagi WebSite untuk berjalan di node yang sama dengan WebFS dengan skor INFINITY. j). colocation add WebMySQL WebFS INFINITY : diartikan bahwa wajib bagi WebMySQL untuk berjalan di node yang sama dengan WebFS dengan skor INFINITY. k). order promote WebDataClone then start WebFS : memastikan WebDataClone dipromosikan dahulu sebelum memulai WebFS. l). order WebFS then WebSite : memastikan WebFS sudah aktif sebelum memulai WebSite. Ini berarti bahwa pemulihan WebFS juga akan memicu pemulihan WebSite. m). order WebFS then WebMySQL : memastikan WebFS sudah aktif sebelum memulai WebMySQL. Ini berarti bahwa pemulihan WebFS juga akan memicu pemulihan WebMySQL. n). pcs resource clone dlm clone-max=2 clone-node-max=1 : membuat salinan resource dlm dalam satu grub. o). pcs resource clone WebFS : membuat salinan resource WebFS dalam satu grub. p). pcs resource clone WebSite membuat salinan resource WebSite dalam satu grub. q). pcs resource clone WebMySQL membuat salinan resource WebMySQL dalam satu grub.
4.5
Konfigurasi Aplikasi Load Balancing 4.5.1 Konfigurasi HAProxy Dalam konfigurasi haproxy, hal yang harus diperhatikan to userKarena haproxy bertugas untuk adalah penempatan commit ip address.
53
perpustakaan.uns.ac.id
digilib.uns.ac.id
mengatur antrian request dari client untuk diteruskan ke web server. Jadi beban traffic dari request yang banyak atau berlebihan, tidak akan menyebabkan web server menjadi down. Sebab, haproxy membatasi traffic yang masuk dengan jumlah maksimal request tertentu. Konfigurasi haproxy seperti berikut : [root@lb] # vi /etc/haproxy/haproxy.cfg #Edit seperti ini global maxconn 4000 daemon defaults timeout client 86400000 timeout connect 86400000 timeout server 86400000 timeout queue 86400000 listen
http_web 192.168.200.1:80 mode http balance roundrobin option httpchk option forwardfor server node1 10.10.10.2:80 weight 20 maxconn 500 check server node2 10.10.10.3:80 weight 50 maxconn 1250 check
Gambar 4.44 Konfigurasi HAProxy Penjelasan : global a). maxconn 4000
: maksimal koneksi konkuren yang dapat dilayani sejumlah 4000.
b). daemon
: mode untuk menganjurkan operasi.
defaults a). timeout client 86400000
: mengatur waktu tidak aktif maksimum pada sisi client.
commit to user
54
perpustakaan.uns.ac.id
digilib.uns.ac.id
b). timeout connect 86400000 : mengatur waktu maksimum untuk menunggu upaya koneksi ke server untuk berhasil. c). timeout server 86400000 : mengatur waktu tidak aktif maksimum pada sisi server. d). timeout queue 86400000 : mengatur waktu maksimum untuk menunggu dalam antrian untuk slot koneksi bebas. listen a). http_web 192.168.200.1:80 : request yang masuk melalui ip address 192.168.200.1 dan port 80 akan dilayani. b). mode http : permintaan client akan dianalisis secara mendalam sebelum terhubung ke server apapun. Setiap perrmintaan yang bukan http akan ditolak. c). balance roundrobin : algoritma load balance yang menggunakan setiap server secara bergiliran, sesuai dengan bobot yang diberikan. d). option httpchk
: mengaktifkan protokol http untuk memeriksa kondisi server.
e). option forwardfor : menggantikan ip client dengan nilai yang mewakili alamat client untuk dimasukkan ke dalam log server. f). server node1 10.10.10.2:80 weight 20 maxconn 500 check : mendeklarasikan server di backend yang memiliki hostname node1, ip address 10.10.10.2 yang melalui port 80 dengan angka beban traffic 20 dan maksimal koneksi konkuren yang dilayani sejumlah 500. Server ini akan di cek setiap saat. g). server node2 10.10.10.3:80 weight 50 maxconn 1250 check : mendeklarasikan server di backend yang memiliki hostname commit to user node2, ip address 10.10.10.3 yang melalui port 80 dengan angka
55
perpustakaan.uns.ac.id
digilib.uns.ac.id
beban traffic 50 dan maksimal koneksi konkuren yang dilayani sejumlah 1250. Server ini akan di cek setiap saat. Haproxy merespon request dari client berupa http melalui ip gateway yang diberikan untuk client pada load balance yakni 192.168.200.1. Kemudian request http akan diteruskan haproxy menuju ke server backend yang memiliki ip address 10.10.10.2 dan 10.10.10.3 melalui port 80. Web server akan merespon request yang diteruskan haproxy kembali ke haproxy lagi dan disampaikan ke client berupa http.
4.6
Pengujian dan Testing 4.6.1 Pengujian Sinkronisasi File Tahap ini adalah untuk menguji sinkronisasi file dari keseluruhan konfigurasi yang sudah dilakukan. Pertama, membuat file dengan nama pengujian_sinkronisasi_file di dalam folder /var/www/html/ pada node2 seperti berikut :
Gambar 4.45 Pengujian Sinkronisasi File pada node2
Kemudian cek keberadaan file pengujian_sinkronisasi_file pada node1. Harusnya file tersebut sudah tersinkronisasi diantara kedua web server.
commit to user
56
perpustakaan.uns.ac.id
digilib.uns.ac.id
Gambar 4.46 Pengujian Sinkronisasi File pada node1
4.6.2
Pengujian Sinkronisasi Database Tahap ini adalah tahap untuk menguji sinkronisasi database pada kedua web server. Pertama membuat database dengan nama pengujian_sinkronisasi_database pada node1 seperti berikut :
Gambar 4.47 Pengujian Sinkronisasi Database pada node1
commit to user
57
perpustakaan.uns.ac.id
digilib.uns.ac.id
Kemudian
cek
keberadaan
database
pengujian_sinkronisasi_database pada node2. Harusnya database tersebut sudah tersinkronisasi diantara kedua web server.
Gambar 4.48 Pengujian Sinkronisasi Database pada node2
Setelah melakukan transaksi database, field di dalam tabel belum sama diantara kedua web server. Untuk menyamakan fieldnya harus dilakukan restart mysql di kedua web server, setelah itu seluruh field baru bisa sinkron atau sama di kedua web server. Oleh karena itu, diharapkan menggunakan ocfs2 versi terbaru yang sudah ditambahkan fitur untuk meng-up-to-date-kan isi database-nya. 4.6.3
Pengujian Failover Cluster Failover cluster merupakan teknik untuk mendistribusikan kinerja dari satu server ke server yang lainnya. Jika salah satu server commit to user
58
perpustakaan.uns.ac.id
digilib.uns.ac.id
down, maka server lainnya akan menggantikan kinerja dari server yang down. Berikut adalah pengujian web server ketika semua web server sedang dalam kondisi up.
Gambar 4.49 Ping ke node1
Gambar 4.50 Ping ke node2 Dari gambar 4.49 dan gambar 4.50 diatas, dapat dijelaskan bahwa kondisi web server node1 maupun node2 sedang dalam kondisi up. Akses ke joomla seperti berikut. (lihat gambar 4.51)
commit to4.51 userAkses Joomla Gambar
59
perpustakaan.uns.ac.id
digilib.uns.ac.id
Apabila web server pada node1 dimatikan, akses ke joomla masih tetap dapat diakses. Berikut adalah kondisi web server node1 sedang down.
Gambar 4.52 Ping dari node2 ke node1 Gagal
Dari gambar 4.52 diatas, dapat dijelaskan bahwa node1 down, ping dari node2 ke node1 menjadi gagal. Destination Host Unreachable menandakan bahwa node1 sedang dalam keadaan mati. Namun, client masih tetap dapat mengakses joomla dengan nyaman. (lihat gambar 4.53)
Gambar 4.53 Akses Joomla dengan nyaman
commit to user
60
perpustakaan.uns.ac.id
digilib.uns.ac.id
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
commit to user
perpustakaan.uns.ac.id
digilib.uns.ac.id
Berdasarkan persentase pengujian completed request, hasil dari jumlah total request yang dilayani web server node1 dan web server node2 tidak sama dengan total request load balancing. Hal ini disebabkan dari adanya parameter weight, maxconn dan check pada konfigurasi haproxy di bagian listen. Sebelum request diteruskan ke masing-masing web server, haproxy mengecek terlebih dahulu parameter weight, maxconn dan check. Adanya parameter ini, menyebabkan jumlah total request yang dilayani web server node1 dan web server node2 tidak sama dengan total request load balancing. Mengambil data dari persentase pengujian completed request pada pengujian kesepuluh, menghasilkan jumlah total request yang dilayani web server node1 sebanyak 2,7%, web server node2 sebanyak 8,5%, sedangkan load balancing sebanyak 10%. Hal ini menunjukkan bahwa jika menggunakan sistem load balancing dan failover cluster, menambah lebih banyak jumlah request yang dilayani oleh server load balancing.
commit to user
64