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

[经验分享] linux heartbeat 的原理及配置过程

[复制链接]

尚未签到

发表于 2019-1-7 07:09:35 | 显示全部楼层 |阅读模式
  Linux-HA的全称是High-Availability Linux,它是一个开源项目。这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强Linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。 高可用集群是由一些硬件和软件组成连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。Heartbeat是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享IP地址的所有者等。heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
  Heartbeat有三个版本分别为Heartbeat v1.x,Heartbeat v2.x,Heartbeat v3.x。Heartbeat v1.x和Heartbeat v2.x版本的组成结构十分简单,所有模块都集中在heartbeat中,到了v3版本后,整个heartbeat项目进行了拆分,分为不同的项目来分别进行开发。

  
Heartbeat包括以下几个组件:
heartbeat – 节点间通信校验模块
  CRM - 集群资源管理模块
  
      heartbeat v1: haresources (配置接口:配置文件,文件名也叫haresources)
      heartbeat v2: crm (各节点均运行进程crmd,配置接口:客户端crmsh(shell),heartbeat-GUI)
      heartbeat v3 = heartbeat + pacemaker + cluster-glue:
  pacemaker:
      配置接口:
      CLI: crm(SuSE), pcs
      GUI: hawk, LCMC, pacemaker-mgmt
      cman + rgmanager:
      resource group manager: Failover Domain
  配置接口:
     RHCS: RedHat Cluster Suite
  配置接口:Conga (完全生命令周期的配置接口)
  


CCM - 维护集群成员的一致性
LRM - 本地资源管理模块
StonithDaemon - 使出现问题的节点从集群环境中脱离
logd - 非阻塞的日志记录
Recovery Manager - 应用故障恢
这里主要分析的是Heartbeat的集群通信机制,所以这里主要关注的是heartbeat模块。
heartbeat模块由以下几个进程构成:
master进程(masterprocess)
FIFO子进程(fifochild)
read子进程(readchild)
  write子进程(writech
  
  ild)
  

  
