一、简述

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的密钥认证,实现两台主机登陆不需要密码

[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.时间同步,本处使用的互联网的时间服务器,也可以自建时间服务器,关于如何自建时间服务器,将会在后续推出,敬请期待

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

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

[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安装

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

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

②.安装heartbeatV2版本的rpm包

[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

①.准备配置文件

[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/

②.修改配置文件

编辑authkey文件
auth 2
#1 crc
2 sha1 HI!hajsbdja2189wqjke
#3 md5 Hello!
[root@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时,会自动安装此用户

[root@node1 ha]# passwd hacluster

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

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

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

[root@localhost ~]# vi /etc/exports
/www/html 192.168.1.0/24(rw)
[root@localhost ~]# setfacl -m u:apache:rwx /www/html/

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

[root@node1 ha.d]# hb_gui &

11.配置过程

12.测试

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

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

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

未完,我们下一次对mysql和lvs做高可用集群,书接下文http://wangfeng7399.blog.51cto.com/3518031/1398676

转载于:https://blog.51cto.com/wangfeng7399/1397530

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

  1. Nacos高可用集群解决方案-Docker版本

    Nacos高可用集群解决方案-Docker版本 参考文章: (1)Nacos高可用集群解决方案-Docker版本 (2)https://www.cnblogs.com/hellxz/p/nacos-c ...

  2. 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群

    Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...

  3. HA高可用集群与RHCS集群套件

    一.HA基本概念 linux高可用集群(HA)原理详解:https://blog.csdn.net/xiaoyi23000/article/details/80163344 负载均衡.集群.高可用(H ...

  4. Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernetes1.9版本发布2017年12月15日,每三个月一个迭代 ...

  5. linux高可用集群(HA)原理详解

    高可用集群 一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服 ...

  6. HA(高可用)集群之AIS(corosync),高可用httpd+NFS

    **高可用集群的定义** 高可用集群,High Availability Cluster,简称HA Cluster:集群就是一组计算机,它们作为一个整体向用户提供各种资源,集群里的host就是节点(n ...

  7. s19.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(一)

    基于 Kubernetes v1.25 和 Docker 部署高可用集群 主要内容 Kubernetes 集群架构组成 容器运行时 CRI Kubernetes v1.25 新特性 Kubernete ...

  8. RKE部署Rancher v2.5.8 HA高可用集群 以及常见错误解决

    此博客,是根据Rancher官网文档,使用RKE测试部署最新发布版 Rancher v2.5.8 高可用集群的总结文档.Rancher文档 | K8S文档 | Rancher | Rancher文档 ...

  9. Kubeadm HA 1.9 高可用 集群 本地离线部署

    Kubeadm HA 1.9 高可用 集群 本地离线部署 k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9 ...

最新文章

  1. 苏宁数据中台架构实践(附ppt)
  2. 正则表达式三 :编译
  3. Windows Server 2008 R2之十一Windows Server Backup
  4. vb.net2019-多线程并行计算(1)
  5. linux windows多任务,windows是多用户多任务系统吗?
  6. MATLAB追加向量
  7. echarts饼状图mysql_echarts饼状图位置设置
  8. 工业计算机远程控制,基于SOCKET技术的计算机远程控制实现
  9. 视频压缩工具linux,Ubuntu视频转换工具-mencoder命令行参数
  10. Oracle 11gR2学习之二(创建数据库及OEM管理篇)
  11. docker 私服搭建以及镜像部署
  12. 疫情期间怎么上班?用电脑或手机远程办公很简单
  13. 服务器c盘清理文件,如何清理Windows服务器的C盘
  14. Linux tty字符终端下VIM显示混乱的解决方法
  15. 主数据管理项目建设经验分享
  16. Java使用comms-net jar包完成ftp文件上传进度的检测功能
  17. 计算机英语论文1000,1000字的英语论文范文大全
  18. 新浪微博分享错误代码列表
  19. java informix_Informix 数据库的数据类型
  20. CentOS7.5 远程桌面设置

热门文章

  1. Python 集合(set) 介绍
  2. Android关闭Activity
  3. Android开发学习笔记--一个有界面A+B的计算器
  4. start running 开始跑步减肥
  5. Xdebug 使用说明
  6. 《AI技术人才成长路线图》:完整版PPT及要点解读
  7. linux下iconv编码转换的用法
  8. 又偷偷夹带反战私货!npm生态还能信任吗?
  9. 求职和跳槽最好的月份要来了吗
  10. 原创 | 万万没想到,JVM内存结构的面试题可以问的这么难?