2010年7月25日 星期日

網路版RAID1:運用DRBD實現MySQL即時同步與備援切換

http://www.netadmin.com.tw/article_content.asp?sn=1007200009
文.徐秉義
原題名: 網路版RAID1,打造高可用性,運用DRBD實現MySQL,即時同步與備援切換

DRBD(全名為Distributed Replicated Block Device)能夠即時複製(Replicated)區塊裝置(Block Device)到網路上另一台電腦的Block Device以達到高可用性的目的,簡單的說,就是「網路版的RAID1」。
將MySQL Server的Data File放到DRBD上,配合Heartbeat控管,可做到MySQL Server高可用性的即時同步與Failover備援切換。本文就是以MySQL搭配DRBD與Heartbeat來實現高可用性(High Availability)。

環境準備

此範例須建立兩台Server,作業系統版本為CentOS 5.4 x86_64,主機名稱(Host Name)分別為Server1和Server2。其架構圖如下:

Server1(Master) eth0 192.168.1.31(外部IP) eth1 192.168.100.31 (與Server2對接,用作 DRBD傳輸) eth0:0 192.168.1.30 (由Heartbeat控管,作為提供服務之IP) /dev/sda(系統磁碟) /dev/sdb(放置data file之磁碟)

Server2(Slave) eth0 192.168.1.32(外部IP) eth1 192.168.100.32 (與Server1對接,用作DRBD傳輸) eth0:0 192.168.1.30 (由Heartbaet控管,作為提供服務之IP) /dev/sda(系統磁碟) /dev/sdb(放置data file之磁碟)

磁碟分割

分別在Server1與Server2主機上使用指令「fdisk /dev/sdb」,來分割第二顆磁碟,新增一個同樣大小的分割區(Partition)。磁碟分割後,先不要格式化。

安裝必要軟體

先使用指令「yum list | grep drbd」找到相關軟體後,再使用指令「yum install -y drbd83 kmod-drbd83」安裝DRBD應用程式。

接著執行指令「yum list | grep heartbeat」找到相關軟體,然後使用指令「yum install -y heartbeat heartbeat-ldirectord heartbeat-pils heartbeat-stonith」安裝Heartbeat應用程式。

觀察右上角這張圖片之後可以發現,雖然看似已經成功安裝好Heartbeat,但實際測試後卻發覺它並沒有安裝好,必須再執行一次「yum install -y heartbeat」指令。

隨後,使用指令「yum list | grep mysql」找到相關軟體,並輸入指令「yum install -y mysql-server」安裝MySQL Server。但須注意的是,以上的應用程式,在Server1與Server2上都必須安裝才行。

設定範例

接下來示範相關設定檔案,實際操作一次,讀者就可以深入了解了。

設定hosts

首先開啟「/etc/hosts」編寫如下圖的內容。編寫完成之後,可以利用scp指令將「/etc/hosts」直接複製至Server2。

這裡要特別提醒的是,DRBD、Heartbeat對於伺服器節點(Node)之間溝通是使用主機名稱解析IP的方式,這個主機名稱其實是執行指令 「uname -n」的結果,如果DNS Server沒有將其正確解析,強烈建議寫到兩台主機的「/etc/hosts」檔案內(就像上述設定一樣)。

通常主機名稱都是命名成標準FQDN方式,例如server1.example.com、server2.example.com,如此DRBD與 Heartbeat設定內有關主機名稱的部分也都要跟著修改正確(與「uname -n」執行的結果一樣),此時的「/etc/hosts」內容示範如下:

127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.31 server1.example.com server1 192.168.1.32 server2.example.com server2

簡單來說,也就是主機名稱一定要能夠解析出IP位址才行。

設定MySQL

開啟「/etc/my.cnf」修改內容如下。此設定是為了要將MySQL資料改放到「/db」目錄下,也就是DRBD磁碟的掛載點下。

編寫完成後,可將「/etc/my.cnf」直接scp複製至Server2。

接著,使用指令「mkdir /db」建立目錄。最後,Server1與Server2兩台主機要一併改設定檔和建立目錄。

(更多精采文章詳見網管人第54期)