Heartbeat的原理
集群成员一致性管理模块(CCM

CCM用于管理集群节点成员,同时管理成员之间的关系和节点间资源的分配。Heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。ha-logd模块用于记录集群中所有模块和服务的运行信息。
本地资源管理器(LRM
LRM负责本地资源的启动、停止和监控,一般由LRM守护进程lrmd和节点监控进程Stonith Daemon组成。lrmd守护进程负责节点间的通信;Stonith Daemon通常是一个Fence设备,主要用于监控节点状态,当一个节点出现问题时处于正常状态的节点会通过Fence设备将其重启或关机以释放IP、磁盘等资源,始终保持资源被一个节点拥有,防止资源争用的发生。
集群资源管理模块(CRM
CRM用于处理节点和资源之间的依赖关系,同时,管理节点对资源的使用,一般由CRM守护进程crmd、集群策略引擎和集群转移引擎3个部分组成。集群策略引擎(Cluster policy engine)具体实施这些管理和依赖;集群转移引擎(Cluster transition engine)监控CRM模块的状态,当一个节点出现故障时,负责协调另一个节点上的进程进行合理的资源接管。
在Heartbeat集群中,最核心的是Heartbeat模块的心跳监测部分和集群资源管理模块的资源接管部分。心跳监测一般由串行接口通过串口线来实现,当然,也可以用交叉网线连接。两个节点之间通过串口线相互发送报文来告诉对方自己当前的状态。如果在指定的时间内未受到对方发送的报文,就认为对方失效,这时资源接管模块将启动,用来接管运行在对方主机上的资源或者服务。
  
  演示过程
  前提:
  一、要保持hosts文件的主机名和uname -n 显示的要一致。
  [root@node1 ~]# cat /etc/hosts
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  172.16.0.1  server.magelinux.com server
  172.16.24.6 node1.edu.com node1
  172.16.24.7 node2.edu.com node2
  172.16.24.8 node3.edu.com node3
  ~
  [root@node1 ~]# uname -n
  node1.edu.com
  

  如果不一致可以通过以下命令修改:
  [root@node1 ~]# vim /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=node1.edu.com
  [root@node1 ~]# vim /etc/hosts
  [root@node1 ~]# cat /etc/hosts
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  172.16.0.1  server.magelinux.com server
  172.16.24.6 node1.edu.com node1
  172.16.24.7 node2.edu.com node2
  172.16.24.8 node3.edu.com node3
  二、让两台主机基于ssh不通过密钥相互信

       第二个主机上执行相同的命令记提把主机名改成第一个主机的主机名

  
  三、时间要同步
  [root@node1 ~]# ssh node2.edu.com 'date';date
  Sun Apr 20 10:21:25 CST 2014
  Sun Apr 20 10:21:25 CST 2014
  四、安装heartbeat2
    heartbeat2各包之间有依赖关系,执行下面的命令解决依赖关系,
    yum install perl-TimeDate net-snmp-libs libnet PyXML
  

    rpm -ivh heartbeat-2.1.4-12.e16.rpm heartbeat-pils heartbeat-stonith
  五配置heartbeat2
  
5.1 配置主配置Ha.cf
以下将对主配置文件ha.cf的基本常用选项作详细说明:
[root@node1 ~]# vim /etc/ha.d/ha.cf
#logfacility local0           可注释掉此选项,开启下面的日志路径;
logfile /var/log/ha-log       设置heartbeat日志存放位置;
keepalive 2                   设定心跳(监测)时间时间为2秒;
warntime 5                    连续多长时间联系不上后开始警告提示;
deadtime 20                   连续多长时间联系不上后认为对方挂掉了(单位是妙);
initdead 120                  这里主要是给重启后预留的一段忽略时间段
udpport 694                   设置广播通信的端口,默认为694;
baud 19200                    设置串行通讯的波特率;
bcast eth1                    指明心跳使用以太网的广播方式,并且在eth1口上进行广播;
auto_failback off             恢复正常后是否需要再自动切换回来,此处off说明恢复后不需要切换;
node node1.edu.com            主节点主机名,可以通过“uname -n”查看;
node node2.edu.com            备用节点主机名;
ping 192.168.0.254            测试网络连通性,此处自定义,一般设为网关地址,但要保证是通的;
respawn hacluster /usr/lib/heartbeat/ipfail #可选,列出和heartbeat一起启动和关闭的进程;
5.2 配置资源文件Haresources
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源。
下面针对本测试项目作如下编辑:
[root@node1 ~]# vim /etc/ha.d/haresources
node1.edu.com 172.16.24.19/16/eth0/  httpd
  
5.3 配置双机互联认证文件Authkey
  可以先利用penssl生成一个密钥文件然后把密钥粘贴到配置方件中,具体如下
  
  [root@node1 ~]# openssl rand -hex 8
  314bb3c63ddbc062
  [root@node1 ~]# vim /etc/ha.d/authkeys

auth 2
2 sha13 14bb3c63ddbc062
  
5.4 配置备份节点的Heartbeat
在备份节点上也需要安装Heartbeat,安装方式与在主节点安装过程一样,这里不再重述,依次安装libnet和heartbeat源码包,安装完毕,注意,配置文件不需作任何更改:安装完成之后在主机1 上执行下面的操作:
[root @node1 ~]#  scp -p authkeys haresources ha.cf.node2:/etc/ha.d
  六、为两台主机配置WEB服务
  [root @node1 ~]# rpm -q httpd
  [root @node1 ~]# ssh node2 'rpm -q httpd'
  [root @node1 ~]# cd /var/www/html
  [root @node1 ~]#  vim index.html
  node1.magedu.com
  [root @node1 ~]# service httpd start
  [root @node1 ~]# curl http://172.16.100.7
  [root @node1 ~]# service httpd stop

  [root @node1 ~]# chkconfig httpd off

  为第二台主机配置web服务
  [root @node2 ~]# vim /var/www/html
  [root @node2 ~]# vim index.html
  [root @node2 ~]# node2.magedu.com
  

  [root @node2 ~]# service httpd start
  [root @node2 ~]# curl http://172.16.100.8
  [root @node2 ~]# service httpd stop

  [root @node2 ~]# chkconfig httpd off

  七、启动heartbeateb服务
  
  [root @node1 ~]#  service heartbeat start
  [root @node1 ~]#  ssh node2.magedu.com 'service heartbeat start'
  
  [root @node1 ~]# ssh node1.magedu.com 'service heartbeat stop'
  [root @node1 ~]# ssh node1.magedu.com 'service heartbeat start'
  


  

  

  





运维网声明 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-660105-1-1.html 上篇帖子: linux视频教程之heartbeat 下篇帖子: 你所不知道的Pt heartbeat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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