Linux-HA开源软件Heartbeat(安装篇)

一、 heartbeat的概念
Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的集解决方案。其中Heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测集中的系统服务、在集中的节点间转移共享 IP 地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用,也发行了很多的版本,可以从Linux-HA的下载到Heartbeat的最新版本。
 
二、 HA集中的相关术语
1.节点(node)
运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和heartbeat软件服务,在heartbeat集中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘
、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。
2.资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管,heartbeat中,可以当做资源的实体有:
  磁盘分区、文件系统
  IP地址
  应用程序服务
  NFS文件系统
3.事件(event)
也就是集中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
4.动作(action)
 事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。

三、 Heartbeat的组成与原理

1.Heartbeat的组成
Heartbeat提供了高可用集最基本的功能,例如,节点间的内部通信方式、集合作管理机制、监控工具和失效切换功能等等,目前的最新版本是Heartbeat2.x,这里的讲述也是以Heartbeat2.x为主,下面介绍Heartbeat2.0的内部组成,主要分为以下几大部分:
  heartbeat: 节点间通信检测模块
  ha-logd: 集事件日志服务
  CCM(Consensus Cluster Membership):集成员一致性管理模块
  LRM (Local Resource Manager):本地资源管理模块
  Stonith Daemon: 使出现问题的节点从集环境中脱离
  CRM(Cluster resource management):集资源管理模块
  Cluster policy engine: 集策略引擎
  Cluster transition engine:集转移引擎
图1显示了Heartbeat2.0内部结构组成:
        Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Mon、Ldirector等。Heartbeat自身包含了几个插件,分别是ipfail、Stonith和Ldirect
ord,介绍如下:大脑肥胖症
    ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并作出合理的反应,为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时的做出转移措施。
    Stonith插件可以在一个没有响应的节点恢复后,合理接管集服务资源,防止数据冲突,当一个节点失效后,会从集中删除,如果不使用Stonith插件,那么失效的节点可能会导致集服务在多于一个节点运行,从而造成数据冲突甚至是系统崩溃。因此,使用Stonith插件可以保证共享存储环境中的数据完整性。聚氨酯泡沫
      Ldirector是一个监控集服务节点运行状态的插件。Ldirector如果监控到集节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务,这个插件经常用在LVS负载均衡集中,关于Ldirector插件的使用,将在后面详细讲述。
        同样,对于操作系统自身出现的问题,Heartbeat也无法监控,如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。
针对这个问题,就需要在linux内核中启用一个叫watchdog的模块,watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行,如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
在linux中完成watchdog功能的软件叫softdog,softdog维护一个内部计时器,此计时器在一个进程写入/dev/watchdog设备文件时更新,如果softdog没有看到进程写入/dev/watchdog文件,就认为内核可能出了故障。watchdog超时周期默认是一分钟,可以通过将watchdog集成到Heartbeat中,从而通过Heartbeat来监控系统是否正常运行。
2.Heartbeat的工作原理
从图18.1可以看出,heartbeat内部结构有三大部分组成。
集成员一致性管理模块(CCM)用于管理集节点成员,同时管理成员之间的关系和节点间资源的分配,heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。ha-logd模块用于记录集中所有模块和服务的运行信息。
本地资源管理器(LRM)负责本地资源的启动,停止和监控,一般由LRM守护进程lrmd和节点监控进程(Stonith Daemon)组成,lrmd守护进程负责节点间的通信,Stonith Daemon通常是一个Fence设备,主要用于监控节点状态,当一个节点出现问题时处于正常
状态的节点会通过Fence设备将其重启或关机以释放IP、磁盘等资源,始终保持资源被一个节点拥有,防止资源争用的发生。
集资源管理模块(CRM)用于处理节点和资源之间的依赖关系,同时,管理节点对资源的使用,一般由CRM守护进程crmd、集策略引擎和集转移引擎三个部分组成,集策略引擎(Cluster policy engine)具体实施这些管理和依赖,集转移引擎(Cluster transition engine)监控CRM模块的状态,当一个节点出现故障时,负责协调另一个节点上的进程进行合理的资源接管。
在Heartbeat集中,最核心的是heartbeat模块的心跳监测部分和集资源管理模块的资源接管部分,心跳监测一般由串行接口通过串口线来实现,两个节点之间通过串口线相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时资源接管模块将启动,用来接管运行在对方主机上的资源或者服务。
一、 安装heartbeat前的准备
1.Heartbeat集必须的硬件
构建一个Heartbeat集系统必须的硬件设备有:
外语与外语教学
  节点服务器
  网络和网卡
  共享磁盘
