紅帽企業存儲管理之DRBD應用詳解

 紅帽企業存儲管理之DRBD應用詳解node

軟件包下載地址:http://down.51cto.com/data/402474centos

DRBD基礎知識詳解(概念和安裝)api

磁盤鏡像技術DRBD
1 、 什麼是DRBD?
    DRBD 是由內核模塊和相關腳本而構成,用以構建高可用性的集羣。其實現方式是經過網絡來鏡像整個設備。它容許用戶在遠程機器上創建一個本地塊設備的實時鏡像。與心跳鏈接結合使用,也能夠把它看做是一種網絡RAID。
2 、DRBD是如何工做的?
    Drbd 負責接收數據,把數據寫到本地磁盤,而後發送給另外一個主機。另外一個主機再將數據存到本身的磁盤中。目前,drbd 每次只容許對一個節點進行讀寫訪問,這對於一般的故障切換高可用性集羣來說已經足夠用了。之後的版本將支持兩個節點進行讀寫存取。
3 、 drbd與如今的HA集羣的關係
    一個drbd系統由兩個以上節點構成,與HA集羣相似,也有主用節點和備用節點之分,在帶有主要設備的節點上,應用程序和操做系統能夠運行和訪問drbd設備(/dev/nbX)。
    在主節點寫入的數據經過drbd設備存儲到主節點的磁盤設備中,同時,這個數據也會自動發送到備用節點相應的drbd設備,最終寫入備用節點的磁盤設備中,在備用節點上,drbd只是將數據從drbd設備寫入到備用節點的磁盤設備中。
    大部分現行高可用性集羣都會使用共享存儲,而Drbd也能夠做爲一個共享存儲設備,使用drbd不須要任何硬件的投資。由於它在IP網絡中運行,因此,利用drbd做爲共享存儲設備,要節約不少成本,由於在價格上IP網絡要比專用的存儲網絡經濟的多。
4 、 DRBD內部實現原理

5 、 DRBD協議說明
A 數據一旦寫入磁盤併發送到網絡中就認爲完成了寫入操做.
B 收到接收確認就認爲完成了寫入操做.
C 收到寫入確認就認爲完成了寫入操做.
6 、drbd設備的三個進程
每一個drbd設備會有三個進程:
drbd0_worker 是drbd0的主要進程,
drbd0_asender 是primary上drbd0的數據發送進程,
drbd0_receiver 是secondary上drbd0的數據接收進程
7 、 DRBD工做原理

8 、 下載DRBD軟件
    DRBD 的官方網站爲:http://www.drbd.org/
    能夠從從官方網站下載源碼包來編譯或直接使用yum源來安裝。

DRBD在企業網絡中的應用服務器

一.案例應用背景網絡

在方案中,經過DRBD保證了服務器數據的完整性和一致性。DRBD相似於一個網絡RAID-1功能。當你將數據寫入本地文件系統時,數據還將會被髮送到網絡中另外一臺主機上,以相同的形式記錄在一個另文件系統中。主節點與備節點的數據能夠保證明時相互同步。當本地主服務器出現故障時,備份服務器上還會保留有一份相同的數據,能夠繼續使用。併發

二.案例應用簡化拓撲圖ssh

軟件包下載地址:http://down.51cto.com/data/402474ide

三.案例應用具體實現步驟:oop

1. 基本配置網站

1.1  node1基本配置&新建磁盤

1.1.1查看系統信息,同步時間

[root@node1 ~]# uname -rv

2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009

[root@node1 ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 5.4 (Tikanga)

[root@node1 ~]# hwclock -s

[root@node1 ~]# date

Wed Feb  8 13:55:50 CST 2012

1.1.2查看主機名稱,修改查看ip地址

[root@node1 ~]# hostname

node1.junjie.com

[root@node1 ~]# cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=node1.junjie.com

[root@node1 ~]#setup

[root@node1 ~]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]

