diaoyudao 发表于 2018-11-19 12:49:29

drbd+apache+heartbeat

  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服务器之间共享块设备,共享文件系统和数据
  
  
  
  实验环境:
  节点1:server1.example.com172.25.29.1
  节点2:server2.example.com172.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(内核编译)   ###编译
  编译的过程中根据报错提示安装gccflex
  安装完成后需要重新编译
  
  编译完成后生成三个文件drbd.spec drbd-km.spec drbd-kernel.spec
  
  
  

  

  

  

  


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

  

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

  

  
  # rpm -ivh *   ###安装
   scp*root@172.25.29.2:/drbd   ###server2只需要rpm -ivh *安装
  
  二.配置
  Server1
  # 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;
  }
  }
  # scp example.resroot@172.25.29.2:/etc/drbd.d
  
  远程复制到server2 中
  工作方式为主备模式
  
  三.初始化并载入数据
  

  

  
  
  服务启动失败,需要加载内核模块,进入到解压目录,rpmbuild命令编译成rpm包,安装kernel-devel后需要重新编译生成rpm包
  
  进入生成rpm包的目录/root/rpmbuild/RPMS/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/drbdstart
  注意:两边都要开启服务,否则先开启服务的那一个主机会等待另一个主机开启服务,一直等待,直到另外一个主机开启服务为止
  
  
  
  两个之间还,没有建立连接inconsistent
  
  Server1
   drbdadm primary example --force    ####把server1设置为primary    进行数据的同步
  
  

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

  

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

  

   现象:主设备server1挂载再卸载,但是server2设备还是挂载失败
  因为server2是从设备,只能在主设备上进行挂载
  
  # drbdadmsecondary example   ###把server1改成从设备
  # drbdadmprimary example   ###把server2改成主设备
  然后就可以在server2上实现挂载
                                               
  

  

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

  

  
  Server1;stop network 出现如上现象独立工作
  Server2在等待
  
  
  
  Server2:drbdadm disconnect example###断开连接
  Drbdadmconnect--discard-my-data example ###重新连接
  
  Server1:drbdadm 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###两边都开启服务
  
  当前server1为primary,所以先挂载到server1上
  Cd /var/www/html    cat index.html    linux ###创建测试页
  
  

  

  
  
  # /etc/init.d/heartbeatstop    ##server1上停止心跳服务
  
  就会自动挂载到server2上
  Server1服务恢复时,又会自动挂载到server1上(主从设备)
  
  当srver1httpd服务停止,挂载位置不变,curl172.25.29.100   没有内容
  
  
  




页: [1]
查看完整版本: drbd+apache+heartbeat