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让所有节点组成了一个集群。
keeplived 2 多长时间广播一次心跳
warntime 10 10秒内备用节点接受不到主节点的心跳,就向日志写一次警告,但不会发生资源切换。
deadtime 30 30秒内接收不到主节点的心跳,就判定主节点死亡,备用节点立即接管主节点资源。
initdead 120 主节点因故障重启,重启时间较长。
udpport 694 使用广播心跳的端口
ucast eth1 指定心跳网卡
auto_failback on 当主机服务器恢复正常,资源从备用节点上自动切回
node node1 设置主机名,通过uname命令查看
node node2
Distributed Replicated Block Device(DRBD)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像。DRBD工作在内核 当中的,类似于一种驱动模块。DRBD相当于一个RAID1功能的存储。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。DRBD的架构如下图
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
实验架构图如下
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
进入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
fdisk /dev/sdb(进行分区)
fdisk -l 查看分区
① 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模块
modprobe drbd
查看 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查看
① 安装: 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.iteye.com/blog/1773079
2. 51CTO视频:http://edu.51cto.com/course/course_id-2.html