DRBD與Heartbeat是個能簡單打造Linux伺服器高可靠性的自由軟體, DRBD(Distributed Replicated Block Device)其實就是透過網路達成的兩台伺服器指定的磁區鏡像, 而Heartbeat則是監控服務狀態, 當某一機器出問題時, 切換到另一台機器上繼續服務。

在本文我們利用DRBD與Heartbeat, 來建構高可靠性的MySQL資料庫伺服器, 示範裡會需要兩台機器, 三個IP位址, 我使用了VMware來模擬, 在各位正式嘗試時, 建議使用規格相同的伺服器。

本系列文章將分成四段, 避免過於冗長, 方便各位閱讀:
一、DRBD安裝與設定
二、MySQL資料庫安裝與設定
三、Heartbeat服務監測安裝與設定
四、MySQL資料庫伺服器Master-Slave Replication安裝與設定


我各別裝好兩台Debian 7.6為作業系統的Linux伺服器, 4GB記憶體, 40GB的硬碟空間, 第一台online伺服器我命名db1為hostname, IP是192.168.1.190, 所以第二台standby角色的伺服器命名為db2, 給它IP位址192.168.1.191, 而192.168.1.192準備給MySQL伺服器服務使用。

硬碟磁區劃分為:
/ 根目錄8GB, 指定在硬碟最前面開始分割。
swap 4GB, 指定在硬碟最後面開始分割。
/srv 20GB, 接著根目錄之後。
/home 11GB, 接著/srv目錄之後。

/srv目錄會用來給DRBD, 後續做為MySQL資料檔案與其暫存檔所使用。

安裝DRBD
使用apt-get命令來安裝DRBD套件。
apt-get install drbd8-utils



apt-get會詢問是否要安裝, 按下"Y"開始進行下載DRBD與安裝程序。

修改/etc/drbd.d/global_common.conf內容
原本就已經有global_common.conf, 可以刪除並放入以下內容即可。
global {
        usage-count no;
}
common {
        protocol C;
}


卸載/srv磁區
我們不需要/srv了, 後續會重新處理它成為DRBD所使用的磁區, 先卸載它。
umount /srv


修改/etc/fstab
nano /etc/fstab

將/srv從fstab中移除, 註解起來也可以, 加個"#"號即可, 例如:
#UUID=fcfd7b55-8808-4941-9fd8-504e893fecd9 /srv xfs noatime 0 2

UUID後的數值會依機器不同而有異, 所以看到關鍵字"/srv"這行就是了。

設定resource: r0.res檔
我將resource命名為r0, 故給r0.res檔名。
nano /etc/drbd.d/r0.res

貼上以下設定:
resource r0 {
        meta-disk internal;
        device /dev/drbd0;

        on db1 {
                disk /dev/sda3;
                address 192.168.1.190:7789;
        }

        on db2 {
                disk /dev/sda3;
                address 192.168.1.191:7789;
        }
}

db1與db2個別是我們的主機hostname, 可以注意"disk /dev/sda3;"的設定, 請依照您實際分割的磁區代號設定。

載入DRBD
modprobe drbd


建立resource r0
將/dev/sda3磁區前面清乾淨, 讓drbdadm可以建立resource r0
dd if=/dev/zero of=/dev/sda3 bs=1k count=1024

接著建立resource r0
drbdadm create-md r0


啟動DRBD
drbdadm up r0

主要伺服器(db1)需要複寫整個r0資源, 但是預備伺服器(db2)不需要做此動作。
drbdadm -- --overwrite-data-of-peer primary r0

接著將/dev/drbd0格式化為XFS, 這種檔案系統有著高性能, 很適合資料庫使用, db2也不需要做此動作。
mkfs.xfs /dev/drbd0



如果乾淨的系統上沒mkfs.xfs工具程式, 用下列方法安裝:
apt-get install xfsprogs



檢視/proc/drbd可以看鏡像磁區的同步狀況, 這是在預備伺服器(db2)也就是畫面所示的Secondary
cat /proc/drbd


回到Primary(db1), 藉由drbdsetup指令來加速同步速度
drbdsetup /dev/drbd0 syncer -r 100M

其中的參數值"100M"代表100Mbytes/sec, 適合1Gbps的gigabit ethernet環境


Primary server掛載/dev/drbd到/srv
mount -o noatime,nodiratime /dev/drbd0 /srv

順便也觀察DRBD的磁區同步進度, 範例只有20GB, 所以很快就完成了。


再回到Secondary(db2), 確認也是已完成同步狀態(UpToDate/UpToDate)

DRBD的安裝到此完成, 次回: MySQL資料庫安裝與設定
Mobile01 FB粉絲團 http://www.facebook.com/TheMobile01