DRBD
节点1:Server1.example.com 172.25.23.1
节点2:Server2.example.com 172.25.23.2
VIP:172.25.23.100
Selinux和iptables处于disabled状态 redhat 6.5版本
一.安装drbd
将源码做成rpm包 并安装
下载的安装包为drbd-8.4.2.tar.gz
[root@server1 ~]# yum install rpm-build -y #做rpm包的工具
[root@server1 ~]# tar zxf drbd-8.4.2.tar.gz
[root@server1 ~]# cd drbd-8.4.2
[root@server1 drbd-8.4.2]# ./configure --enable-spec --with-km(内核编译)
[root@server1 drbd-8.4.2]# yum install -y gcc flex#解决依赖性
[root@server1 drbd-8.4.2]# ./configure --enable-spec --with-km
#编译成功后生成三个文件 drbd.spec drbd-km.spec drbd-kernel.spec
[root@server1 drbd-8.4.2]# rpmbuild -bb drbd.spec
#编译生成drbd rpm包
cp ~/drbd-8.4.2.tar.gz /root/rpmbuild/SOURCES/
#在家目录生成 rpmbuild 编译所需路径 即将源代码拷到 rpmbuild的路径下
[root@server1 drbd-8.4.2]# rpmbuild -bb drbd.spec
[root@server1 drbd-8.4.2]# rpmbuild -bb drbd-km.spec
#编译生成drbd的内核模块
[root@server1 drbd-8.4.2]# yum install kernel-devel -y
#安装kernel-devel,再重新编译
[root@server1 drbd-8.4.2]# rpmbuild -bb drbd-km.spec
[root@server1 drbd-8.4.2]# cd /root/rpmbuild/RPMS/x86_64/
#生成的安装包在这里/root/rpmbuild/RPMS/x86_64/
[root@server1 x86_64]# rpm -ivh *
[root@server1 x86_64]# scp * 172.25.23.2:
#将生成的安装包复制到server2,并安装
二.配置drbd
1.serveer1 server2 上各新加一个磁盘4G的即可
2.编辑配置文件
[root@server1 x86_64]# cd /etc/drbd.d/
[root@server1 drbd.d]# cat /etc/drbd.conf
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res"; #配置文件都是以res结尾
[root@server1 drbd.d]# vim example.res
# device /dev/drbd1 设备/dev/drbd1,名称必须是drbd*
# disk /dev/vda 为新增的磁盘名称
[root@server1 drbd.d]# scp example.res [email protected]:/etc/drbd.d/
3. 创建
[root@server1 drbd.d]# drbdadm create-md example
# example是配置文件中的资源名
......
[root@server2 drbd.d]# drbdadm create-md example
4.启动,设置主从
[root@server1 x86_64]# /etc/init.d/drbd start
# server2也同时启动,不然server1会一直等待,直到另外一个主机开启服务为止
# 刚启动的设备都是secondary且没有建立连接inconsistent
[root@server1 x86_64]# drbdadm primary example --force
# 强制将该设备设为primary,两边会开始同步
[root@server1 x86_64]# watch cat /proc/drbd
# 可查看两边同步的进度
5.挂载测试
# 只能格式化/dev/drbd1 并只用在主设备格式化
[root@server1 ~]# mkfs.ext4 /dev/drbd1
[root@server1 ~]# mount /dev/drbd1 /mnt
[root@server1 ~]# cd /mnt
[root@server1 mnt]# cp /etc/passwd /mnt
[root@server1 mnt]# cd
[root@server1 ~]# umount /mnt
[root@server2 ~]# mount /dev/drbd1 /mnt
# 两台设备不能同时挂载,并且只能在primary上挂载
[root@server1 ~]# drbdadm secondary example
# 将server1设为secondary
[root@server2 ~]# drbdadm primary example
# server2设为primary ,再次挂载,成功
[root@server2 ~]# mount /dev/drbd1 /mnt
[root@server2 ~]# cd /mnt
# 可以看到在server1挂载时添加的数据,若再将server2 设为secondary , server1设为primary , 再挂载,会看到在server2中修改的数据。确定数据可以同步。
6.常见的任务管理语句
drbd-overview #查看状态
drbdadm down example
drbdadm up example
drbdadm disconnect example
drbdadm connect example
drbdadm connect --discard-my-data example #放弃数据,连接
三.把drbd挂载到httpd默认发布目录上(drbd+heartbeat)
1.编写配置文件
[root@server1 ~]# /etc/init.d/heartbeat stop
[root@server1 ~]# cd /etc/ha.d
[root@server1 ha.d]# vim haresources
server1.example.com #主节点,两边都是主节点的主机名
IPaddr::172.25.23.100/24/eth0 #vip
drbddisk::example #因为只有primary才能挂载,转换身份为primary
Filesystem::/dev/drbd1::/var/www/html #挂载点
httpd #服务
[root@server1 ha.d]# scp haresources 172.25.23.2:/etc/ha.d
[root@server1 ~]# etc/init.d/heartbeat start
[root@server1 ~]# echo www.example.com > /var/www/html/index.html
2.测试
[root@server1 ~]# curl localhost
#会自动挂载
[root@server1 ~]# /etc/init.d/heartbeat stop
[root@server1 ~]# df
#发现已经卸载,并在server2上发现挂载
[root@server1 ~]# /etc/init.d/heartbeat start
[root@server1 ~]# df
#重新挂载到server1上