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

[经验分享] DRBD+Heartbeat双机热备硬件故障自动切换

[复制链接]

尚未签到

发表于 2019-1-7 12:48:50 | 显示全部楼层 |阅读模式
DRBD+Heartbeat


  测试环境:
  Node1 192.168.122.2(master)两块磁盘(vda系统,vdb数据盘)
  Node2 192.168.122.8(slave)两块磁盘
  服务器操作系统版本centos6.3 32bit
  vdb硬盘不要格式化
  一、DRBD安装
  准备工作
  安装下面依赖包
  #yum install make gcc gcc-c++ flex kernel-devel kernel-headers
  注意:安装的kernel-devel的内核源码(内核源码路径/usr/src/kernel/)和当前系统的kernel版本(uname -r)不一致的话需要把当前内核更新一下。#yum update kernel-版本号
  修改默认引导内核为最新版本内核,默认更新后最新的内核排在最上面,不用修改。如果不是就按照下面方法修改。
  修改/etc/grub.conf 查看最新的内核版本排在第几个,从0开始。title开头的行是内核。将default=设置为要启动的内核顺序数。
  重启服务器
  配置DRBD masterslave服务器配置一样)
  下载drbd源码http://oss.linbit.com/drbd/
  解压tar zxvf drbd-8.4.3.tar.gz
  进入解压后的drbd-8.4.3
  建立drbd的安装目录/usr/local/drbd
  开始编译安装
  ./configure --prefix=/usr/local/drbd --with-km
  make KDIR=/usr/src/kernels/内核源码目录/
  make install
  mkdir -p /usr/local/drbd/var/run/drbd
  cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d/
  分析可加载模块的依赖性,生成modules.dep和映射文件
  depmod
  加载模块
  modprobe drbd
  查看是否已经加载了drbd模块
  lsmod |grep drbd
  建立配置文件
  vi /usr/local/drbd/etc/drbd.conf
  写入
  include "drbd.d/global_common.conf";
  include "drbd.d/*.res";
  修改/usr/local/drbd/etc/global_common.conf 文件
  net {

#DRBD复制有三种:
#协议A,本地写入完成,数据包已在发送队列中,则写被认为是完成。在一个节点故障时可能发送数据丢失,因为要被写入远程的数据可能仍然在发送队列。
#协议B,本地吸入完成且数据包到底对等节点则认为写在主节点完成,数据丢失可能发送在参加的两个节点同事故障情况下,因为在飞行的数据可能不会提交到磁盘
#协议C,只有本地和远程节点的磁盘已经确认写操作完成,写才认为完成。没有数据丢失情况。但网络带宽决定I/O吞吐量。
#应用最多的是协议C
#添加协议C(大写)
  protocol C;

  protocol C;
  }
  更正,之前r0.res的路径写错,今天看的时候才发现
  vi /usr/local/drbd/etc/drbd.d/r0.res
  #resource后面跟drbd资源
  resource r0 {
  #on 后面跟节点的主机名
  on node1 {
  #device设置drbd的设备名称
  device/dev/drbd1;
  #drbd设备同步的物理磁盘
  disk/dev/vdb;
  #节点drbd监听的端口
  address 192.168.122.2:7789;
  meta-diskinternal;
  }
  on node2 {
  device/dev/drbd1;
  disk/dev/vdb;
  address 192.168.122.8:7789;
  meta-diskinternal;
  }
  }
  修改主机名
  #hostname 新主机名
  修改文件/etc/sysconfig/network中主机名
  添加本地解析vi /etc/hosts
  创建drbd记录信息的数据块
  #drbdadm create-md r0
  分别在两个机器启动drbd
  #service drbd start
  启动后查看drbd状态,两台都是SecondaryInconsistent表示不一致,刚配好的DRBD两个节点都认为自己是Secondary,手工指定一台为primary
  service drbd status或者cat /proc/drbd
  m:rescsrodspmountedfstype
  1:r0ConnectedSecondary/SecondaryInconsistent/InconsistentC
  node1master)上运行指定它primary
  #drbdadm primary r0 –force
  完成后再次查看drbd的状态
  service drbd status或者cat /proc/drbd
  会发现两个服务器正在同步
  
  drbd driver loaded OK; device status:
  version: 8.4.3 (api:1/proto:86-101)
  GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master-01, 2013-07-22 23:01:55
  m:rescsrodspmountedfstype
  0:r0SyncTargetSecondary/SecondaryInconsistent/UpToDateC
  ...sync'ed:74.1%(5316/20476)M
  
  
  
  等完成后会看到ds变成UpToDate/UpToDate (实时)
  下一步对drbd的设备进行格式化,此操作只在primary服务器上进行Secondary服务器起来后什么都不需要操作。
  
  即使没有同步完,也可以对drbd设备进行格式化
  #mkfs.ext3 /dev/drbd1
  挂载drbd分区
  #/mount /dev/drbd1 /data
  注意:集群中只有primary服务器可以挂载设备,secondary挂载会报错。
  同步测试
  node1primary)服务器上向/data写一些文件
  然后停止drbd服务
  #service drbd stop
  node2secondary)将其设置为primary
  #drbdadm primary all或者drbdadm primary r0
  secondary服务器上就可以挂载/dev/drbd1 到自己的挂载点/data
  查看刚才在node1上写的文件是否同步到node2上。
  二、安装Heartbeat
  操作系统Centos6.3默认的yum源没有heartbeat,需要使用epel的源
  下载#wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
  安装#rpm –Uvh epel-release-6-8.noarch.rpm
  安装
  #yum install heartbeat
  配置masterheartbeat
  进入/etc/ha.d/创建ha.cf文件,写入下面内容
  debugfile /var/log/ha-debug
  logfile /var/log/ha-log
  keepalive 2
  deadtime 10
  warntime 6
  initdead 10
  udpport 694
  #slave服务器的IP
  ucast eth0 192.168.122.2
  #列出masterslave节点
  node node1
  node node2
  auto_failback off
  respawn hacluster /usr/lib/heartbeat/ipfail
  在同目录创建验证文件authkeys内容如下
  auth 1
  1 crc
  在同目录创建haresources文件内容如下
  #下面的IP是集群的VIPdrbddisk是切换时调用的脚本
  node1 192.168.122.9 drbddisk::r0 Filesystem::/dev/drbd1::/data::ext4
  drbd的源码中的scripts目录中复制drbddisk脚本到/etc/ha.d/resource.d/
  启动masterheartbeat
  service heartbeat start
  配置slave
  文件ha.cf内容稍有不同
  debugfile /var/log/ha-debug
  logfile /var/log/ha-log
  keepalive 2
  deadtime 10
  warntime 6
  initdead 10
  udpport 694
  #master服务器的IP
  ucast eth0 192.168.122.8
  #列出masterslave节点
  node node1
  node node2
  auto_failback off
  respawn hacluster /usr/lib/heartbeat/ipfail
  文件haresources内容
  node2 192.168.122.9 drbddisk::r0 Filesystem::/dev/drbd1::/data::ext4
  同样需要drbd的源码中的scripts目录中复制drbddisk脚本到/etc/ha.d/resource.d/
  其他配置和master一样
  Drbd自动切换测试
  master上停止heartbeat服务
  会发现slave服务器上会自动挂载/dev/drbd1/data,查看/data中数据和master上一致。




运维网声明 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-660360-1-1.html 上篇帖子: 心跳脑裂解决方案之Heartbeat的Stonith配置 下篇帖子: 搭建基于Heartbeat v2+NFS的高可用Web集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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