- 服务器基础设置
机器名 | Eth0 | Eth1(心跳线) | VIP |
Nfs1 | 192.168.1.11 | 10.1.1.1 | 192.168.1.8 |
Nfs2 | 192.168.1.12 | 10.1.1.2 | 192.168.1.8 |
/etc/hosts添加:
192.168.1.11 nfs1
192.168.1.12 nfs2
10.1.1.1 nfs1
10.1.1.1 nfs2
- Install DRBD
版本对应:
drbd-8.3.8.1.tar.gz
http://oss.linbit.com/drbd/8.3/drbd-8.3.8.1.tar.gz
#uname -a
Linuxlocalhost.localdomain 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012x86_64 x86_64 x86_64 GNU/Linux
#./configure--prefix=/ --with-km
configure: error: Cannot build utils without flex, either installflex or pass the --without-utils option.
#yum -y install flex
#make
-bash: make: command not found
#yum -y install automake autoconf libtool make
make: *** [check-kdir] Error 1
#yum install -y kernel-devel
#makeinstall
#chkconfig--add drbd
#chkconfigdrbd on
检查drbd模块是否正常load
#modprobe -l|grep drbd
#lsmod |grep -i drbd
drbd 285763 0
- Config DRBD
配置参考:
http://www.drbd.org/users-guide-emb/re-drbdconf.html
DRBD全部配置信息在/etc/drbd.conf文件中,各node要相同,修改需重启服务才能生效,可分成两部分分别设置:
include"drbd.d/global_common.conf";
include"drbd.d/*.res";
配置文件内容:
/etc/drbd.d/global_common.conf
#cat global_common.conf
global{
usage-count no;
}
common{
syncer { rate 200M; }
}
]#cat r0.res
resourcer0 {
protocol C;
net {
cram-hmac-alg sha1;
shared-secret"FooFunFactory";
}
disk {
on-io-error detach;
fencing resource-only;
}
on nfs1 {
device minor 1;
disk /dev/sdb1;
meta-disk internal;
address 192.168.1.11:7789;
}
on nfs2 {
device minor 1;
disk /dev/sdb1;
meta-disk internal;
address 192.168.1.12:7789;
}
}
说明:alice/bob,主机名,要与node主机名保持一致。
/dev/drbd1,drbd对
Net,disk部分用来调优磁盘参数。
Address:每个drdb资源需要不同的IP:port
Disk: 每个主机上的磁盘物理分区。
在host上将新挂载的硬盘/dev/sdb做分区设置:
fdisk/dev/sdb
p->n->p->1(数字1)->回车->回车->p->l->t->8e->p->w
p(查看分区表)-n(新建分区)-p(主分区)-1(编号,新分区即为sdc1)-回车-回车(两个回车默认把全部空间分配给这个分区)-p(查看分区表)-l(查看支持的分区类型)-t(更改分区类型)-83(linux的分区类型)-p(查看分区表)-w(保存退出)
(复制虚拟机的方式,如复制的机器网卡无法正常启动,可以
修改/etc/udev/rules.d/70-persistent-net.rules 后重启,并将网卡MAC地址修改位于ifconfig -a得到的地址一致。)
两台主机都执行:
#drbdadm create-md r0
Writingmeta data...
initializingactivity log
NOTinitialized bitmap
Newdrbd meta data block successfully created.
两台主机启动drbd服务:
servicedrbd start
输入yes abort waiting
设置主节点:
drbdsetup/dev/drbd1 primary -o
停掉iptable, service iptables stop,
cat/proc/drbd
version:8.3.8.1 (api:88/proto:86-94)
GIT-hash:0d8589fcc32c874df57c930ca1691399b55ec893 build by root@localhost.localdomain,2013-10-02 19:58:17
1: cs:SyncSource ro:Primary/Secondaryds:UpToDate/Inconsistent C r----
ns:978308 nr:0 dw:0 dr:979608 al:0 bm:59lo:0 pe:2 ua:20 ap:0 ep:1 wo:b oos:3214496
[===>................] sync'ed:23.5% (3214496/4192768)K
finish: 0:04:47 speed: 11,120 (10,296)K/sec
可以看到主从在同步数据中,完成23.5%同步。
直到同步完毕:
手工切换:
在主节点运行
drbdsetup /dev/drbd1 secondary
在从节点运行
drbdsetup/dev/drbd1 primary -o
- NFS
在primary操作:
mount/dev/cdrom /mnt/media
yum-y install nfs*
chkconfig--level 345 nfs on
servicerpcbind start
servicenfs start
mkfs.ext3/dev/drbd1
mkdir/nfs
mount/dev/drbd1 /nfs
exportfs-r
(在RHEL6中,使用rpcbind替换了RHEL5中NFS依赖的portmap服务)
在secondary操作:
mount/dev/cdrom /mnt/media
yum-y install nfs*
chkconfig--level 345 nfs on
servicerpcbind start
servicenfs start
mkdir/nfs
然后在主节点执行:
umount /nfs
drbdadmsecondary all
回到从节点执行:
drbdadmprimary all
mount/dev/drbd1 /nfs
(从节点不用执行 mkfs.ext3 /dev/drbd1)
如此实现手工切换。
- 手工切换须知
#正常切换主备节点:
在server1卸载磁盘分区,然后执行
[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/drbd1 /nfs
#注意事项:
1、mount drbd设备以前必须把设备切换到primary状态
2、两个节点中,同一个时刻只能有一台处于primary状态,另一台处于secondary状态
3、处于secondary状态的服务器上不能加载drbd设备。