(1)节点服务器
安装Heartbeat至少需要两台主机,并且对主机的要求不高,普通的PC 服务器即可满足要求,当然,也可以在虚拟机上安装Heartbeat,现在Heartbeat可以很好的运行在Linux系统下,很多linux发行版本都自带了Heartbeat套件,同时,还可以运行在FreeBSD 和 Solaris操作系统上。
(2)网卡和网络
 Heartbeat集中的每个主机必须有一块网卡和一个空闲串口,网卡用于连接公用网络,串口可以通过串口线,例如modem电线来实现连接,用于心跳监控节点间的状态,如果没有空闲串口的话,每个主机也可以通过两块网卡来实现HA,其中一块网卡用于连接公用网络,另一块网卡通过以太网交叉线与两个节点相连接。
需要说明的是:以太网交叉线和串口电线都能用于心跳监控,串口电线传输Heartbeat信号相对较好,如有条件,尽量使用串口线代替以太网交叉线作为节点间的心跳检测设备。
Heartbeat支持三种类型的网络,公用网络(public network)、私用网络(private network)和串行网络(serial network)。
公用网络连接多个节点,并且允许客户端访问集中的服务节点,私用网络提供两个节点之间点到点的访问,但是不允许客户端访问,可以通过以太网交叉线构建一个私用网络,以供节点间相互通信,串行网络也是一个点到点的连接,一般使用串行网络来传输控制信息和心跳监控。串行网络可以是一条RS232串口线。
(3)共享磁盘
 共享磁盘是一个数据存储设备,HA集中的所有节点都需要连接到这个存储设备上,在这个共享的存储设备上一般放置的是公用的、关键的数据和程序,一方面可以共享数据给所有节点使用,另一方面也保证了数据的安全性。
 Heartbeat支持两种对共享磁盘的访问方式:独占访问和共享访问,在独占访问方式下,保持活动的节点独立使用磁盘设备,只有当活动节点释放了磁盘设备,其它节点才能接管磁盘进行使用,在共享访问方式下,集所有节点都可以同时使用磁盘设备,当某个节点出现故障时,其它节点无需接管磁盘。共享访问方式需要集文件系统的支持,这一点将在下个章节讲述。
 2.操作系统规划
 这里统一采用Red Hat Enterprise Linux Server release 5.1操作系统,每个节点服务器都有两块网卡,一块用作连接公用网络,另一块通过以太网交叉线连接两个节点,作为心跳监控。共享磁盘由一个磁盘阵列设备提供,两个节点共享一个磁盘分区。磁盘分区对应的硬件标识为/dev/sdb5,挂载点为/webdata,文件系统类型为ext3。
网络以及IP地址规划如表1所示:
                                                                    表1
        从上表可知,eth0网络设备用于连接公用网络,eth1网络设备用于连接私用网络,而
eth0:0网络设备是HA集虚拟出来的服务IP地址,用于对外提供应用程序服务。基本的拓扑结构如图2所示:

          接着配置每个节点的/etc/hosts文件,保证两个节点内容一致,/etc/hosts文件内容如下:
[root@node1 ~]#more /etc/hosts
192.168.60.132  node1
192.168.60.133  node2
10.1.1.1        priv1
10.1.1.2     priv1
 一切准备就绪,接下来开始安装heartbeat。
 
