Setelah sebelumnya kita membuat sebuah konfigurasi tentang fail-over server dengan heartbeat di CentOS 5.6 dan CentOS 6.5, kali ini kita akan mencoba melakukan konfigurasi salah satu teman dari heartbeat. Iya, bisa banyak model untuk menerapkan sebuah metode ha-cluster, dan salah satu dasar untuk ha-clusternya adalah simulasi yang akan kita lakukan sekarang. Kalau mau baca, saya sudah pernah membuat satu simulasi High Availability Linux LAMP Server menggunakan Ubuntu 12.04 yang menjadi contoh sederhana sebuah sistem cluster berbasis DRBD+heartbeat.

Apa itu DRBD?

Gak usah dijelasin ya, coz klo udah maenan DRBD, harusnya udah tau klo bwt apa itu DRBD. Tapi klo mau baca-baca lagi ya #AkuRaPoPo…. :p

Silakan dibaca disini http://drbd.org/
atau disini http://en.wikipedia.org/wiki/Distributed_Replicated_Block_Device
Supaya pinter bahasa englishnya. Klo bingung, sarapan roti+keju dulu tiap hari selama satu bulan. Insya Allah deh, bisa kenyang. Hehehehe…. :p

Singkatnya, DRBD adalah sebuah sistem penyimpanan replikasi yang terdistribusi pada platform Linux. Yang mana biasanya DRBD ini digunakan pada sebuah sistem komputer yang menganut aliran cluster / high availability (HA). DRBD juga mengacu pada perangkat blok logical yang disediakan oleh skema dan software yang menerapkannya. Pada dasarnya Distributed Replicated Block Devices alias DRBD adalah sebuah sistem RAID 1 berbasis jaringan. Jika RAID 1 terbatas pada satu buah komputer dan RAID controller, maka DRBD melakukan mirroring melalui jaringan.

Bayar Ga’ Pake Software Mantap ini?

Ngga usah takut, software DRBD bebas untuk digunakan dibawah lisensi GNU General Public License version 2. DRBD merupakan bagian dari Lisog open source stack initiative.

Udah ah basa-basinya, mari kita mulai konfigurasinya.

Sebelum mulai, — lho kok mukadimah lagi? :p — berikut yang harus kita ingat:

  • Catatan waktu antar node yang sinkron via NTP
  • Hak akses dari selinux.
  • Karena DRBD menggunakan port 7788, maka firewall harus meloloskan port tersebut.
  • Perhatikan tulisan [node1] atau [node2] yang menunjukkan perintah dijalankan di komputer mana.

Spesifikasi alat yang akan kita pakai di simulasi ini adalah dua buah VM diatas VirtualBox yang masing-masing VM memiliki konfigurasi:

  • RAM 512 MB;
  • HDD :
    – 20Gb /dev/sda => untuk sistem,
    – 1Gb /dev/sdb => untuk DRBD;
  • NIC : 2 buah (1 untuk ke switch/user, 1 direct antar VM).
  • IP Address:
    – NIC 1 : ditentukan oleh DHCP.
    – NIC 2 : 192.168.116.11 (node1) & 192.168.116.12 (node2).

Mulai Simulasi

Install repo tambahan di kedua komputer (node1 & node2) dan lakukan update sistem:

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
yum update -y

lalu restart kedua komputer.

Install NTP dan update waktu kedua komputer:

yum install ntp -y
ntpdate 0.id.pool.ntp.org

Install paket DRBD di kedua komputer:

yum install -y drbd83-utils kmod-drbd83

Tambahkan modul DRBD di kedua komputer atau restart kedua sistem:

modprobe drbd

Buat partisi di HDD kedua (/dev/sdb).

[@node1]# fdisk -cu /dev/sdb
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0x91361747
   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-2097151, default 2048): [Tekan Enter]
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): [Tekan Enter]
Using default value 2097151
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Lakukan juga pada komputer kedua (node2):

[@node2]# fdisk -cu /dev/sdb
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 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: 0x91361747
   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-2097151, default 2048): [Tekan Enter]
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): [Tekan Enter]
Using default value 2097151
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Membuat File resource (/etc/drbd.d/r0.res)

File ini adalah kunci dari konfigurasi DRBD kita. Memuat informasi partisi mana yang akan dipakai oleh DRBD, IP berapa yang dipakai, dsb… Dalam simulasi ini kita akan menggunakan nama file r0.res, kalau mau nama lain juga boleh, yang penting nama ini yang selalu digunakan pada langkah-langkah berikutnya.

[@node1]# nano /etc/drbd.d/r0.res
resource r0 {
 startup {
  wfc-timeout 30;
  outdated-wfc-timeout 20;
  degr-wfc-timeout 120;
 }
 net {
  cram-hmac-alg sha1;
  shared-secret rahasia;
 }
 syncer {
  rate 100M;
  al-extents 257;
  on-no-data-accessible io-error;
 }
 on node1 {
  device /dev/drbd0;
  disk /dev/sdb1;
  address 192.168.116.11:7788;
  flexible-meta-disk internal;
 }
 on node2 {
  device /dev/drbd0;
  disk /dev/sdb1;
  address 192.168.116.12:7788;
  flexible-meta-disk internal;
 }
}

