码迷,mamicode.com
首页 > Web开发 > 详细

drbd+apache+heartbeat

时间:2016-07-20 06:48:35      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:drbd heartbeat apache

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服务器之间共享块设备,共享文件系统和数据

 技术分享

 

 

实验环境:

节点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  

安装完成后需要重新编译

技术分享

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

 

 

技术分享






 

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

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

重新编译

 

技术分享


 

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

 

技术分享


 

[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 

工作方式为主备模式

 

三.初始化并载入数据

技术分享


 

技术分享

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

 

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

技术分享

 

 

[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中也安装此包

技术分享

 

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

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

 

技术分享

 

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

 

Server1

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

 

技术分享

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

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

 

 

/dev/vda   ---> /dev/drbd1

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

 

四.挂载测试

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

技术分享


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

技术分享


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

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

 

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

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

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

                                               

技术分享


 

 

Server1 : 

Server2:备

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

 

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

 

Forceoff 重启之后正常连接

技术分享


 

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

技术分享

参数说明:

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 ###创建测试页

 

技术分享


 

 

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

 

就会自动挂载到server2

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

 

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

 

 


drbd+apache+heartbeat

标签:drbd heartbeat apache

原文地址:http://11838039.blog.51cto.com/11828039/1827901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!