基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)

一、简述

Heartbeat通过插件技术实现了集群间的串口、多播、广播和组播通信,在配置的时候可以根据通信媒介选择采用的通信协议,heartbeat启动的时候检查这些媒介是否存在,如果存在则加载相应的通信模块。这样开发人员可以很方便地添加新的通信模块,比如添加红外线通信模块。
对于高可用集群系统,如果集群间的通信不可靠,那么很明显集群本身也不可靠。Heartbeat采用UDP协议和串口进行通信,它们本身是不可靠的,可靠性必须由上层应用来提供。那么怎样保证消息传递的可靠性呢?
Heartbeat通过冗余通信通道和消息重传机制来保证通信的可靠性。Heartbeat检测主通信链路工作状态的同时也检测备用通信链路状态,并把这一状态报告给系统管理员,这样可以大大减少因为多重失效引起的集群故障不能恢复。例如,某个工作人员不小心拨下了一个备份通信链路,一两个月以后主通信链路也失效了,系统就不能再进行通信了。通过报告备份通信链路的工作状态和主通信链路的状态,可以完全避免这种情况。因为这样在主通信链路失效以前,就可以检测到备份工作链路失效,从而在主通信链路失效前修复备份通信链路。
Heartbeat通过实现不同的通信子系统,从而避免了某一通信子系统失效而引起的通信失效。最典型的就是采用以太网和串口相结合的通信方式。这被认为是当前的最好实践,有几个理由可以使我们选择采用串口通信:
(1)IP通信子系统的失效不太可能影响到串口子系统。
(2)串口不需要复杂的外部设备和电源。
(3)串口设备简单,在实践中非常可靠。
(4)串口可以非常容易地专用于集群通信。
(5)串口的直连线因为偶然性掉线事件很少。
不管是采用串口还是以太网IP协议进行通信,heartbeat都实现了一套消息重传协议,保证消息包的可靠传递。实现消息包重传有两种协议,一种是发送者发起,另一种是接收者发起。
对于发送者发起协议,一般情况下接收者会发送一个消息包的确认。发送者维护一个计时器,并在计时器到时的时候重传那些还没有收到确认的消息包。这种方法容易引起发送者溢出,因为每一台机器的每一个消息包都需要确认,使得要发送的消息包成倍增长。这种现像被称为发送者(或者ACK)内爆(implosion)。
对于接收者发起协议,采用这种协议通信双方的接收者通过序列号负责进行错误检测。当检测到消息包丢失时,接收者请求发送者重传消息包。采用这种方法,如果消息包没有被送达任何一个接收者,那么发送者容易因NACK溢出,因为每个接收者都会向发送者发送一个重传请求,这会引起发送者的负载过高。这种现像被称为NACK内爆(implosion)。
Heartbeat实现的是接收者发起协议的一个变种,它采用计时器来限制过多的重传,在计时器时间内限制接收者请求重传消息包的次数,这样发送者重传消息包的次数也被相应的限制了,从而严格的限制了NACK内爆。

二、对httpd做高可用集群

   1.环境说明    

   我们通过192.168.1.210对外提供web服务,两个客户端的ip地址分别为192.168.1.200和192.168.1.201,在192.168.1.202上提供了nfs服务为两台web服务器提供共享存储

   2.前期准备工作

     由于heartbeat是基于主机名通信的,需要对两台服务器配置主机名,并能够对实现主机名的解析

1
2
3
在/etc/hosts文件中添加如下行
192.168 . 1 .201node2.wangfeng7399.com node2
192.168 . 1 .200node1.wangfeng7399.com node1

      为了实验的方便性,本处我们基于ssh的密钥认证,实现两台主机登陆不需要密码

