Artikel ini sebenarnya adalah rencana proyek penulis pada Sebuah Kementerian RI disalah satu divisinya, karena waktu itu sebagai syarat kelulusan salah satunya adalah membuat Tugas Akhir (TA) ya sudah sekalian saja =). Ini dokumen penulis beberapa tahun silam sewaktu mengambil program D3, tidak terlalu kompleks, yang semoga bisa berguna bagi yang membutuhkannya.
Sebelum memulai, ada baiknya penulis menjabarkan secara singkat definisi dan fungsi dari Heartbeat dan DRBD, karena software open source inilah yang kali ini akan kita gunakan untuk membangun High Available Server, Juga apa yang dimaksud dengan clustering dan Failover Clustering, dan bagaimana cara kerjanya.
Heartbeat
Heartbeat adalah Linux High Available yang menggunakan teknik cluster, yang bisa digunakan untuk pada beberapa sistem operasi seperti Linux, FreeBSD, OpenBSD, Solaris, MacOS. yang mengunggulkan kehandalan, ketersediaan, dan serviceability (RAS). Proyek dari Linux-HA yang berlisensi GPL. Berikut fitur yang di usung oleh Heartbeat:
DRBD (Distributed Replicated Block Device) adalah sistem penyimpanan didistribusikan untuk platform GNU / Linux. Terdiri dari modul kernel, aplikasi userspace beberapa manajemen dan beberapa script shell dan biasanya digunakan pada cluster High Availability (HA). DRBD mirip dengan RAID 1, kecuali bahwa ia berjalan melalui jaringan.adalah sistem distribusi storage untuk GNU/Linux. DRBD mengacu pada baik perangkat lunak (kernel modul dan userspace yang terkait), dan juga untuk spesifik perangkat blok logis dikelola oleh perangkat lunak. DRBD bisa digunakan untuk replikasi:
Sebelum memulai, ada baiknya penulis menjabarkan secara singkat definisi dan fungsi dari Heartbeat dan DRBD, karena software open source inilah yang kali ini akan kita gunakan untuk membangun High Available Server, Juga apa yang dimaksud dengan clustering dan Failover Clustering, dan bagaimana cara kerjanya.
Heartbeat
Sumber gambar: Linux-Ha Project |
- Tidak ada jumlah maksimum tetap untuk jumlah node yang digunakan,
- Resource dapat secara otomatis restart atau pindah ke node lain pada kegagalan,
- Bisa menghapus node gagal dari cluster,
- Kebijakan yang canggih untuk manajemen resource, antara sumber daya dan kendala,
- Memungkinkan kebijakan yang berbeda berdasarkan waktu,
- Sudah menyediakan berbagai macam script (untuk Apache, DB2, Oracle, PostgreSQL dll).
Sumber gambar: LINBIT |
- Conventional file system,
- Shared disk file system seperti GFS or OCFS2,
- Logical block device lainnya (seperti yang digunakan LVM, misalnya),
- aplikasi apa saja yang membutuhkan akses langsung ke block device.
DRBD berbasis cluster sering digunakan untuk menambahkan replikasi sinkron dan High Availability untuk file server, database relasional (seperti MySQL), dan beban kerja lainnya. Inilah mengapa penulis menggunakan DRBD sebagai replicator untuk database yang penulis gunakan adalah MySQL.
Clustering
Clustering
Dalam dunia komputer yang dimaksud dengan Server Clustering adalah menggunakan lebih dari satu server yang menyediakan redundant interconnections, sehingga user hanya mengetahui ada satu sistem server yang tersedia dan komputer client tidak menyadari jika terjadi kegagalan pada sistem server karena tersedianya server sebagai redundant atau backup. Clustering Server dapat digunakan untuk Load Balancing (biasanya aktif-aktif ) cluster ataupun Failover clustering (biasanya aktif-pasif).
Failover Clustering
Failover Clustering
Failover clustering menyediakan solusi high availability server dimana jika terjadi kegagalan pada sistem hardware seperti power supply mati yang menyebabkan server mati total maka server lain anggota cluster yang akan mengambil alih fungsi dari server yang mati, sehingga komputer client tidak mengetahui jika terjadi kegagala pada server, karena proses yang dilakukan pada server yang gagal atau mati akan dilanjutkan oleh server backup. Konsep konfigurasi failover cluster adalah membuat satu server sebagai master server dan server yang lain menjadi slave server dimana saat server dalam keadaan normal master server menangani semua request dari client. Slave server akan mengambil alih tugas master server apabila master server tidak berfungsi atau mati.
Implementasi
Setelah memahami cara kerja, saatnya kita implementasi, aplikasi yang akan kita buat HA adalah samba.
Berikut beberapa persiapan yang harus diperhatikan sebelum membangun Failover Clustering:
Implementasi
Setelah memahami cara kerja, saatnya kita implementasi, aplikasi yang akan kita buat HA adalah samba.
Berikut beberapa persiapan yang harus diperhatikan sebelum membangun Failover Clustering:
- Backup dahulu semua data yang ada ke dalam media selain yang akan kita gunakan.
- Usahakan besar HDD di kedua server sama, atau jika tidak masing-masing HDD memiliki jumlah block yang sama.
- Jika menggunakan firewall kita harus membuka port 7788 (DRBD) dan 694 (Heartbeat) agar cluster bisa berjalan dengan baik.
- Pastikan service samba terinstall dan berjalan dengan baik.
Berikut spesifikasi informasi sistem yang penulis gunakan:
1. 2 buah Server x3250 M2
Spesifikasi Perangkat Keras Server IBM system x3250 M2
Berikut gambar rancangan H.A:
1. 2 buah Server x3250 M2
Sumber gambar: Penulis |
- No.Alat-alatSpesifikasi1.ProcessorIntel Core2Duo E4600 @2.40GHz2.Memory4 GHz DDR23.HarddiskST3320/13AS 320 GB-WDC WD2500YS-23SHB0 250 GB4.NICGigabit Ethernet5.VGAVGA ATI ES1000
2. 2 Buah Switch
Sumber gambar: Penulis |
Spesifikasi Switch SR216
No. |
Keterangan
|
1. | 24 port 10/100 RJ-45 ports dengan support automatic MDI/MDI-X cable detection |
2. | Kapasitas switching sebesar 4,8 Gbps |
3. | dengan support automatic MDI/MDI-X cable detection |
4. | Menggunakan advanced store-and-forward packet switching untuk optimalisasi data transfer |
Berikut gambar rancangan H.A:
Sumber gambar: Penulis |
- Setting
di kedua server yang akan dijadikan server dengan IP sebagai
berikut:
No.
|
Hosname
|
eth0
|
eth1
|
1.
|
server-a
|
192.168.0.1
|
10.0.0.1
|
2.
|
server-b
|
192.168.0.2
|
10.0.0.2
|
- Pertama install Heartbeat
[root@server-a
~]# yum -y install heartbeat
- Konfigurasi Heartbeat di kedua server seperti dibawah ini :
[root@server-a~]#
vi /etc/ha.d/ha.cf
Logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node server-a
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node server-a
node
server-b
[root@server-a~]#
vi
/etc/ha.d/haresources
Server-a
192.168.0.100 drbddisk::testing
Filesystem::/dev/drbd0::/mnt/drbd::ext3 samba
[root@server-a~]#
vi
/etc/ha.d/authkeys
auth 1
1 md5 S1mp@naku
auth 1
1 md5 S1mp@naku
4. Ubah permission authkeys dulu:
[root@ server-a ~]# /chmod 600 /etc/ha.d/authkeys
alasanya adalah karena ini adalah authkeys, dimana dengan keys ini, host dapat connect ke dalam cluster kita, ini bahaya sekali. saya belum ada penerapan enkripsi disini.
5.
Jalan heartbeat di kedua server / node, server a dan server b:
[root@
server-a
~]# /etc/rc.d/init.d/heartbeat start
Starting
High-Availability services:
[ OK ]
[root@ server-a ~]# chkconfig heartbeat on
[ OK ]
[root@ server-a ~]# chkconfig heartbeat on
6. Instalasi DRBD :
[root@
server-a
~]# yum
install drbd82 kmod-drbd82
7. Buat partisi harddisk di kedua node sesuai kebutuhan. Ukurannya
harus sama, tidak boleh berbeda. Software partisi dapat menggunakan
LVM, gparted, fdisk atau parted. Pastikan partisinya belum diisi
Filesystem terlebih dahulu, biarkan dalam format raw. Disini saya
berasumsi sudah dibuat partisi LVM, /dev/VolGroup00/voldrbd/
8. Konfigurasi DRBD
di kedua server seperti dibawah ini:
[root@
server-a
~]# vi /etc/drbd.conf
global {usage-count
ask;}
common { syncer { rate 10M; } }
resource DEPHUB {
protocol C;
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
}
startup {
wfc-timeout 40;
degr-wfc-timeout 120; # 2 minutes.
}
disk { on-io-error detach; }
net {
timeout 60; # 6 seconds (unit = 0.1 seconds)
connect-int 10; # 10 seconds (unit = 1 second)
ping-int 10; # 10 seconds (unit = 1 second)
max-buffers 2048;
max-epoch-size 2048;
cram-hmac-alg "md5";
shared-secret "tes_DRBD";
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 10M;
al-extents 257;
}
on server-a {
common { syncer { rate 10M; } }
resource DEPHUB {
protocol C;
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
}
startup {
wfc-timeout 40;
degr-wfc-timeout 120; # 2 minutes.
}
disk { on-io-error detach; }
net {
timeout 60; # 6 seconds (unit = 0.1 seconds)
connect-int 10; # 10 seconds (unit = 1 second)
ping-int 10; # 10 seconds (unit = 1 second)
max-buffers 2048;
max-epoch-size 2048;
cram-hmac-alg "md5";
shared-secret "tes_DRBD";
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 10M;
al-extents 257;
}
on server-a {
device
/dev/drbd0;
disk /dev/VolGroup00/voldrbd;
address 192.168.0.1:7788;
meta-disk internal;
}
on server-b {
disk /dev/VolGroup00/voldrbd;
address 192.168.0.1:7788;
meta-disk internal;
}
on server-b {
device
/dev/drbd0;
disk /dev/VolGroup00/voldrbd;
address 192.168.0.2:7788;
meta-disk internal;
}
}
disk /dev/VolGroup00/voldrbd;
address 192.168.0.2:7788;
meta-disk internal;
}
}
9. Jalankan service
DRBD
[root@server-a ~]# /etc/init.d/drbd start
[root@server-a ~]# /etc/init.d/drbd start
10. Set partisi
menjadi partisi primary:
[root@server-a ~]# drbdadm -- --overwrite-data-of-peer primary all
[root@server-a ~]# drbdadm -- --overwrite-data-of-peer primary all
11. Buat
filesystem:
[root@server-a ~]# mkfs.ext3 /dev/drbd0
[root@server-a ~]# mkfs.ext3 /dev/drbd0
12. Mount
filesystem:
[root@server-a ~]# mkdir /mnt/drbd/[root@server-a ~]# mount /dev/drbd0 /mnt/drbd
[root@server-a ~]# mkdir /mnt/drbd/[root@server-a ~]# mount /dev/drbd0 /mnt/drbd
[root@server-a
~]# cd /mnt/drbd/| touch contohfile.txt
13. Di server-b atau
secondary, lakukan langkah berikut ini:
Membuat metadata:
[root@server-b ~]# drbdadm create-md all
Membuat metadata:
[root@server-b ~]# drbdadm create-md all
[root@server-b
~]#
/etc/init.d/drbd start
Setelah dijalankan, partisi secondary ini akan memulai singkronisasi
atau mengkopi data dari node primary ke node secondary, tunggu hingga
selesai. Untuk melihat proses singkronisasi tersebut, digunakan
perintah:
[root@server-b
~]#
cat /proc/drbd
Proses
akan selesai Jika terlihat seperti ini:
Connected
Primary/Secondary UpToDate/UpToDate C /mnt/drbd/
ext3
Uji Coba
Berikut bagaimana penulis menguji coba failover cluster, mungkin akan sadis =D, tapi beginilah seharusnya mengetest sebuah sistem sebelum launch ke production =D. Sebelumnya masukan file mp3 atau film kedalam mount samba.
akses mount point samba yaitu /mnt/drbd dari linux, kemudian mainkan file mp3 tersebut, setelah berjalan beberapa saat,
1. skenario pertama:
kill -9 PID samba, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
Uji Coba
Berikut bagaimana penulis menguji coba failover cluster, mungkin akan sadis =D, tapi beginilah seharusnya mengetest sebuah sistem sebelum launch ke production =D. Sebelumnya masukan file mp3 atau film kedalam mount samba.
akses mount point samba yaitu /mnt/drbd dari linux, kemudian mainkan file mp3 tersebut, setelah berjalan beberapa saat,
1. skenario pertama:
kill -9 PID samba, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
2. skenario ke dua:
cabut saja kabel server-a kita dari switch, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
cabut saja kabel server-a kita dari switch, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
3. skenario ke tiga:
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
4. skenario ke empat:
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
5. skenario ke lima:
Cabut power server-a =D, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
Sekian artikel ini, biar dokumen lama, semoga bisa berguna.
Cabut power server-a =D, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
Sekian artikel ini, biar dokumen lama, semoga bisa berguna.