码迷,mamicode.com
首页 > 其他好文 > 详细

HA集群配置

时间:2016-12-20 11:58:08      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:ha集群之heartbeat

一、什么是HA集群?

  HA即(high available)高可用,又叫做双机热备,用于关键性业务,简单理解就是,有两台机器A和B,正常提供服务的是A机器,B机器待命,当A机器停止服务后,会切换到B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能.

二、heartbeat的工作原理

heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序。要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Ldirector等。Heartbeat自身包含了几个插件,分别是ipfail和Ldirectord,介绍如下。

ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并做出合理的反应。为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时做出转移措施。

Ldirector是一个监控集群服务节点运行状态的插件。Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务。这个插件经常用在LVS负载均衡集群中。

同样,对于操作系统自身出现的问题,Heartbeat也无法监控。如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。

针对这个问题,就需要在Linux内核中启用一个叫watchdog的模块。watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行。如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源.

三、配置实例

作业环境
在VirtualBox4.1 虚拟机下操作
主节点:CentOS 5.5-i386
从节点:CentOS 5.5-i386


1)网络环境设定
每个主机分别带有两块以太网卡,其中一块用于网络通信,另一块用于心跳功能。两个节点的网络设置如下:

node1: 主机名:server01 ( HA01 )
eth0:  10.8.50.1  255.255.0.0        //对外IP地址
eth1:  192.168.50.1  255.255.255.0   //HA心跳使用地址

node2: 主机名:server02 ( HA02 )
eth0:  10.8.50.2  255.255.0.0        //对外IP地址
eth1:  192.168.50.2  255.255.255.0   //HA心跳使用地址


2)防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测,如果系统有使用iptables 做防火墙,需把这个端口打开。
#vi /etc/sysconfig/iptables
在主节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.1 -j ACCEPT
在从节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.2 -j ACCEPT
重新加载iptables。
#service iptables restart

在实际测试中,通过setup界面直接禁用防火墙。

3)修改主机名 /etc/hosts 
本次实例中,修改后内容如下:
[root@server01 ~]# cat /etc/hosts
127.0.0.1               localhost.localdomain localhost
10.8.50.1               server01              HA01
192.168.50.1            HA01
10.8.50.2               server02
192.168.50.2            HA02

[root@server02 ~]# cat /etc/hosts
127.0.0.1               localhost.localdomain localhost
10.8.50.2               server02              HA02
192.168.50.2            HA02
10.8.50.1               server01
192.168.50.1            HA01

修改后,两机互ping对方的主机名应该能ping通


4)安装HA相关组件
安装heartbeat心中软件
[root@server01 ~]#yum install heartbeat-stonith
[root@server01 ~]#yum install heartbeat-pils
[root@server01 ~]#yum install heartbeat
[root@server01 ~]#yum install heartbeat-devel
[root@server01 ~]#yum install heartbeat-gui 
[root@server01 ~]#yum install libnet


查看所安装的软件

[root@server01 ~]# rpm -qa | grep heartbeat
heartbeat-stonith-2.1.3-3.el5.centos
heartbeat-2.1.3-3.el5.centos
heartbeat-gui-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-devel-2.1.3-3.el5.centos
[root@server01 ~]# rpm -qa | grep libnet
libnet-1.1.2.1-2.rf
[root@server01 ~]# rpm -qa | grep ipvsadm
ipvsadm-1.24-12.el5
-----------------------------------------------

在从节点上也作同样的操作


5)配置主节点的heartbeat
Heartbeat的主要配置文件有ha.cf、haresources、authkeys,均在/etc/ha.d目录下,在通过yum安装Heartbeat后,默认并没有这三个文件,可从解压的源码目录中找到,这里手动创建并编辑。

