设为首页 收藏本站
查看: 1123|回复: 0

[经验分享] drbd+apache+heartbeat

[复制链接]

尚未签到

发表于 2018-11-19 12:49:29 | 显示全部楼层 |阅读模式
  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服务器之间共享块设备,共享文件系统和数据

   DSC0000.png
  
  
  实验环境:
  节点1:server1.example.com  172.25.29.1
  节点2:server2.example.com  172.25.29.2
  Vip:172.25.29.100
  Selinux和iptables处于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  
  安装完成后需要重新编译
   DSC0001.png
  编译完成后生成三个文件  drbd.spec drbd-km.spec drbd-kernel.spec
  
  
  
DSC0002.png

  

  

  

  


  
   rpmbuild -bb drbd.spec   ###编译后做成*.rpm包
  根据错误提示把未解压的包拷贝到指定目录下
  重新编译
  
  
DSC0003.png

  

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

  

  
  [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 中
  工作方式为主备模式
  
  三.初始化并载入数据
  
DSC0005.png

  

  
   DSC0006.png
  服务启动失败,需要加载内核模块,进入到解压目录,rpmbuild命令编译成rpm包,安装kernel-devel后需要重新编译生成rpm包
  
  进入生成rpm包的目录/root/rpmbuild/RPMS/x86_64,安装与内核相关的包:
   DSC0007.png
  
  
  [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中也安装此包
   DSC0008.png
  
  安装完这个包后,就可以成功开启服务/etc/init.d/drbd  start
  注意:两边都要开启服务,否则先开启服务的那一个主机会等待另一个主机开启服务,一直等待,直到另外一个主机开启服务为止
  
   DSC0009.png
  
  两个之间还,没有建立连接inconsistent
  
  Server1
   drbdadm primary example --force    ####把server1设置为primary    进行数据的同步
  
  
DSC00010.png

  Primary/Secondary   ###Primary在前就表示自己是主设备
  上面的图片表示server2是从设备;update已经建立连接
  
  
  /dev/vda   ---> /dev/drbd1
  [root@server1 x86_64]# mkfs.ext4 /dev/drbd1   ###只能对/dev/drbd1 进行操作
  
  四.挂载测试
  格式化完成后,在server1中将/dev/drbd1挂载到/mnt目录下可以挂载
  
DSC00011.png

  

  卸载之后,server2还是挂载不上
  
DSC00012.png

  

   现象:主设备server1挂载再卸载,但是server2设备还是挂载失败
  因为server2是从设备,只能在主设备上进行挂载
  
  [root@server1 ~]# drbdadm  secondary example   ###把server1改成从设备
  [root@server2 ~]# drbdadm  primary example     ###把server2改成主设备
  然后就可以在server2上实现挂载
                                                 
  
DSC00013.png

  

  
  
  Server1 : 主
  Server2:备
  Server1:echo  c > /proc/sysrq-trigger  ###内核崩掉
  
  Drbd-overciew  ###查看是否连接还是等待连接
  
  Forceoff 重启之后正常连接
  
DSC00014.png

  

  
  Server1;stop network 出现如上现象独立工作
  Server2在等待
  
  
  
  Server2:drbdadm disconnect example  ###断开连接
  Drbdadm  connect  --discard-my-data example ###重新连接
  
  Server1:drbdadm connect example
  五.把drbd挂载到httpd默认发布目录上(drbd+heartbeat)
  Server1.server2
  
  /etc/init.d/heartbeat   stop
  
  Vim /etc/ha.d/haresources
DSC00015.png

  参数说明:
  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  ###两边都开启服务
  
  当前server1为primary,所以先挂载到server1上
  Cd /var/www/html    cat index.html    linux ###创建测试页
  
  
DSC00016.png

  

  
  
  [root@server1 ha.d]# /etc/init.d/heartbeat  stop    ##server1上停止心跳服务
  
  就会自动挂载到server2上
  Server1服务恢复时,又会自动挂载到server1上(主从设备)
  
  当srver1httpd服务停止,挂载位置不变,curl  172.25.29.100   没有内容
  
  
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637022-1-1.html 上篇帖子: RHEL6.6下面搭建LAMP环境(之__Apache源码安装) 下篇帖子: Apache Shiro学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表