Chinaunix首页 | 论坛 | 博客
  • 博客访问: 807153
  • 博文数量: 94
  • 博客积分: 1767
  • 博客等级: 上尉
  • 技术积分: 1168
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 23:16
个人简介

ha

文章分类

全部博文(94)

文章存档

2014年(2)

2013年(17)

2012年(6)

2011年(15)

2010年(23)

2009年(23)

2008年(8)

我的朋友

分类: LINUX

2009-05-12 11:29:49

一、场景:

  两台PC机各有一个空闲分区,把他们做成DRBD。每台PC机有两个网卡,以便于直接互联。
drbd 主机列表和预备分区 IP 地址 主机名
主机1(primary)|/dev/sda4 eth0:172.16.0.178
eth1:192.168.0.1
drbd_test_1
主机2(secondary)|/dev/hdb2 eth0:172.16.0.179
eth1:192.168.0.2
drbd_test_2


二、安装,还是很顺利的:(两台机器都要做,呵呵,废话)
 1.tar zxf drbd-8.3.1.tar.gz
 2.cd drbd-8.3.1
 3.make
 4.make all install
 5.检查一下:modprobe drbd 然后:lsmod |grep drbd看看有没有了

三、初始的配置,也比较简单了(/etc/drbd.conf,两台机器一样的):
 global {
}

common {
 syncer { rate 100M; }
}

resource db {
 protocol C;
 startup { wfc-timeout 0; degr-wfc-timeout 120; }
 disk { on-io-error detach; }
 syncer { rate 100M; }

 on drbd_test_1 {
 device /dev/drbd0;
 disk /dev/sda4;
 address 192.168.0.1:7791;
 meta-disk internal;
 }

 on drbd_test_2 {
 device /dev/drbd0;
 disk /dev/hdb2;
 address 192.168.0.2:7791;
 meta-disk internal;
 }
}

四、准备启动:
创建相应的元数据保存的数据块,两个机器都要执行一下:drbdadm create-md db。按照提示信息直接按回车即可

五、启动drbd服务:
两台机器都:service drbd start
查看启动状态:service drbd status 或者 cat /proc/drbd

六、定义主节点:
在server1上设置它为主节点:drbdadm primary db。
第一次执行会出现如下错误:
State change failed: (-2) Refusing to be Primary without at least one UpToDate disk Command 'drbdsetup /dev/drbd0 primary' terminated with exit code 11
此时要先用drbdsetup 来做,之后就可以用drbaadmin了:drbdsetup /dev/drbd0 primary –o
查看状态可以发现此时两块磁盘已经开始同步,时间会比较长的

七、创建设备文件:(两台都要创建,本例中创建一个drbd0就好)
mknod /dev/drbd0 b 147 0
mknod /dev/drbd1 b 147 1
........
创建多个:for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i ; done

八、格式化drbd分区:(主server上执行,从设备会同步执行)
mkfs.ext3 /dev/drbd0

九、挂载:(主server上执行,从设备是不让挂载的)
mount /dev/drbd0 /data
注意:secondary节点上不允许对drbd设备进行任何操作,包括只读。所有的读写操作只能在primary节点上进行。知道primary节点挂掉之后,secondary节点才能提升成为primary节点,继续进行读写操作

十、实验历程
1.把primary的eth1给ifdown了,然后直接在secondary上进行主的提升,并也给mount了,发现在primary上测试拷入的文件确实同步过来了。之后把primary的eth1恢复后,发现没有自动恢复主从关系,经过支持查询,发现出现了drbd检测出现了Split-Brain的状况,两个节点各自都standalone了。
手动恢复Split-Brain状况:
在secondary上:
drbdadmin secondary db
drbdadmin -- --discard-my-data connect db
在primary上:
drbdadmin connect db

2.突然想到一点:实验的两个分区可以不一样大,应该将小的设置为primary,因为如果primary比secondary的空间大,那超出的部分。。。。不敢想。

3.drbd状态的意义:

输出文件上面最开始是drbd的版本信息,然后就是数据同步的一些状态信息:

cs — connection state
st — node state (local/remote)
ld — local data consistency
ds — data consistency
ns — network send
nr — network receive
dw — disk write
dr — disk read
pe — pending (waiting for ack)
ua — unack’d (still need to send ack)
al — access log write count

4.两个节点切换的过程:
 a)在primary上umount,然后执行drbdadm secondary all,改成secondary模式
 b)在secondary上执行drbdadm primary all 改成primary模式,再mount文件系统


阅读(2284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~