1、主配置文件:ha.cf
配置heartbeat的检测机制
本次实例中,内容设置如下:
-----------------------------------------------
[root@server01 ~]# cat /etc/ha.d/ha.cf 
debugfile /var/log/ha-debug  #用于记录heartbeat的调试信息
logfile /var/log/ha-log  #用于记录heartbeat的日志信息
logfacility local0  #系统日志级别
keepalive 2  #设定心跳(监测)间隔时间,默认单位为秒
warntime 10  ##警告时间,通常为deadtime时间的一半
deadtime 30  # 超出30秒未收到对方节点的心跳,则认为对方已经死亡
initdead 120  #网络启动时间,至少为deadtime的两倍。
hopfudge 1  #可选项:用于环状拓扑结构,在集群中总共跳跃节点的数量
udpport 694  #使用udp端口694 进行心跳监测
ucast eth1 192.168.50.2  #采用单播,进行心跳监测,IP为对方主机IP
auto_failback on  #on表示当拥有该资源的属主恢复之后,资源迁移到属主上
node server01  #设置集群中的节点,节点名须与uname –n相匹配
node server02  #节点2
ping 10.8.1.254  #ping集群以外的节点,这里是网关,用于检测网络的连接性
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root  #设置所指定的启动进程的权限
-----------------------------------------------
注:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。


2、资源文件haresources
ha.cf文件设置了heartbeat的检验机制,没有执行机制。Haresources用来设置当主服务器出现问题时heartbeat的执行机制。其内容为:当主服务器宕机后,该怎样进行切换操作。切换内容通常有IP地址的切换、服务的切换、共享存储的切换,从而使从服务器具有和主服务器同样的IP、SERVICE、SHARESTORAGE,从而使client没有察觉。在两个HA节点上该文件必须完全一致。
本次实例中,内容设置如下:
-----------------------------------------------
[root@server01 ~]# cat /etc/ha.d/haresources 
server01 IPaddr::10.8.50.0/16 httpd
-----------------------------------------------
注:优先在server01上绑定一个虚拟IP 10.8.50.0 给eth0:0,并管理本机上的http服务;如果server01宕机后,server02可以自动启动http服务,并新分配虚拟IP 10.8.50.0给server02的eth0:0


3、认证文件authkeys
用于配置心跳的加密方式,该文件主要是用于集群中两个节点的认证,采用的算法和密钥在集群中节点上必须相同,目前提供了3种算法:md5,sha1和crc。其中crc不能够提供认证,它只能够用于校验数据包是否损坏,而sha1,md5需要一个密钥来进行认证。
本次实例中,内容设置如下:
-----------------------------------------------
[root@server01 ~]# cat /etc/ha.d/authkeys 
auth 1
1 crc
-----------------------------------------------
注:需要更改该文件的属性为600,否则heartbeat启动将失败
[root@server01 ~]#chmod 600 /etc/ha.d/authkeys


6)配置从节点的heartbeat
将主节点上的heartbeat配置文件拷贝到从节点,并确保两个节点上的配置文件权限相同:
-----------------------------------------------
[root@server01 ~]# scp /etc/ha.d/ha.cf root@server02:/etc/ha.d/ 
[root@server01 ~]# scp /etc/ha.d/haresources root@server02:/etc/ha.d/
[root@server01 ~]# scp /etc/ha.d/authkeys  root@server02:/etc/ha.d/
-----------------------------------------------
ha.cf文件需修改ucast的内容,将其指向主节点:
ucast eth1 192.168.50.1  #指定对方IP
其他文件内容无需修改。


7)使用http服务测试 heartbeat
编辑各自主机的测试用文件index.html,放到/var/www/html/目录下,内容分别为“server01”和“server02”

在两机上分别启动httpd服务和heartbeat服务
#service httpd start
#service heartbeat start

正常情况下,web服务应该被heartbeat启动,同时heartbeat为主节点设置虚拟IP地址10.8.50.0。在主节点使用ifconfig可以看到多了个eth0:0,其具体信息如下:
-----------------------------------------------
[root@server01 ~]# ifconfig eth0:0
eth0:0    Link encap:Ethernet  HWaddr 08:00:27:DA:60:AD  
          inet addr:10.8.50.0  Bcast:10.8.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
-----------------------------------------------



本文出自 “linux运维” 博客,转载请与作者联系!

HA集群配置

标签:ha集群之heartbeat

原文地址:http://xxr007.blog.51cto.com/10602872/1884185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!