奥尔覅几22 发表于 2015-11-21 11:31:54

DRBD+HeartBeat架构实验

HeartBeat模块
  CRM:(Cluster Resource Manager)集群的大脑,根据heartbeart收集回来的节点状态交给CCM模块来更新集群的member ship,并指挥LRM对节点资源进行“启动”,“停止”,总之就是决定资源最终应该在那个节点上运行。
  LRM:(Local Resource Manger)操作和管理资源的模块,负责对资源监控,启动,停止。三个资源脚本存放路径
  heartbeat: /etc/ha.d/resoruce.d
  ocf :/usr/lib/resource.d/heartbeat
  lsb:/etc/init.d
  CIB:收集资源的原始信息以及不断更新资源的状态变化,保存在cib.xml。相当于cluster.conf文件,即集群配置文件。
  CCM:保持各节点之间的成员关系,heatbeat仅仅是一个通信工具,而CCM让所有节点组成了一个集群。

HeartBeat配置文件
  keeplived 2   多长时间广播一次心跳
  warntime 10 10秒内备用节点接受不到主节点的心跳,就向日志写一次警告,但不会发生资源切换。
  deadtime 30 30秒内接收不到主节点的心跳,就判定主节点死亡,备用节点立即接管主节点资源。
  initdead120 主节点因故障重启,重启时间较长。
  udpport 694    使用广播心跳的端口
  ucast eth1      指定心跳网卡
  auto_failback on 当主机服务器恢复正常,资源从备用节点上自动切回
  node node1    设置主机名,通过uname命令查看
  node node2

DRBD
  Distributed Replicated Block Device(DRBD)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像。DRBD工作在内核 当中的,类似于一种驱动模块。DRBD相当于一个RAID1功能的存储。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。DRBD的架构如下图




实验

主机名称:HaMater和HaBack
  HaMaster eth0:192.168.10.20
  HaBack eth0:   192.168.10.21
  HaMaster eth1: 192.168.10.10
  HaBack eth1:    192.168.10.20      
  安装heartbeat yum install -y heartbeat
  实验架构图如下




下载和安装DRBD(在HaMaster和HaBack上执行)
  http://oss.linbit.com/drbd/
  tar zxvf drbd-8.4.3.tar.gz
  cd drbd-8.4.3
  ./configure --prefix=/usr/local/drbd --with-km
  make KDIR=/usr/src/kernels/`uname -r`/(指定内核所在的绝对路径)
  mkdir -p /usr/local/drbd/var/run/drbd/
  cp /usr/local/drbd/etc/rc.d/init.d/drbd/etc/rc.d/init.d/
  chkconfig --add drbd
  chkconfig drbd on
  



安装DRDB模块(在HaMaster和HaBack上执行)
  进入DRBD的解压目录的drbd中,cd /root/software/drbd-8.4.3/drbd
  make clean
  make KDIR=/usr/src/kernels/`uname -r`/
  cp drbd.ko   /lib/modules/`uname -r`/kernel/lib/
  depmod
  



添加存储(实验对的存储为/dev/sdb1,在HaMaster和HaBack上执行)
  fdisk /dev/sdb(进行分区)
  fdisk -l 查看分区
  



配置DRBD(在HaMaster和HaBack上执行)
  ① DRBD主配置文件
  /usr/local/drbd/etc/drbd.conf,该文件中包含一个全局配置文件和所有的资源文件,内容如下
  

include "drbd.d/global_common.conf";
include "drbd.d/*.res";
  
  
  
  ② 修改global_common.conf文件,在net处添加上protocol C;
  /usr/local/drbd/etc/drbd.d/global_common.conf

  ③ 添加资源文件,新建资源r0,命名为 r0.res,内容如下

resource r0{
on HaMaster{
device /dev/drbd0;
disk   /dev/sdb1;
address 192.168.10.20:7789;
meta-disk internal;
}
on HaBack{
device /dev/drbd0;
disk   /dev/sdb1;
address 192.168.10.21:7789;
meta-disk internal;
}
}
  ④ 加载DRDB模块
  modprobedrbd
  查看 lsmod | grep drbd


  (为什么执行下面一个步骤,不太清楚)
  dd if=/dev/zero of=/dev/sdb1 bs=1M count=100
  创建资源 r0:drbdadm create-md r0
  启动资源:drbdadn up 0
  启动服务:/etc/init.d/drbd start
  ⑤ 主从节点状态查看和主从节点设置
  查看节点drbd状态:cat/proc/drbd
  设置主节点:drbdadm primary --force r0
  设置从节点:drbdadm secondary r0
  ⑥ 格式化drbd,并挂载
  mkfs.ext3/dev/drbd0
  mkdir /db
  mount /dev/drbd0 /db
  ⑦ 测试
  手动切换主从节点,通过cat /proc/drbd查看


安装和配置HeartBeat(在HaMaster和HaBack上执行)
  ① 安装: yum -y install heartbeat
  ② 从安装路径下复制模板文件

cd /usr/share/doc/heartbeat-2.1.3
cp ha.cf authkeys haresources /etc/ha.d/

  ③ 配置 ha.cf

logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth1 192.168.10.10(对方心跳网卡IP)
node HaMaster
node HaBack

  ④ 配置 authkeys

auth 1
1 crc
  ⑤ 配置 haresources

HaMaster drbddisk::r0 Filesystem::/dev/drbd0::/db::ext3 mysqld
测试
  启动DRBD:service drbd start (HaMaster和HaBack)
  启动heartbeat:service heartbeat(HaMaster和HaBack)
  使用 tail -f /var/log/messages查看服务启动日志
  使用 mount查看硬盘是否在HaMaster上挂载,而位在HaBack上挂载
  使用 /etc/init.d/mysqld 查看mysql是否启动。
  


  停止HaMaster上的heartbeat,查看资源是否能被HaBack全部接管
  重新启动HaMaster上的heartbeat,查看资源能从HaBack上接管回来。
  



参考
  1. 博客:http://czmmiao.iyunv.com/blog/1773079
  2. 51CTO视频:http://edu.iyunv.com/course/course_id-2.html


页: [1]
查看完整版本: DRBD+HeartBeat架构实验