Jul 292009
 

Apa itu DRBD? Dan apa pula hubungannya dengan HA? Coba jalan-jalan ke sini dulu.

Pada dasarnya DRBD adalah software untuk sinkronisasi data tetapi pada level block device, yaitu level dibawah filesystem. Jadi membuat filesystem-pun akan disinkronkan. Sinkronisasi pada level block device ini diperlukan (tetapi tidak harus) agar HA bisa lebih mulus pergantian komputernya.

OK, langsung ke hardware dan konfigurasinya yang diperlukan untuk drbd. Pertama-tama tentu partisi yang akan disinkronkan, berikut hasil perintah ‘fdisk -l’ dari kedua komputer:

[root@hb1 ~]# fdisk -l
....
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1305    10482381   83  Linux
/dev/hda2            1306        1436     1052257+  82  Linux swap / Solaris
/dev/hda3            1437        2564     9060660   83  Linux
[root@hb2 ~]# fdisk -l
....
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1305    10482381   83  Linux
/dev/hda2            1306        1370      522112+  82  Linux swap / Solaris
/dev/hda3            1371        2498     9060660   83  Linux

Perhatikan, walau besar kedua hardisk berbeda, besar partisi (hda3) yang akan dipakai harus sama persis (1127 blok).

Selanjutnya saya menggunakan 2 kartu jaringan di masing-masing komputer. Berikut hasil ‘ifconfig’ dari kedua komputer:

