废话不多说,现在开始:
1.2台虚拟机,Centos6.5系统,系统配置啥的都一样,能互相ping 通。把它们称为A和B。
2. A: server iptables stop
setenforce 1 //先把这2台服务器的防火墙和SELINUX关闭。
-------------------------------------------
B: server iptables stop
setenforce 1 //先把这2台服务器的防火墙和SELINUX关闭。
3. vim /etc/hosts
192.168.1.170 drbd1.com
192.168.1.171 drbd2.com //这一步挺重要,统一主机名字,后面就看出来了。
4.把2台虚拟机分别添加一块硬盘:
fdisk -l /dev/sdb --->n-----> p---->1----->回车-----> w 保存。到现在为止,就可以了,不要急着格式化。
5. A 和 B 时间要同步一下
# ntpdate -u asia.pool.ntp.org
目前为止,准备工作都准备好了,现在接下来迎接客人------DRBD。
a. 安装依赖包(A和B都安装)
#yum install gcc gcc-c++ make glibc flex kernel-devel kernel-headers
b. 安装drbd包
# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
# tar -zxvf drbd-8.4.3.tar.gz
# cd drbd-8.4.3
#./configure --prefix=/usr/local/drbd --with-km 这步是安装路径
# make KDIR=/usr/src/kernels/`uname -r` 把你系统的内核安装好
# make install
# mkdir -p /usr/local/drbd/var/run/drbd
# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d/ 把命令cp过去
加载DRBD模块是否加载到内核
#modprobe drbd
查看DRB模块是否加载到内核:
# lsmod|grep drbd 看一下是否有类似图片中的东西出现
到现在为止,完成一半了,接下来把配置文件配置一下就好了。
#vim /usr/local/drbd/etc/drbd.conf 打开这个文件以后,默认有红色的2行文字,不用管它,全部删除即可。我们重新配置它。这个文件里的内容,可以分成2个文件配置,也可以在一个文件里配置,我这里在一个文件里配置,功能相同,没有任何影响,完全可以。
resource r0{ #资源名字为r0
protocol C; #使用DRBD第3种协议,表示远程主机的写入确认后,认为写入完成。
startup { wfc-timeout 0; degr-wfc-timeout 120;}
disk { on-io-error detach;} #保证数据在不同步时不进行切换
net{
timeout 60;
connect-int 10;
ping-int 10;
max-buffers 2048;
max-epoch-size 2048;
}
syncer { rate 200M;} #主用节点和备用节点同步时的网络速率最大值
on drbd1.com{ # drbd1.com是主机名,前面改过了,on 这个字母必须加
device /dev/drbd0;
disk /dev/sdb1; # /dev/drbd0 使用的磁盘分区是/dev/sdb1.
address 192.168.1.170:7798; #设置DRBD的监听端口
meta-disk internal; #DRBD的元数据存放方式。
}
on drbd2.com{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.171:7798;
meta-disk internal;
}
}
现在配置完毕。
1) 把drbd.conf 放到A 和B 的/usr/local/drbd/etc/底下,2台服务器的配置一模一样。
启动DRBD:
A:# drbdadm create-md r0 (我写的这个命令绝对可以,还有一些其他命令和这个命令作用一样,别管别的命令了)
# drbdadm create-md r0 你没看错,执行2遍这个命令,第一遍是创建DRBD记录信息的数据块,第2遍是激活r0.
B:# drbdadm create-md r0
# drbdadm create-md r0
2) A:service drbd start
B:service drbd start 在2台服务器上分别执行这个命令,最好同时进行,我觉的同时进行非常重要!
3) cat /proc/drbd 分别在A和B上执行这个命令,看是否和下面的一样,如果2台都是Secondary 就对了。红色代表是都是备用状态,紫色是数据不一致。
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2016-01-12 22:16:34
m:res cs ro ds p mounted fstype
0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
4) 将A主机配置为主节点:
A: # drbdsetup /dev/drbd0 primary -- force
目前为止,分别在A和B上看一下状态。
A服务器:: # service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2016-01-12 22:16:34
m:res cs ro ds p mounted fstype
0:r0 Connected Primary/Secondary Inconsistent/Inconsistent C
B服务器: # service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2016-01-12 22:16:34
m:res cs ro ds p mounted fstype
0:r0 Connected Secondary/Primary Inconsistent/Inconsistent C
ro在主从服务器上分别显示 Primary/Secondary和Secondary/Primary
ds显示UpToDate/UpToDate
A服务器上挂载DRBD
# mkfs.ext4 /dev/drbd0
# mount /dev/drbd0 /mnt
现在为止,全部OK
注意:Secondary节点上不允许对DRBD设备进行任何操作,包括只读。
只有当Primary节点挂掉时,Secondary节点才能提升为Primary.
DRBD(Distributed Replicated Block Device),相当于一个RAID1.2台服务器一台用于写,读数据,另一台负责复制。