kylin drbd 安装配置

一、drbd  工作原理

DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地 文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中。 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会 保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。

二、环境配置:

1、操作系统:kylin 4.0

2、主服务器:

主机名:master

IP:192.168.2.124

镜像的硬盘:/dev/hdb

3、  备份服务器

主机名:slave

IP:192.168.2.125

镜像的硬盘:/dev/hdb

三、安装drbd

1、下载安装drbd包 sudo apt-get install drbd

       依赖问题修复:sudo apt-get -f

2、验证是否安装成功

[root@master ]# modprobe drbd            @加载安装drbd模块

[root@master ]# lsmod |grep drbd       

drbd         271736  0

@通过lsmod检查是否已经成功,如果有类似内容输出,则表示drbd安装成功了

四、配置drbd

DRBD运行时,会读取一个配置文件/etc/drbd.conf.这个文件里描述了DRBD设备与硬盘分区的映射关系,数据一旦写入磁盘并发送到网络中就认为完成了写入操作。

1、drbd.conf的配置参数说明

Protocol

Protocol  A         @数据一旦写入磁盘并发送到网络中就认为完成了写入操作

Protocol  B         @收到接收确认就认为完成了写入操作。

Protocol  C         @收到写入确认就认为完成了写入操作。

2、global

global { usage-count yes; }         @是否参加DRBD使用者统计,默认是yes

3、common

common { syncer { rate 1M; } }

@设置主备节点同步时的网络速率最大值,单位是字节.

4、resource

一个DRBD设备(即:/dev/drbdX),叫做一个"资源"。里面包含一个DRBD设备的主备节点的的ip信息,底层存储设备名称,设备大小,meta信息存放方式,drbd对外提供的设备名等等。

resource r0 {

protocol C;         @使用协议C.表示收到远程主机的写入确认后,则认为写入完成.

net {

     cram-hmac-alg sha1;            @设置主备机之间通信使用的信息算法.

     shared-secret "FooFunFactory";

   }

@每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.

on master {

    device    /dev/drbd0;

    disk      /dev/ hdb;

    address   192.168.2.124:7898;    @设置DRBD的监听端口,用于与另一台主机通信

    meta-disk  internal;

   }

on slave{

    device    /dev/drbd0;

    disk      /dev/ hdb;

    address   192.168.2.124:7898;

     meta-disk  internal;

    }

 }

5、以下为测试时的完整配置

global {

  usage-count yes;

}

common {

  protocol C;

}

resource r0 {

  on master {

    device    /dev/drbd0;

    disk      /dev/hdb;

    address   192.168.2.124:7789;

    meta-disk  internal;

  }

  on slave {

    device    /dev/drbd0;

    disk      /dev/hdb;

    address   192.168.2.125:7789;

    meta-disk internal;

  }

}

6、双机两个节点的配置文件是一模一样的。DRBD源码目录下有个样本,里面说得比较详细。

五、启动drbd

1、创建matadata

在启动DRBD之前,需要分别在两台主机的hdb分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:

[root@master ]#drbdadm create-md r0

[root@slave ]#drbdadm create-md r0

备注:

1) “r0”是在drbd.conf里定义的资源名称.

2) 当执行命令”drbdadm create-md r0”时,出现以下错误信息。

Device size would be truncated, which

would corrupt data and result in

'access beyond end of device' errors.

You need to either

 * use external meta data (recommended)

 * shrink that filesystem first

 * zero out the device (destroy the filesystem)

Operation refused.

Command 'drbdmeta 0 v08 /dev/xvdb internal create-md' terminated with exit code 40

drbdadm create-md r0: exited with code 40

解决办法:初始化磁盘文件格式, dd if=/dev/zero bs=1M count=1 of=/dev/sdXYZ; sync

[root@master ]#  dd if=/dev/zero bs=1M count=1 of=/dev/hda3; sync

2.启动DRBD,分别在两台主机上执行

[root@master ]# /etc/init.d/drbd start

[root@slave ]# /etc/init.d/drbd start

备注:

如果在启动过程中找不到node时,查看是/dev/hda3是否是处于挂载状态,如果是,用umount命令取消挂载

3. 查看DRBD的状态,分别在两台主机上执行

[root@slave drbd]# cat /proc/drbd


 

对输出的含义解释如下:

ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,

ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。

Ns表示网络发送的数据包信息。

Dw是磁盘写信息

Dr是磁盘读信息

4、设置主节点

由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:

[root@master]#drbdsetup /dev/drbd0 primary –o

或者执行下面命令也是可以的

[root@ master]#drbdadm -- --overwrite-data-of-peer primary all

第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:

[root@ master]#/sbin/drbdadm primary r0或者/sbin/drbdadm primary all

再次查看drbd状态,

 


 

可以看到现在状态已经是primary/secondary,而且磁盘信息是upTodat/Inconsistent(实时/不一致),而且已经开始同步两台机器对应磁盘的数据

过了一会,我们再次查看drbd状态,如下:


 

此时的状态信息就是primary/secondary,磁盘信息是UpToDate/UpToDate,说明已经同步完成了。

六、注意点

把主机上的DRBD设备挂载到一个目录上进行使用。备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。

1.主备节点切换有两种方式,分别是停止drbd服务切换和正常切换,依次介绍:
    1)停止drbd服务切换
         关闭主节点服务,此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:
        [ root@drbd2 ~]#drbdadm primary all
        此时会报错:
        2: State change failed: (-7) Refusing to be Primary while peer is not outdated
        Command 'drbdsetup 2 primary' terminated with exit code 11
       因此,必须在备用节点执行如下命令:
      [root@drbd2 ~]#drbdsetup /dev/drbd0 primary –o