[root@hb1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          ....

eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.0.0.11  Bcast:10.0.0.255  Mask:255.255.255.0
          ....
[root@hb2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          ....

eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.0.0.12  Bcast:10.0.0.255  Mask:255.255.255.0
          ....

eth0 akan terhubung ke jaringan lokal dan eth1 akan saling terhubung dengan kabel kros, dengan kata lain kedua komputer punya jalur pribadi lewat eth1. Kenapa hal ini perlu dilakukan? Tipe sinkronisasi yang dipilih memerlukan bandwidth yang cukup besar, agar tidak mengganggu jaringan lokal maka perlu dipisahkan lewat jalur pribadi ini. Untuk men-tes apakah jalur ini telah berfungsi lakukan ping ke IP dari eth1 komputer lainnya.

Hardware dan setingan yang diperlukan sudah, sekarang ke file konfigurasi. File yang dipakai adalah /etc/drbd.conf. Berikut isi drbd.conf dari kedua komputer:

global {
  usage-count yes;
}
common {
  protocol C;
}
resource r0 {
  device    /dev/drbd1;
  meta-disk internal;
  net {
    after-sb-0pri discard-younger-primary;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
  }
  on hb1 {
    address   10.0.0.11:7789;
    disk      /dev/hda3;
  }
  on hb2 {
    address   10.0.0.12:7789;
    disk      /dev/hda3;
  }
}

Penjelasan singkatnya sebagai berikut:

protocol C; Ini adalah protokol yang digunakan drbd untuk sinkronisasi, C adalah Synchronous mirroring, oleh karena itu kita memerlukan jalur pribadi untuk tipe ini.
resource r0 adalah nama resource yang akan selalu digunakan sebagai parameter ketika memanggil fungsi-fungsi drbd.
device /dev/drbd1; Device ini yang akan kita gunakan ketika melakukan mount
Opsi didalam net{} digunakan untuk menangani masalah split brain.

  on hb1 {
    address   10.0.0.11:7789;
    disk      /dev/hda3;
  }

Ini adalah konfigurasi untuk komputernya, masing-masing disesuaikan dengan setingan komputer.
address 10.0.0.11:7789; adalah IP jalur pribadi dengan port standar drbd.
disk /dev/hda3; adalah partisi yang digunakan oleh drbd.

Setelah selesai dengan file konfigurasi tersebut, kita akan melakukan langkah pendahuluan untuk menghidupkan drbd ini. Perintah-perintah berikut dilakukan di kedua komputer.
Membuat device metadata:

[root@hb1 ~]# drbdadm create-md r0
....
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

Memasang backup device dan menyetel parameter sinkronisasi:

[root@hb1 ~]# drbdadm attach r0
[root@hb1 ~]# drbdadm syncer r0

Untuk centos, sebelum memasang backup device perlu ‘modprobe drbd’ dulu. Setelah proses inisialisasi selesai maka loading kernel driver akan dilakukan oleh service drbd.
Selanjutnya adalah mengkoneksi kedua komputer:

[root@hb1 ~]# drbdadm connect r0

Untuk melihat status setelah prosedur diatas silahkan lihat isi file /proc/drbd:

[root@hb1 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32

 1: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:9060344

“cs:Connected” berarti kedua drbd sudah terkoneksi, “st:Secondary/Secondary” berarti status dari keduanya adalah secendary semua, nantinya harus ada yang jadi primary, yang didepan adalah drbd dari komputer tempat melihat status ini, “ds:Inconsistent/Inconsistent” berarti disk status inconsistent, pada saat ini adalah normal, nantinya kita perlu sinkronkan manual dulu.

Proses selanjutnya adalah mengsinkronkan pertama kali. Kalau kita memulai dari partisi kosong proses ini bisa dimulai dari komputer mana saja, tetapi satu komputer partisi yang dipakai sudah berisi data maka harus dimulai dari komputer tersebut, kalau tidak data akan hilang!

[root@hb1 ~]# drbdadm -- --overwrite-data-of-peer primary r0

Untuk melihat prosesnya bisa lewat /proc/drbd lagi:

[root@hb1 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32

 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
    ns:6016 nr:0 dw:0 dr:6016 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:9054328
	[>....................] sync'ed:  0.1% (8842/8847)M
	finish: 7:11:09 speed: 348 (332) K/sec

Yak, sedang berjalan, tunggu sampai selesai, 7 jam? itu baru 8847 MB ;-) Perhatikan bahwa status (st) berubah menjadi Primary/Secondary dan disk state (ds) menjadi UpToDate/Inconsistent.

Setelah sinkronisasi pertama selesai mari kita coba. Partisi yang dipakai drbd belum di format, maka perlu kita format dulu sebelum dipakai. Perhatikan bahwa kita hanya perlu memformat pada komputer yang status drbd-nya primary, yang secondary akan tersinkronisasi (bahkan pada level pembuatan file system ;-) ). Perhatikan juga device yang kita rujuk bukan lagi /dev/hda3 tetapi /dev/drbd1 seperti yang ada dalam file konfigurasi.

[root@hb1 ~]# mkfs.ext3 /dev/drbd1
mke2fs 1.39 (29-May-2006)
....
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
....

Setelah itu kita buat folder (/drdisk) yang akan menjadi tujuan mount di kedua komputer dan mari kita lakukan tes sederhana.
Di komputer yang jadi primary:

  • mount /dev/drbd1 ke /drdisk
  • buat file
  • umount kembali
  • turunkan role-nya jadi secondary
[root@hb1 ~]# mount /dev/drbd1 /drdisk/
[root@hb1 ~]# echo "just test drbd" >/drdisk/testdrbd
[root@hb1 ~]# umount /drdisk
[root@hb1 ~]# drbdadm secondary r0

Setelah itu kita lakukan langkah berikut di komputer yang awalnya secondary:

  • Naikkan role-nya sebagai primary
  • mount /dev/drbd1 ke /drdisk
  • coba lihat isi /drdisk/testdrbd yang pasti sama dengan komputer satu lagi
[root@hb2 ~]# drbdadm primary r0
[root@hb2 ~]# mount /dev/drbd1 /drdisk/
[root@hb2 ~]# cat /drdisk/testdrbd
just test drbd

Kalau sudah OK, umount dan turunkan role-nya menjadi secondary lagi kalau mau digunakan oleh heartbeat. Selesai memasang DRBD, fuih… ;-)

  8 Responses to “[Seri HA 1] Pasang DRBD”

  1. wow… singkat, padat tp jelas
    Mantap bro…

  2. itu bsa ga mirroting system ga jadi setiap ada perubahan di system utama sama dng system backup..
    thx

  3. @hansen
    bisa yah misalnya qta rsync / ??
    apakah nnti konfigurasi network server A tdk tercopy juga ke Server B ??
    kira2 file konfigurasi apa saja yg ga perlu di rsync ke server B

    thx bang hansen :D

  4. @adhieee
    Kalo mengsinkronkan / akan banyak masalah, mending dipilihin apa saja yang perlu disamaain. Biasanya isi dari /etc dan /var yang bisa disinkronkan. Keperluannya buat apa ya mengsinkronkan konfigurasi? Kalo mau bikin backup server lanjutin aja seri ini ;-)

  5. Mas,, untuk login ke hb_gui, gimana ya mas?

    server apa yang diisi?
    usename ?
    passwordnya apa?

    aq udah selesaiin tahap 3 tapi pengen monitoring pake hb_gui, tapi ga bisa login.
    Mohon pencerahannya…
    Terima kAsih

  6. maaf gan ane masih bingung nih soal sync datanya kalo yg didaftarkan di drbd.confnya itu kan drive hda3 nya ya nah ko yg di format ext drbd0nya ya dan waktu di cek ko datanya ko adanya di drbd0 bukannya di hda3 yah ??

    • DRBD membuat semacam logical volume untuk sinkronisasi ini, yg akan dipakai untuk file system supaya sinkron dengan yg satunya. Kalau kita pakai hda3, isinya gak akan disinkronkan oleh DRBD. Ini semacam LVM, dimana kita memasang file systemnya di logical volume yg LVM buat, bukan partisi hard disk langsung.

Leave a Reply to hansen Cancel reply

%d bloggers like this: