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

[经验分享] 基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-14 23:05:58 | 显示全部楼层 |阅读模式
一、简述
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是基于主机名通信的,需要对两台服务器配置主机名,并能够对实现主机名的解析


在/etc/hosts文件中添加如下行
192.168.1.201node2.wangfeng7399.com node2
192.168.1.200node1.wangfeng7399.com node1
      为了实验的方便性,本处我们基于ssh的密钥认证,实现两台主机登陆不需要密码


[iyunv@node1 ~]# ssh-keygen
[iyunv@node1 ~]# ssh-copy-id root@node2
在node2上同样使用以上命令生成sshkey
   3.在node1和node2上分别准备httpd,本处可以通过yum安装也可以通过编译源码安装,关于安装过程,本处不在累赘
   4.时间同步,本处使用的互联网的时间服务器,也可以自建时间服务器,关于如何自建时间服务器,将会在后续推出,敬请期待
[iyunv@node1 ha]# ntpdate time.windows.com
   查看两边的服务器时间是否同步


[iyunv@node1 ha]# ssh node2 'date';date
Thu Apr 1722:05:42CST 2014
Thu Apr 1722:05:42CST 2014
   5.安装heartbeat
     ①.解决依赖关系,由于centos6.5提供的为heartbeatV3版本,本处不能直接通过yum安装
yum install perl-TimeDate PyXML libnet net-snmp-libs -y
     说明:libnet包在eprl源中,请确保安装epel源
    ②.安装heartbeatV2版本的rpm包
[iyunv@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
①.准备配置文件


[iyunv@node1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
[iyunv@node1 heartbeat-2.1.4]# cp ha.cf authkeys /etc/ha.d/
     ②.修改配置文件


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



对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时,会自动安装此用户

[iyunv@node1 ha]# passwd hacluster
   8.将配置好的文件复制一份到node2节点上
[iyunv@node1 ha.d]# scp ha.cf authkeys node2:/etc/ha.d/
   9.准备nfs服务器,并使apache用户对其有读写执行的权限,并准备主页


[iyunv@localhost ~]# vi /etc/exports
/www/html 192.168.1.0/24(rw)
[iyunv@localhost ~]# setfacl -m u:apache:rwx /www/html/
   10.通过图形界面配置相关信息   
[iyunv@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.jpg wKioL1NP_4CQKxMaAACqGGs9OVI063.jpg
wKioL1NP_0yTOq6sAALN3RjnIM8281.jpg
wKiom1NP_8HThjbdAACqGGs9OVI266.jpg
   可以看到我们实现了高可用的效果
   切记:1.一定要注意添加顺序,顺序很重要,一定不要把顺序弄乱
         2.httpd和nfs一定不能开机自启动
   未完,我们下一次对mysql和lvs做高可用集群,书接下文


运维网声明 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-19172-1-1.html 上篇帖子: HA集群之Heartbeat浅析及heartbeat+haresource 下篇帖子: 基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(2)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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