*Sesuaikan yang dicetak tebal dengan konfigurasi yang kamu punya.

Tambahkan dua baris berikut di file /etc/hosts :

192.168.116.11     node1.karedok.net     node1
192.168.116.12     node2.karedok.net     node2

sehingga file /etc/hosts menjadi:

[@node1]# nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.116.11     node1.karedok.net     node1
192.168.116.12     node2.karedok.net     node2

Copy file /etc/hosts dan /etc/drbd.d/r0.res dari node1 ke node2

[@node1]# scp /etc/hosts node2:/etc/hosts
root@node2's password:
hosts                                   100%  237     0.2KB/s   00:00
[@node1]# scp /etc/drbd.d/r0.res node2:/etc/drbd.d/r0.res
root@node2's password:
r0.res                                  100%  466     0.5KB/s   00:00

Membuat meta data penyimpanan DRBD pada kedua komputer:

[@node1]# drbdadm create-md r0
You want me to create a v08 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on /dev/sdb1 at byte offset 1072689152
Do you really want to overwrite the existing v08 meta-data?
[need to type 'yes' to confirm] yes
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

Lakukan juga pada node2

[@node2]# drbdadm create-md r0
You want me to create a v08 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on /dev/sdb1 at byte offset 1072689152
Do you really want to overwrite the existing v08 meta-data?
[need to type 'yes' to confirm] yes
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

Lihat pada perintah yang dijalankan, r0 adalah panggilan untuk menjalankan file yang kita buat sebelumnya, yaitu r0.res. Kalau menggunakan nama lain misalnya drbd0.res, ya memanggilnya pakai nama file yang sudah dibuat yaitu drbdadm create-md drbd0.

Jalankan service DRBD pada kedua komputer:

[@node1]# service drbd start
Starting DRBD resources: [ d(r0) s(r0) n(r0) ].....
[@node2]# service drbd start
Starting DRBD resources: [ d(r0) s(r0) n(r0) ].

Jalankan perintah sinkronisasi disk dengan menjalankan perintah berikut:

[@node1]# drbdadm -- --overwrite-data-of-peer primary all

Ingat, jalankan perintah tersebut hanya pada node yang akan kita jadikan node Primer. Untuk melihatr proses bisa menggunakan perintah:

[@node1]# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2013-09-27 16:00:43
 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----
    ns:0 nr:49152 dw:49152 dr:0 al:0 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:998332
        [>...................] sync'ed:  5.1% (998332/1047484)K
        finish: 0:01:00 speed: 16,384 (16,384) want: 102,400 K/sec

Jika sudah selesai, ditandai dengan status UpToDate/UpToDate kita akan format harddisk yang dijadikan sebagai DRBD device. Jalankan perintah berikut HANYA PADA NODE PRIMER:

[@node1]# mkfs.ext4 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261871 blocks
13093 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Sekarang device DRBD kita sudah memiliki filesystem. Sampai tahap ini, proses konfigurasi bisa dibilang selesai. Tahap selanjutnya kita akan melakukan pengetesan konfigurasi DRBD kita sudah berjalan.

Tes Konfigurasi

Mount device tersebut pada node primer:

[@node1]# mkdir /data
[@node1]# mount /dev/drbd0 /data

Cek status device dengan perintah:

[@node1]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  1.4G   16G   8% /
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda1             485M   55M  405M  12% /boot
/dev/drbd0           1007M   18M  939M   2% /data

Terlihat kalau /dev/drbd0 sudah terpasang pada folder /data. Yang harus diingat adalah karena konfigurasi kita active/pasif, maka lakukan proses mounting pada node yang sedang dijadikan primer.

Kita akan coba membuat sebuah file pada folder /data. Jika proses drbd berhasil, nantinya file yang kita buat di node primer akan juga berada di node2. Jalankan perintah:

[@node1]# touch /data/ini-file-node1

unmount /dev/drbd0 dari folder /data dan jadikan node1 sebagai node sekunder:

[@node1]# umount /data
[@node1]# drbdadm secondary r0

Ubah node2 menjadi node primer dan lakukan mount /dev/drbd0 ke folder /data :

[@node2]# drbdadm primary r0
[@node2]# mkdir /data
[@node2]# mount /dev/drbd0 /data

Kita akan cek apakah file dari node1 berada disana atau tidak.

[@node1]# ls /data/
ini-file-node1  lost+found

Nah, file yang tadi kita buat yaitu ini-file-node1 ada juga disana. Artinya konfigurasi kita berhasil. 😀

Penutup

Konfigurasi ini hanya untuk konfigurasi dasar DRBD, kita tentunya bisa menggabungkan DRBD dengan Heartbeat untuk membuat sebuah sistem cluster. Jika sudah memahami dasar dari DRBD dan ingin juga mencoba konfigurasi heartbeat silakan baca Konfigurasi Hearbeat Pada CentOS 5.6 atau Konfigurasi Fail Over Server dengan Heartbeat pada CentOS 6.5

Bahan Bacaan:

  • http://www.drbd.org/
  • http://en.wikipedia.org/wiki/Distributed_Replicated_Block_Device
  • http://karedok.net/buku/high-availability-linux-lamp

Mari diskusi

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.