• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

drbd+apache+heartbeat

Apache技术 BAIXIAO白 36次浏览 已收录 0个评论

DRBD工作原理:

DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络(磁盘阵列)RAID-1功能

当你将数据写入本地 文件系统时DRBD Primary,数据还将会被发送到网络中另一台主机上DRBD Secondary.以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵

因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。

三种复制模式:

(1)协议A:异步复制

 一旦写入本地完成,数据包就在buffer队列中,则备认为是完成的,在一个节点发生故障时,可能造成数据丢失,因为被写入远程节点上的数据仍可能在发送队列。一般用在地理位置比较远的节点。

(2)协议B半同步复制

本地磁盘写入并且已经完成复制数据包到达远端,则认为工作完成。不确定远端是否写入磁盘,这种情况下,当两个节点同时发生故障就可能造成数据丢失,比如两端同时掉电。

(3)协议C:同步复制

发送到远端并确保写入完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽

生产环境一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议

工作原理图

 

DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据

 wKioL1eOO-iC-2B2AAE_qaJQXgk092.png-wh_50

 

 

实验环境:

节点1server1.example.com  172.25.29.1

节点2server2.example.com  172.25.29.2

Vip172.25.29.100

Selinuxiptables处于disabled状态

以上两台虚拟主机为redhat 6.5版本

一.安装

Server1

得到drbd-8.4.2.tar.gz

yum install rpm-build -y   ###安装rpm-build

tar zxf drbd-8.4.2.tar.gz    ###解压

cd drbd-8.4.2  ###进入解压后目录

 

 ./configure –enable-spec   –with-km(内核编译)   ###编译

编译的过程中根据报错提示安装gcc  flex  

安装完成后需要重新编译

wKioL1eOPBGwRKhbAAB-HsmRnXo067.png-wh_50

编译完成后生成三个文件  drbd.spec drbd-km.spec drbd-kernel.spec

 

 

wKiom1eOPDuysFz-AAB6WizRlY0261.png-wh_50


 

 rpmbuild -bb drbd.spec   ###编译后做成*.rpm

根据错误提示把未解压的包拷贝到指定目录下

重新编译

 

wKiom1eOPDzQ4en8AAFQ64VquKw535.png-wh_50

 

信息提示生成的rpm包的位置为/root/rpmbuild/RPMS/x86_64

 

wKioL1eOPD2gj_i-AACGf9-Xcm8851.png-wh_50

 

[root@server1 x86_64]# rpm -ivh *   ###安装

 scp  *  root@172.25.29.2:/drbd   ###server2只需要rpm -ivh *安装

  

二.配置

Server1

[root@server1 x86_64]# 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结尾

 

 

两台虚拟机都添加4G虚拟硬盘,fdisk -l 查看名称我这里是/dev/vda   两块硬盘一样大

 

cd /etc/drbd.d   

vim example.res   ###这个文件原本不存在,自己建立

 

 

resource example {

meta-disk internal;

device /dev/drbd1;   ###设备/dev/drbd1,名称必须是drbd*

syncer {

verify-alg sha1;

}

on server1.example.com {

disk  /dev/vda;    ###硬盘名称

address 172.25.29.1:7789;

}

on server2.example.com {

disk /dev/vda;

address 172.25.29.2:7789;

}

}

[root@server1 drbd.d]# scp example.res  root@172.25.29.2:/etc/drbd.d

 

远程复制到server2 

工作方式为主备模式

 

三.初始化并载入数据

wKioL1eOPD3CqQZ3AAB2W6VH-G8440.png-wh_50

 

wKiom1eOPPSB9uJ4AAGbft8zClg809.png-wh_50

服务启动失败,需要加载内核模块,进入到解压目录,rpmbuild命令编译成rpm包,安装kernel-devel后需要重新编译生成rpm

 

进入生成rpm包的目录/root/rpmbuild/RPMS/x86_64,安装与内核相关的包:

wKiom1eOPRrRQDv2AACmXw4Ko0s262.png-wh_50

 

 

[root@server1 x86_64]# scp drbd-km-2.6.32_431.el6.x86_64-8.4.2-2.el6.x86_64.rpm root@172.25.29.2:/root

 

server2中也安装此包

wKiom1eOPfbADfOaAABiBP6EmVw174.png-wh_50

 

安装完这个包后,就可以成功开启服务/etc/init.d/drbd  start

注意:两边都要开启服务,否则先开启服务的那一个主机会等待另一个主机开启服务,一直等待,直到另外一个主机开启服务为止

 

wKioL1eOPg7jtYBrAACOnHRNNJc444.png-wh_50

 

两个之间还,没有建立连接inconsistent

 

Server1

 drbdadm primary example –force    ####server1设置为primary    进行数据的同步

 

wKiom1eOPl3CxwaFAAC1NIp3Qpo430.png-wh_50

Primary/Secondary   ###Primary在前就表示自己是主设备

上面的图片表示server2是从设备;update已经建立连接

 

 

/dev/vda   —> /dev/drbd1

[root@server1 x86_64]# mkfs.ext4 /dev/drbd1   ###只能对/dev/drbd1 进行操作

 

四.挂载测试

格式化完成后,在server1中将/dev/drbd1挂载到/mnt目录下可以挂载

wKiom1eOPl6B2KHuAABxAVxZxIU777.png-wh_50

卸载之后,server2还是挂载不上

wKioL1eOPl6yseL4AADE9hQzHxs454.png-wh_50

 现象:主设备server1挂载再卸载,但是server2设备还是挂载失败

因为server2是从设备,只能在主设备上进行挂载

 

[root@server1 ~]# drbdadm  secondary example   ###server1改成从设备

[root@server2 ~]# drbdadm  primary example     ###server2改成主设备

然后就可以在server2上实现挂载

                                               

wKiom1eOPl-AAklVAADE7yjk_4E531.png-wh_50

 

 

Server1 : 

Server2:备

Server1echo  c > /proc/sysrq-trigger  ###内核崩掉

 

Drbd-overciew  ###查看是否连接还是等待连接

 

Forceoff 重启之后正常连接

wKioL1eOPmDgfHjmAACRPJocals499.png-wh_50

 

Server1stop network 出现如上现象独立工作

Server2在等待

 

 

 

Server2drbdadm disconnect example  ###断开连接

Drbdadm  connect  –discard-my-data example ###重新连接

 

Server1drbdadm connect example

五.drbd挂载到httpd默认发布目录上(drbd+heartbeat

Server1.server2

 

/etc/init.d/heartbeat   stop

 

Vim /etc/ha.d/haresources

wKioL1eOPmGQ5ixUAAAvV_37l5U026.png-wh_50

参数说明:

server1.example.com    ###主节点,两边都是主节点的主机名

IPaddr::172.25.29.100/24/eth0   ###vip

drbddisk::example  ###因为只有primary才能挂载,转换身份为primary

Filesystem::/dev/drbd1::/var/www/html   

Httpd   ###服务

 

 

/etc/init.d/heartbeat   start  ###两边都开启服务

 

当前server1primary,所以先挂载到server1

Cd /var/www/html    cat index.html    linux ###创建测试页

 

wKiom1eOPmLjKbPlAAFzSVYDoOA151.png-wh_50

 

 

[root@server1 ha.d]# /etc/init.d/heartbeat  stop    ##server1上停止心跳服务

 

就会自动挂载到server2

Server1服务恢复时,又会自动挂载到server1(主从设备)

 

srver1httpd服务停止,挂载位置不变,curl  172.25.29.100   没有内容

 

 


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明drbd+apache+heartbeat
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址