简介:
drbd的功能为磁盘共享,当你在对服务器1的磁盘进行数据更改的时候,服务器2的磁盘会实时同步,再通过heartbeat服务对两个服务器进行心跳监测,一旦1的心跳无法被2接收(比如heartbeat挂掉,比如网络坏掉等等),则2会对1的服务自动进行接管
实验前提:
做此实验,需要两个虚拟机。
这两个虚拟机需要
1.设置网络为固定的子网IP,博主在这里是172.25.10.4和172.25.10.5
2.通过修改/etc/sysconfig/network 以及/etc/hosts两个文件来修改域名以及解析,我给两台虚拟机分别改为server4.example.com以及server5.example.com
3.关闭SELINUX并且开机自启关闭
4.关闭火墙并且开机自启关闭
5.配置yum源为如下形式
[Server]
name=Red Hat Enterprise Linux Sever
baseurl=http://172.25.10.250/6.5/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=Red Hat Enterprise Linux HighAvailability
baseurl=http://172.25.10.250/6.5/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=Red Hat Enterprise Linux LoadBalancer
baseurl=http://172.25.10.250/6.5/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=Red Hat Enterprise Linux ResilientStorage
baseurl=http://172.25.10.250/6.5/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ScalableFileSystem]
name=Red Hat Enterprise Linux ScalableFileSystem
baseurl=http://172.25.10.250/6.5/ScalableFileSystem
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
(配置yum源为基本功,在此不赘述)
开始实验:
安装heartbeat:
把heartbeat的几个安装包scp给4和5,
然后进入目录yum install -y * 全部安装(4,5都安装)
haresources Resource configuration file
authkeys Authentication information
这三个是配置文件,在/usr/share/doc/heartbeat下
开始修改配置文件
修改ha.cf:
keepalive 2 每过2妙进行一次心跳监测
deadtime 30 如果30秒收不到心跳,断定1挂掉了
warntime 10 10秒收不到i心跳,进行警告
initdead 60 在heartbeat启动的时候,如果1启动后60秒2还没有启动,则启动失败
udpport 1348 使用1348端口 (注意不要使用已经使用过的端口如80等等)
bcast eth0 表示使用eth0的当前网络
auto_failback on 在1挂掉后2会接管业务,但是当1修好后,如果这个参数为on则会再次接管业务,如果为off,则1不会再次接管业务
两个重要的配置文件,鄙人才疏学浅,并不理解其中奥秘
node server4.example.com这里是说明这个heartbeat中有多少个结点,分别是谁
ping 172.25.10.250 是指定一个稳定能ping通的IP,这里是为了监测网络环境
修改haresources文件:
server4.example.com IPaddr::172.25.10.100/24/eth0 httpd 前面写哪个节点,哪个节点就是主节点,这里的IPaddr是设定提供访问的IP(只要是本网段的没用过的子网就OK)
最后写的是所支持的服务,这里博主做测试用的是http服务
修改authkeys文件:
这里是设置加密方式,crc是指铭文加密
把仨文件scp 到另一个结点的/etc/ha.d/
实现4,5切换即成功
如下所示:
成功!
安装drbd:
get drbd包,
放在mnt下
tar zxf drbd-8.4.2.tar.gzcd drbd-8.4.2
进行编译,源码安装
./configure --enable-spec --with-km
根据提示安装相关包yum install -y gcc,flex,rpm-build,kernel-devel
把/mnt下的drbd-8.4.2.tar.gz cp到/root/rpmbuild/SOURCES(如果root下没有rpmbuild,就先执行一遍rpmbuild -bb drbd.spec)
创造rpm包:
rpmbuild -bb drbd.spec
rpmbuild -bb drbd-km.spec
安装刚刚生成的rpm包
cd
cd rpmbuild/RPMS/x86_64rpm -ivh *
把x86_64 scp给第二个节点,同样rpm -ivh *
给两个虚拟机都安装一块虚拟硬盘
fdisk -l 查看虚拟硬盘在哪里,我的是在vda,所以下面这个文件中,我就要写vda
开始配置
cd /etc/drbd.dvim example.res
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
on server4.example.com {
disk /dev/vda;
address 172.25.10.4:7789;
}
on server5.example.com {
disk /dev/vda;
address 172.25.10.5:7789;
}
}
给另一个节点也发一份
scp /etc/drdb.d/example.res 172.25.10.5:/etc/drbd.d
两边都开启drbd服务
两边都drbdadm create-md example两边都/etc/init.d/drbd start
把第一个节点设成主节点drbdadm primary example --force
cat /proc/drbd(看到走进度条)
就是这个:
mkfs.ext4 /dev/drbd1 格式化
mount /dev/drbd1 /mnt 挂载ls
建立一个文件然后把他umount再把他设置为secondary,把第二个节点设置为primary,然后mount就可以在第二个节点的mnt看到你的文件了
这次,我们用mysql服务来进行测试实验
第一个节点打开数据库,再关闭 (这里一定要关闭了再进行下一步!不然mysql会无法启动!)
然后把/var/lib/mysql/* cp -r 到/mnt(此时drbd1挂载在/mnt)
umount /mntmount /dev/drbd1 /var/lib/mysql
更改mysql文件的权限:
打开/etc/ha.d/haresources
server4.example.com IPaddr::172.25.10.100/24/eth0 drbddisk::example Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld给第二个节点也scp一份
开始测试:
打开两边的heartbeat
可以完成heartbeat自动挂载,在ip addr show 可以看到172.25.10.100,如果把节点一的heartbeat关闭,2可以自动挂载上,并且会自动开启mysql服务
至此,实现功能
终