或者
[root@drbd2~]#drbdadm -- --overwrite-data-of-peer primary all
此时就可以正常切换了。
当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。
2)正常切换
在主节点卸载磁盘分区,然后执行
[root@drbd1 ~]#drbdadm secondary all
如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:
2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11
接着,在备用节点执行
[root@drbd2 ~]#drbdadm primary all
最后在备用节点挂载磁盘分区即可:
[root@drbd2 ~]#mount /dev/drbd0 /mnt

2.DRBD脑裂的模拟及修复

1)断开主(parmary)节点;关机、断开网络或重新配置其他的IP都可以;这里选择的是断开网络

2)、查看两节点状态

1
2
3
4
5
[root@nod2 ~] # cat /proc/drbd
   0:drbd /0  WFConnection Primary /Unknown UpToDate /DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4%
[root@nod1 ~] # drbd-overview
   0:drbd /0  StandAlone Secondary /Unknown UpToDate /DUnknown r-----
######由上可以看到两个节点已经无法通信;NOD2为主节点,NOD1为备节点

3)、将NOD1节点升级为主(primary)节点并挂载资源

1
2
3
4
5
6
[root@nod1 ~] # drbdadm primary drbd
[root@nod1 ~] # drbd-overview
   0:drbd /0  StandAlone Primary /Unknown UpToDate /DUnknown r-----
[root@nod1 ~] # mount /dev/drbd0 /mnt/
[root@nod1 ~] # mount | grep drbd0
/dev/drbd0 on /mnt type ext4 (rw)

4)、假如原来的主(primary)节点修复好重新上线了,这时出现了脑裂情况

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@nod2 ~] # tail -f /var/log/messages
Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_a_drbd
Sep 19 01:56:06 nod2 kernel: block drbd0: helper command : /sbin/drbdadm initial- split -brain minor-0 exit code 0 (0x0)
Sep 19 01:56:06 nod2 kernel: block drbd0: Split-Brain detected but unresolved, dropping connection!
Sep 19 01:56:06 nod2 kernel: block drbd0: helper command : /sbin/drbdadm split -brain minor-0
Sep 19 01:56:06 nod2 kernel: block drbd0: helper command : /sbin/drbdadm split -brain minor-0 exit code 0 (0x0)
Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( NetworkFailure -> Disconnecting )
Sep 19 01:56:06 nod2 kernel: d-con drbd: error receiving ReportState, e: -5 l: 0!
Sep 19 01:56:06 nod2 kernel: d-con drbd: Connection closed
Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( Disconnecting -> StandAlone )
Sep 19 01:56:06 nod2 kernel: d-con drbd: receiver terminated
Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_r_drbd
Sep 19 01:56:18 nod2 kernel: block drbd0: role( Primary -> Secondary )
  

5)、查看NOD1与NOD2连接状态

1
2
3
4
5
[root@nod1 ~] # cat /proc/drbd
   0:drbd /0  StandAlone Primary /Unknown UpToDate /DUnknown r----- /mnt ext4 2.0G 68M 1.9G 4%
[root@nod2 ~] # drbd-overview
   0:drbd /0  WFConnection Primary /Unknown UpToDate /DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4%
######由上可见,状态为StandAlone时,主备节点是不会通信的

6)、查看DRBD的服务状态

1
2
3
4
5
6
7
8
9
10
11
12
[root@nod1 ~] # service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1 /proto :86-101)
GIT- hash : 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
m:res   cs          ro               ds                 p       mounted  fstype
0:drbd  StandAlone  Primary /Unknown  UpToDate /DUnknown  r-----  ext4
[root@nod2 ~] # service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1 /proto :86-101)
GIT- hash : 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
m:res   cs            ro               ds                 p  mounted  fstype
0:drbd  WFConnection  Primary /Unknown  UpToDate /DUnknown  /mnt     ext4

7)、在NOD1备用节点处理办法

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@nod1 ~] # umount /mnt/
[root@nod1 ~] # drbdadm disconnect drbd
drbd: Failure: (162) Invalid configuration request
additional info from kernel:
unknown connection
Command 'drbdsetup disconnect ipv4:192.168.137.225:7789 ipv4:192.168.137.222:7789' terminated with exit code 10
[root@nod1 ~] # drbdadm secondary drbd
[root@nod1 ~] # drbd-overview
   0:drbd /0  StandAlone Secondary /Unknown UpToDate /DUnknown r-----
[root@nod1 ~] # drbdadm connect --discard-my-data drbd
######执行完以上三步后,你查看会发现还是不可用
[root@nod1 ~] # drbd-overview
   0:drbd /0  WFConnection Secondary /Unknown UpToDate /DUnknown C r-----

8)、需要在NOD2节点上重新建立连接资源

1
2
3
4
5
6
7
[root@nod2 ~] # drbdadm connect drbd
######查看节点连接状态
[root@nod2 ~] # drbd-overview
   0:drbd /0  Connected Primary /Secondary UpToDate /UpToDate C r----- /mnt ext4 2.0G 68M 1.9G 4%
[root@nod1 ~] # drbd-overview
   0:drbd /0  Connected Secondary /Primary UpToDate /UpToDate C r-----
######由上可见已经恢复到正常运行状态


七。总结

1)mount drbd设备以前必须把设备切换到primary状态。

2两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。

3)处于secondary状态的服务器上不能加载drbd设备。

4)主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,因为drbd磁盘镜像相当于网络raid 1。  

5)   StandAlone 网络配置不可用;资源还没有被连接或是被管理断开

   WFConnection 等待和对等节点建立网络连接 若同时,则主节点重新建立连接 drbdadm connect drbd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值