1
2
3
[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id root@node2
在node2上同样使用以上命令生成sshkey

   3.在node1和node2上分别准备httpd,本处可以通过yum安装也可以通过编译源码安装,关于安装过程,本处不在累赘,如想了解过程,其移步至本人的博客http://wangfeng7399.blog.51cto.com/3518031/1379373

   4.时间同步,本处使用的互联网的时间服务器,也可以自建时间服务器,关于如何自建时间服务器,将会在后续推出,敬请期待

1
[root@node1 ha]# ntpdate time.windows.com

   查看两边的服务器时间是否同步

1
2
3
[root@node1 ha]# ssh node2  'date' ;date
Thu Apr  1722 : 05 :42CST  2014
Thu Apr  1722 : 05 :42CST  2014

   5.安装heartbeat

     ①.解决依赖关系,由于centos6.5提供的为heartbeatV3版本,本处不能直接通过yum安装

1
yum install perl-TimeDate PyXML libnet net-snmp-libs -y

     说明:libnet包在eprl源中,请确保安装epel源

    ②.安装heartbeatV2版本的rpm包

1
[root@node1 ha]# rpm -ivh heartbeat- 2.1 . 4 - 12 .el6.x86_64.rpm heartbeat-pils- 2.1 . 4 - 12 .el6.x86_64.rpm heartbeat-stonith- 2.1 . 4 - 12 .el6.x86_64.rpm heartbeat-gui- 2.1 . 4 - 12 .el6.x86_64.rpm

   6.配置heartbeat

①.准备配置文件

1
2
[root@node1 ha.d]# cd /usr/share/doc/heartbeat- 2.1 . 4 /
[root@node1 heartbeat- 2.1 . 4 ]# cp ha.cf authkeys /etc/ha.d/

     ②.修改配置文件

1
2
3
4
5
6
7
编辑authkey文件
auth  2
# 1  crc
2  sha1 HI!hajsbdja2189wqjke
# 3  md5 Hello!
[root@node1 ha.d]# chmod  600  authkeys
修改认证文件的权限
 修改ha.cf文件      


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
对ha.cf详解
#debugfile / var /log/ha-debug 是否开启调试功能,已经调试功能的文件位置
logfile        / var /log/ha-log 日志文件的保存位置
keepalive  1   每个多长时间发送一次心跳信息,默认单位为s,也支持以ms为单位
deadtime  10    在检测不到对方心跳,替换的时间
warntime  8     警告时间
initdead  120 启动heartbeat后多长时间开始检查心跳
udpport  694   基于那个端口检测心跳信息
crm on 以crm的模块开启
bcast  eth0            # Linux  linux广播的端口
mcast eth0  225.0 . 0.169410 多播的地址
ucast eth0  192.168 . 1.2 组播的地址
compression    bz2 压缩传输算法         on 主节点启动是否自动切换回主节点
ping  192.168 . 1.253 仲裁设备,可以指向网关
#ping_group group1  10.10 . 10.25410 . 10.10 . 253 仲裁设备组
#debug 1debug的级别
compression_threshold  2 压缩的最低大小,单位为kb
node node1.wangfeng7399.com node节点,切记,本处不能使用ip地址
node node2.wangfeng7399.com node节点,切记,本处不能使用ip地址

  7.为用户hacluster创建密码,在安装heartbeat-gui时,会自动安装此用户


1
[root@node1 ha]# passwd hacluster

    8.将配置好的文件复制一份到node2节点上

1
[root@node1 ha.d]# scp ha.cf authkeys node2:/etc/ha.d/

   9.准备nfs服务器,并使apache用户对其有读写执行的权限,并准备主页

1
2
3
[root@localhost ~]# vi /etc/exports
/www/html  192.168 . 1.0 / 24 (rw)
[root@localhost ~]# setfacl -m u:apache:rwx /www/html/

   10.通过图形界面配置相关信息    

1
[root@node1 ha.d]# hb_gui &

   11.配置过程

wKioL1NP_vLw91PVAAFiyeE6Uw0482.jpg

wKiom1NP_xvD6eczAAIgl3pGkAY217.jpg

wKioL1NP_vLDRwCPAAHYgdJeEe8146.jpg

wKiom1NP_xyQY7IhAAIUxPBKq-U696.jpg

wKioL1NP_vPwPFF5AAIjs9I58w4458.jpg

wKiom1NP_xzyK6DZAAMvV5pbL6A433.jpg

wKioL1NP_vOQgD0AAAMb3cur1so817.jpg

wKiom1NP_xygLdmqAAKKNlp4Mgk165.jpg

wKioL1NP_vPBKjzOAAMKhBTYRlM487.jpg

wKiom1NP_x3CjVF-AAKXyebjBvo472.jpg

wKioL1NP_yLiKg97AAJMDzoayPk964.jpg

wKiom1NP_yCg0WlHAAL5ADQqRfM936.jpg

   12.测试

wKiom1NP_5vxZ7BOAACqGGs9OVI015.jpgwKioL1NP_4CQKxMaAACqGGs9OVI063.jpg

wKioL1NP_0yTOq6sAALN3RjnIM8281.jpg

wKiom1NP_8HThjbdAACqGGs9OVI266.jpg

   可以看到我们实现了高可用的效果

   切记:1.一定要注意添加顺序,顺序很重要,一定不要把顺序弄乱

         2.httpd和nfs一定不能开机自启动




本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1397530,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值