close

DRBD是三小?以下來自wiki的資料
DRBD (Distributed Replicated Block Device) 是 Linux 平台上的分散式儲存系統。其中包含了核心模組,數個使用者空間管理程式及 shell scripts,通常用於高可用性(high availability, HA)叢集。DRBD 類似磁碟陣列的RAID 1(鏡像),只不過 RAID 1 是在同一台電腦內,而 DRBD 是透過網路。

建置一個DRBD的架構,必需要一些條件:
二台以上的伺服器。
每台伺服器中都要再多一個分割區給DRBD同步資料。

DRBD運作時只有一台為Primary並且這台才有權將DRBD的磁區掛載,其餘機器只能同步。

實作

===環境 nodeian DRBD + MySQL=====
*機器一 Hostname: node01 IP: 192.168.1.1
*機器二 Hostname: node02 IP: 192.168.1.2
*HeartBeat 控制服務對外 IP: 192.168.1.3
*對外服務 MySQL

大部分動作兩台都要設定,看情形可以先在一台設定好再將設定檔複製到另外一台

*簡單註明 +node01 node02+ 表示兩台都要做的動作

**DRBD 備份的硬碟分割 +node01 node02+
兩邊的分割大小需相同,不要格式化也不要掛載。

===安裝 DRBD===

安裝 DRBD (node01 node02)

apt-get install drbd*
===設定 DRBD===

設定 DRBD 設定檔 (node01 => node02) node01 設定好複製到 node02

vi /etc/drbd.d/global_common.conf
# 在 syncer 區塊裡加入
rate 100M;
DRBD 資源設定

vi /etc/drbd.d/r0.res
resource r0 {
on node01 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7777;
meta-disk internal;
}
on node02 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7777;
meta-disk internal;
}
}
建立 /dev/drbd0 裝置和資源(node01 node02)

sudo mknod /dev/drbd0 b 147 0
drbdadm create-md r0
===啟動DRBD===
啟動 DRBD 服務 (node01 node02)

/etc/init.d/drbd start
如果遇到 drbd module 無法載入 kernel 的錯誤訊息,請更新系統後再試試。

apt-get update
apt-get dist-upgrade
檢查 DRBD 連線狀態 (node01 node02)

cat /proc/drbd
===進行MySQL on DRBD 磁區同步===

第一次設定主要主機 (only node01) 設定完這個步驟會進行同步,可檢查兩台主機的連線狀態:

# drbdsetup 只有第一次設定需要
# 以後用 drbdadm 即可
drbdsetup /dev/drbd0 primary -o
drbdadm primary r0
* 第一次同步時的注意事項
**一開始設定的 rate 100M ,第一次同步完後可以調整這個 rate ,以免以後 drbd 佔住過多頻寬影響服務效能,通常建議設定頻寬的 30% 。

分割格式化 DRBD 使用的硬碟(node01) ,請等第一次硬碟同步完在進行

# 使用 xfs 格式
apt-get install xfsdump
# 格式化硬碟分割
mkfs.xfs /dev/drbd0
# 掛載分割磁區
mkdir /db
mount -o noatime /dev/drbd0 /db
===更動 MySQL 的資料位置===

停止 MySQL (node01 node02)

/etc/init.d/mysql stop
移動 MySQL 資料 (node01)

mv /var/lib/mysql /db
修改 MySQL 設定 (node01 => node02) ,兩邊的 MySQL 設定也要相同,因此在 node01 改完複製到 node02 上。

vi /etc/mysql/my.cnf
datadir = /db/mysql
#bind-address=127.0.0.1
vi /etc/mysql/nodeian.cnf
datadir = /db/mysql
啟動 MySQL (node01)

/etc/init.d/mysql start
取消開機自動啟動 MySQL (node01 node02) 因為之後要交給 HeartBeat 接管。

mv /etc/rc2.d/S19mysql /etc/rc2.d/K21mysql
===測試 DRBD 同步情形===

on node01 ,先登入 MySQL 做一些修改

mysql -u root -p
create database created_at_node01;
quit;
停止 MySQL

/etc/init.d/mysql stop
卸載 /db

umount /db
將 DRBD 切回 Secondary

drbdadm secondary r0
on node02 ,將 node02 上的 DRBD 切成 Primary

drbdadm primary r0
掛載 /dev/drbd0 到 /db

mount /dev/drbd0 /db
啟動 MySQL

/etc/init.d/mysql start
檢查在 node01 的修改是否有同步過來

mysql -u root -p
show databases;

arrow
arrow
    文章標籤
    drbd linux mysql ha ubuntu
    全站熱搜
    創作者介紹
    創作者 echochio 的頭像
    echochio

    echochio

    echochio 發表在 痞客邦 留言(0) 人氣()