[root@node1 ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AE:83:D1 

          inet addr:192.168.101.211  Bcast:192.168.101.255  Mask:255.255.255.0

1.1.3配置/etc/hosts文件(就不用dns了)

[root@node1 ~]# echo "192.168.101.211 node1.junjie.com node1" >>/etc/hosts

[root@node1 ~]# echo "192.168.101.212 node2.junjie.com node2" >>/etc/hosts

1.1.4構建一個新的磁盤空間有利於實現DRBD技術

[root@node1 ~]# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        1318    10482412+  83  Linux

/dev/sda3            1319        1579     2096482+  82  Linux swap / Solaris

[root@node1 ~]# fdisk /dev/sda

p/n/p//+1000M/p/w

[root@node1 ~]# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        1318    10482412+  83  Linux

/dev/sda3            1319        1579     2096482+  82  Linux swap / Solaris

/dev/sda4            1580        1702      987997+  83  Linux

[root@node1 ~]# partprobe /dev/sda

[root@node1 ~]# cat /proc/partitions

major minor  #blocks  name

 

   8     0   20971520 sda

   8     1     104391 sda1

   8     2   10482412 sda2

   8     3    2096482 sda3

   8     4     987997 sda4

1.2  node2基本配置&新建磁盤

1.2.1查看系統信息,同步時間

[root@node2 ~]# uname -rv

2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009

[root@node2 ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 5.4 (Tikanga)

[root@node2 ~]# hwclock -s
[root@node2 ~]# date
Wed Feb  8 14:02:22 CST 2012

1.2.2查看主機名稱,修改查看ip地址

[root@node2 ~]# hostname
node2.junjie.com

[root@node2 ~]# cat /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.junjie.com
[root@node2 ~]# setup

[root@node2 ~]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]

[root@node2 ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:D4:32 

          inet addr:192.168.101.212  Bcast:192.168.101.255  Mask:255.255.255.0

1.2.3配置/etc/hosts文件(就不用dns了)

[root@node2 ~]# echo "192.168.101.211 node1.junjie.com node1" >>/etc/hosts

[root@node2 ~]# echo "192.168.101.212 node2.junjie.com node2" >>/etc/hosts

1.2.4構建一個新的磁盤空間有利於實現DRBD技術

[root@node2 ~]# fdisk -l
 

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        1318    10482412+  83  Linux

/dev/sda3            1319        1579     2096482+  82  Linux swap / Solaris

[root@node2 ~]# fdisk /dev/sda
p/n/p//+1000M/p/w
[root@node2 ~]# fdisk -l
 

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        1318    10482412+  83  Linux

/dev/sda3            1319        1579     2096482+  82  Linux swap / Solaris

/dev/sda4            1580        1702      987997+  83  Linux

[root@node2 ~]# partprobe /dev/sda

[root@node2 ~]# cat /proc/partitions

major minor  #blocks  name

 

   8     0   20971520 sda

   8     1     104391 sda1

   8     2   10482412 sda2

   8     3    2096482 sda3

   8     4     987997 sda4

1.3  在node1和node2上配置ssh密鑰信息,

有利於之後在一個節點對另外一節點直接操做。

1.3.1  在node1上配置ssh密鑰信息

[root@node1 ~]# ssh-keygen -t rsa

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.junjie.com

1.3.2  在node2上配置ssh密鑰信息

[root@node2 ~]# ssh-keygen -t rsa

[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.junjie.com

2、DRBD安裝配置

在node1和node2作如下操做:
我下載的軟件包是:(我放在/root/下了)
drbd83-8.3.8-1.el5.centos.i386.rpm 
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
 

2.1、安裝DRBD 套件

[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

 

[root@node2 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

[root@node2 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

2.2 、加載DRBD 模塊

[root@node1 ~]# modprobe drbd

[root@node1 ~]# lsmod | grep drbd

drbd                  228528  0

[root@node1 ~]#

 

[root@node2 ~]# modprobe drbd

[root@node2 ~]# lsmod | grep drbd

drbd                  228528  0

[root@node2 ~]#

2.3、修改配置文件

drbd.conf配置文件DRBD運行時,會讀取一個配置文件/etc/drbd.conf.這個文件裏描述了DRBD設備與硬盤分區的映射關係

2.3.1 node1上如下配置

 

[root@node1 ~]# cd /etc/drbd.d/

[root@node1 drbd.d]# ll

total 4

-rwxr-xr-x 1 root root 1418 Jun  4  2010 global_common.conf

[root@node1 drbd.d]# cp global_common.conf global_common.conf.bak

 

 

2.3.2  複製配置到node2上:

[root@node1 drbd.d]# scp /etc/drbd.conf node2:/etc/

drbd.conf                               100%  133     0.1KB/s   00:00   

[root@node1 drbd.d]# scp /etc/drbd.d/* node2:/etc/drbd.d/

global_common.conf                      100%  427     0.4KB/s   00:00   

global_common.conf.bak                  100% 1418     1.4KB/s   00:00   

nfs.res                                 100%  330     0.3KB/s   00:00   

[root@node1 drbd.d]#

2.4、 檢測配置文件

// 檢測配置文件

[root@node1 drbd.d]# drbdadm adjust nfs

0: Failure: (119) No valid meta-data signature found.

 

       ==> Use 'drbdadm create-md res' to initialize meta-data area. <==

 

Command 'drbdsetup 0 disk /dev/sda4 /dev/sda4 internal --set-defaults --create-device --fencing=resource-only --on-io-error=detach' terminated with exit code 10

[root@node1 drbd.d]# drbdadm adjust nfs

drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.

[root@node1 drbd.d]#

2.5、建立nfs 的資源

2.5.1  在node1上建立nfs 的資源

[root@node1 drbd.d]# drbdadm create-md nfs

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

[root@node1 drbd.d]# ll /dev/drbd0

brw-r----- 1 root disk 147, 0 Feb  8 14:27 /dev/drbd0

2.5.2  在node2上建立nfs 的資源

[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm create-md nfs'

NOT initialized bitmap

Writing meta data...

initializing activity log

New drbd meta data block successfully created.

[root@node1 drbd.d]# ssh node2.junjie.com 'ls -l /dev/drbd0'

brw-r----- 1 root disk 147, 0 Feb  8 14:19 /dev/drbd0

2.6  啓動DRBD服務

[root@node1 drbd.d]# service drbd start

Starting DRBD resources: drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.

[root@node1 drbd.d]# ssh node2.junjie.com 'service drbd start'

Starting DRBD resources: drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.

[root@node1 drbd.d]#

2.7  啓動DRBD服務,查看DRBD狀態

[root@node1 drbd.d]# service drbd status

drbd driver loaded OK; device status:

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:16

m:res  cs         ro                   ds                         p  mounted  fstype

0:nfs  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

[root@node1 drbd.d]# ssh node2.junjie.com 'service drbd status'

drbd driver loaded OK; device status:

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:16

m:res  cs         ro                   ds                         p  mounted  fstype

0:nfs  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

[root@node1 drbd.d]#

 

[root@node1 drbd.d]# drbd-overview

  0:nfs  Connected Secondary/Secondary Inconsistent/Inconsistent C r----

[root@node1 drbd.d]# ssh node2.junjie.com 'drbd-overview'

  0:nfs  Connected Secondary/Secondary Inconsistent/Inconsistent C r----

[root@node1 drbd.d]#

 

[root@node1 drbd.d]# chkconfig drbd on

[root@node1 drbd.d]# chkconfig --list drbd  

drbd                0:off      1:off      2:on       3:on       4:on       5:on       6:off

[root@node1 drbd.d]# ssh node2.junjie.com 'chkconfig drbd on'

[root@node1 drbd.d]# ssh node2.junjie.com 'chkconfig --list drbd'

drbd                0:off      1:off      2:on       3:on       4:on       5:on       6:off

2.8  在node1主節點上進行如下配置,並查看掛載信息。

[root@node1 drbd.d]# mkdir /mnt/nfs

[root@node1 drbd.d]# ssh node2.junjie.com 'mkdir /mnt/nfs'

[root@node1 drbd.d]# drbdsetup /dev/drbd0 primary -o

[root@node1 drbd.d]# mkfs.ext3 /dev/drbd0

[root@node1 drbd.d]# mount /dev/drbd0 /mnt/nfs/

 

 

至此DRBD配置成功!!!
 
附錄:DRBD應用管理配置: (如下命令說明略)

 

[root@node1 drbd.d]# drbdadm role nfs
Primary/Secondary
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm role nfs'
Secondary/Primary
[root@node1 drbd.d]# ll /mnt/nfs/
total 16
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@node1 drbd.d]# echo "20120508" >> /mnt/nfs/f1
[root@node1 drbd.d]# drbdadm secondary nfs
0: State change failed: (-12) Device is held open by someone
Command 'drbdsetup 0 secondary' terminated with exit code 11
[root@node1 drbd.d]# umount /mnt/nfs/
[root@node1 drbd.d]# drbdadm secondary nfs
[root@node1 drbd.d]# drbdadm role nfs
Secondary/Secondary
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm role nfs'
Secondary/Secondary
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm primary nfs'
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm role nfs'
Primary/Secondary
[root@node1 drbd.d]# drbdadm role nfs
Secondary/Primary
[root@node1 drbd.d]# ssh node2.junjie.com 'mount /dev/drbd0 /mnt/nfs'
[root@node1 drbd.d]# ssh node2.junjie.com 'ls -l /mnt/nfs'
total 20
-rw-r--r-- 1 root root 9 Feb 8 15:32 f1
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@node1 drbd.d]# ssh node2.junjie.com 'cat /mnt/nfs/f1'
20120508
[root@node1 drbd.d]# ssh node2.junjie.com 'echo "--xj" >>/mnt/nfs/f1'
[root@node1 drbd.d]# ssh node2.junjie.com 'cat /mnt/nfs/f1'
20120508
--xj
[root@node1 drbd.d]# ssh node2.junjie.com 'touch /mnt/nfs/f2'
[root@node1 drbd.d]# ssh node2.junjie.com 'ls -l /mnt/nfs'
total 20
-rw-r--r-- 1 root root 14 Feb 8 15:34 f1
-rw-r--r-- 1 root root 0 Feb 8 15:34 f2
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@node1 drbd.d]#
[root@node1 drbd.d]# ssh node2.junjie.com 'umount /mnt/nfs'
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm secondary nfs'
[root@node1 drbd.d]# ssh node2.junjie.com 'drbdadm role nfs'
Secondary/Secondary
[root@node1 drbd.d]# drbdadm primary nfs
[root@node1 drbd.d]# drbdadm role nfs
Primary/Secondary
[root@node1 drbd.d]# mount /dev/drbd0 /mnt/nfs/
[root@node1 drbd.d]# ll /mnt/nfs/
total 20
-rw-r--r-- 1 root root 14 Feb 8 15:34 f1
-rw-r--r-- 1 root root 0 Feb 8 15:34 f2
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@node1 drbd.d]# cat /mnt/nfs/f1
20120508
--xj
[root@node1 drbd.d]#
[root@node1 drbd.d]# drbd-overview
0:nfs Connected Primary/Secondary UpToDate/UpToDate C r---- /mnt/nfs ext3 950M 18M 885M 2%
[root@node1 drbd.d]# ssh node2.junjie.com 'drbd-overview'
0:nfs Connected Secondary/Primary UpToDate/UpToDate C r----
[root@node1 drbd.d]#

《完》

--xjzhujunjie

--2012/05/08

相關文章
相關標籤/搜索