二、 安装heartbeat
1.获取heartbeat
Heartbeat到目前为止发行了两个主版本,Heartbeat1.x和Heartbeat2.x,Heartbeat1.x仅仅允许创建2个节点的集,提供基本的高可用性failover服务。Heartbeat2.x提供了增强的特性,允许创建多个节点的集,又支持模块结构的配置方法-集资源管理器(Cluster Rescource Manager-CRM),CRM可以支持最多16个节点,这里我们选择heartbeat2.0.8版本进行介绍。
        Heartbeat的下载地址为:/download/index.html,到heartbeat2.0.8版本,下载类似heartbeat-2.0.的源代码包即可。此外在安装heartbeat时需要同时安装libnet工具包,Libnet是一个高层次的API工具,可以从www.packetfactory/libnet/下载到,现在的稳定版本是1.1.2.1,下载后的包名为。
论钢琴表演艺术2.安装heartbeat
 接下来需要在两个节点安装heartbeat,安装过程很简单,只需解压编译、安装即可,这里不再详述,在两个节点执行相同的操作,下面是在node1上的安装过程:
[root@node1 ~]#tar -zxvf
[root@node1 ~]#cd libnet
[root@node1 ~/libnet]#./configure
[root@node1 ~/libnet]#make
[root@node1 ~/libnet]#make install
[root@node1 ~]#tar zxf heartbeat-2.0.
[root@node1 ~]#cd heartbeat-2.0.8
[root@node1 ~/heartbeat-2.0.8]#./ConfigureMe configure \
> --disable-swig --disable-snmp-subagent
[root@node1 ~/heartbeat-2.0.8]#make
[root@node1 ~/heartbeat-2.0.8]#make install
[root@node1 ~/heartbeat-2.0.8]#cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
[root@node1 ~/heartbeat-2.0.8]#cp ldirectord/ldirectord.cf /etc/ha.d/
[root@node1 ~/heartbeat-2.0.8]#groupadd -g 694 haclient
[root@node1 ~/heartbeat-2.0.8]#useradd -u 694 -g haclienthacluster
一、配置主节点的heartbeat 
 Heartbeat的主要配置文件有ha.cf、haresources、authkeys,在Heartbeat安装后,默认并没有这三个文件,可以从下载得到,也可以直接从解压的源码目录中到,在上面的安装过程中,我们已经将这三个文件放到了/etc/ha.d目录下,下面分别详细介绍。

1.主配置文件(/etc/ha.d/ha.cf)
下面对ha.cf文件的每个选项进行详细介绍,其中“#”号后面的内容是对选项的注释说明。
#debugfile /var/log/ha-debug
logfile /var/log/ha-log    #指名heartbeat的日志存放位置。
#crm yes      #是否开启Cluster Resource Manager(集资源管理)功能。
bcast eth1    #指明心跳使用以太网广播方式,并且是在eth1接口上进行广播。
keepalive 2    #指定心跳间隔时间为2秒(即每两秒钟在eth1上发送一次广播)。
deadtime 30 #指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源。
warntime 10 #指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。
initdead 120 #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
桂枝二陈汤udpport 694    #设置广播通信使用的端口,694为默认使用的端口号。中华医学会
baud 19200    #设置串行通信的波特率。
#serial /dev/ttyS0   #选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用
以太网连接,则应该关闭该选项。
#ucast eth0 192.168.1.2 #采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址。
#mcast eth0 225.0.0.1 694 1 0 #采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。
auto_failback on #用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。
#stonithbaytech /etc/ha.d/conf/stonith.baytech   # stonith的主要作用是使出现问题的节点从集环境中脱离,进而释放集资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
#watchdog /dev/watchdog #该选项是可选配置,是通过Heartbeat来监控系统的运行状态。
使用该特性,需要在内核中载入"softdog"内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入"insmodsoftdog"加载该模块。然后输入"grepmisc /proc/devices"(应为10),输入"cat /proc/misc |grep watchdog"(应为130)。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。
node node1    #主节点主机名,可以通过命令“uanme –n”查看。
node node2    #备用节点主机名。
ping 192.168.60.1 #选择ping的节点,ping 节点选择的越好,HA集就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集中的成员作为ping节点,ping节点仅仅用来测试网络连接。

本文发布于:2024-09-22 09:58:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/214727.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   集群   资源
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议