Heartbeat+drbd

Heartbeat是Linux-HA工程的一个组件,自1999年开始到如今,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内获得了普遍的应用。Heartbeat经过以太网交叉线后者串口电线来传输Heartbeat信号,来对集群中的主机进行心跳监控。当主服务器出现故障的时候,没法响应心跳信息,这个时候备用服务器就会把服务资源抢过去以实现服务的不间断使用。Heartbeat除了重要的Heartbeat组件外还包括如下组件:html

Heartbeat包括如下几个组件:node

heartbeat – 节点间通讯校验模块linux

CRM - 集群资源管理模块vim

CCM - 维护集群成员的一致性api

LRM - 本地资源管理模块服务器

StonithDaemon - 提供节点重启服务网络

logd - 非阻塞的日志记录app

apphbd - 提供应用程序级的看门狗计时器ide

Recovery Manager - 应用故障恢复测试

底层结构–包括插件接口、进程间通讯等

CTS – 集群测试系统,集群压力测试

在HA集群中备机接管服务的时候必定要保持数据的一致性,在Heartbeat中咱们能够经过DRBD来实现服务器之间的数据的同步,代替共享磁盘阵,由于。在主节点写入的数据会经过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,并且使用DRBD不须要太多的硬件的投资。

主机环境:rhel6 x86_64 selinux and iptables disabled

主机:server2.example.com 172.25.254.2

副机:server3.example.com 172.25.254.3

从oss.linbit.com/drbd下载所需的安装包

解决依赖性: 在server主机上:

yum install gcc flex rpm-build kernel-devel -y 
tar zxf drbd-8.4.3.tar.gz 
cd  drbd-8.4.3
./configure --enable-spec --with-km

编译生成 drbd rpm包:

rpmbuild -bb drbd.spec

提示须要将drbd包放入用户家目录的/rpmbuild/SOURCES/下 再次编译:

wKiom1dishLwYtdXAAA6acG0fYI322.png

rpmbuild -bb drbd.spec

编译 drbd 内核模块

rpmbuild -bb drbd-km.speccd

安装生成的rpm包

cd /root/rpmbuild/RPMS/x86_64/
yum install *

将生成的rpm包复制到server3主机上安装:

scp /root/rpmbuild/RPMS/x86_64/* 172.25.254.3:

配置: 在/etc/drbd.d/目录下建立任意以.res结尾的配置文件

vim /etc/drbd.d/example.res

添加以下配置: resource example { meta-disk internal; device /dev/drbd1; syncer { verify-alg sha1; } on server2.example.com { disk /dev/vda; address 172.25.254.2:7789; } on server3.example.com { disk /dev/vda; address 172.25.254.3:7789; } } 初始化drbd

drbdadm create-md example

在server3主机上作上述一样的操做

同时启动server2和server3主机的drbd

/etc/init.d/drbd start

将server2主机强制设为主节点并同步数据

drbdsetup /dev/drbd1 primary --force

在两台主机上用cat /proc/drbd命令能够同时看到同步状态

wKioL1disz-ClRHbAADEBCdNeAY690.png-wh_50

同步结束后格式化drbd1磁盘

mkfs.ext4 /dev/drbd1

挂载文件系统并写入数据

mount /dev/drbd1 /var/www/html
echo "hello.example.com" >/var/www/html/index.html

卸载文件系统并把两台主机都设为secondary节点

umount /dev/drbd1
drbdadm secondary example

drbd配置完后接下来就是heartbeat的配置了。(在两台机子中作相同步骤:)

安装软件包:

yum install heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm -y

向/etc/ha.d/里拷入配置文件.

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

更改配置文件ha.cf:

vim /etc/ha.d/ha.cf
  logfile /var/log/ha-log #日志文件
  keepalive 2             #心跳时间
  deadtime 30             #无响应时间
  warntime 10       #警告时间
  initdead 60             #守护进程启动后主机启动资源须要等待的时间
  udpport 694             #端口
 cast   eth0             #使用物理网卡eth0传输心跳消息
 auto_failback on        #设置当主机修复后服务是否回返到主机
 node    server2.example.com
 node    server3.example.com #设置节点,主机在上副机在下
 ping 172.25.254.55      #判断主副机的网络情况
 respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster #指定用户和用户组

在/etc/ha.d/haresources文件配置要启动的资源

server2.example.com  IPaddr::172.25.254.100/24/eth0 drbddisk::example Filesystem::/dev/drbd1::/var/www/html::ext4 httpd

server2.example.com: 主节点

IPaddr::172.25.254.100/24/eth0: 虚拟IP

drbddisk::example: 启用以前配置的drbd

Filesystem::/dev/drbd1::/var/www/html::ext4: 文件系统

httpd: 服务

配置authkeys文件

 vim /etc/ha.d/authkeys

启用明文加密的方式:

auth 1
1 crc

将authkeys文件的权限改成600

chmod 600 authkeys

测试: 经过访问虚拟IP能够看到以前作drbd时候所作的网页了

wKiom1diskOQ9knzAAAiwhel6a0412.png-wh_50