搭建Heartbeat服务器
Heartbeat名词解析:
所谓Heartbeat,顾名思义就是心跳同步的意思。在现在的网络中,是很重要稳定高效的时代。在很多的服务上都是通过搭建服务集群来提高效率;并且保持冗余。这样能够给更好的提高效率,降低损失。通过Heartbeat软件搭建一个简单的高可用性,冗余保护的web服务器。提供一个增强linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。Heartbeat提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等。
Heartbeat之中的重点词汇:
Node(节点):每个单独运行一个heartbeat进程的服务器,成为节点。
Resource(资源):资源就是节点能够控制的实体。
Event(事件):就是在运行heartb进程过程当中出现的错误事件。
Action(动作):当出现错误的时候,能够进行解决问题。
实验的环境:
1、搭建heartbeat服务器所需要的软件如下:
ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz Heartbeat-3-0-7e3a82377fa8.tar.bz2 Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2 |
由于heartbeat的rpm包不是很好找,所以我们使用源码包。如果一定要使用源码包也可以在pkgs.org网站下载。
2、我们在安装heartbeat源码包的时候会出现问题,在安装ClusterLabs-resource源码包的时候系统会提安装不成功;系统会提示autoconf、automake版本过低。所以我们需要进行软件升级。
autoconf-2.68.tar.gz automake-1.11.2.tar.gz |
3、在安装源码之前我们先要搭建好实验环境。首先我们需要把系统的名字进行修改好。并且修改hosts文件。
[root@realserver2 tmp]# cat /etc/sysconfig/network HOSTNAME=realserver2 [root@realserver2 tmp]# cat /etc/hosts 192.168.10.12 realserver2 192.168.10.222 director2 |
注意(在两个节点上的配置要保持一致,不能不一致。)
4、完成之后我们还需要创建一组和一个用户。
[root@realserver2]#roupadd haclient [root@realserver2]#useradd -g haclient hacluster |
这样子实验环境,搭建完成。接下来就正式开始进行安装heartbeat源码包。
搭建Heartbeat服务器流程如下:
搭建Heartbeat服务器是在Red Hat 5.8
1、Heartbeat服务器的主要源码包:Heartbeat-3-0-7e3a82377fa8.tar.bz2。
在安装源码包之前,我们首先要确认是否安装包已经存在。
[root@realserver2 tmp]# ll -rw-r--r-- 1 root root 1860672 Mar 9 21:05 autoconf-2.68.tar.gz -rw-r--r-- 1 root root 1569171 Mar 9 21:08 automake-1.11.2.tar.gz -rw-r--r-- 1 root root 452498 Mar 6 23:32 ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz -rw-r--r-- 1 root root 538802 Mar 6 23:33 Heartbeat-3-0-7e3a82377fa8.tar.bz2 -rw-r--r-- 1 root root 461579 Mar 6 23:33 Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2
|
2、接下来,我们现在开始进行安装源码包。首先我们现在先开始安装第一个源码包:
Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2
[root@realserver2tmp]#tar -xjf Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2 #./autogen.sh #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var #make #make install |
3、安装完成之后,现在进行安装第二个源码包:Heartbeat-3-0-7e3a82377fa8.tar.bz2
[root@realserver2tmp]#tar -xjf Heartbeat-3-0-7e3a82377fa8.tar.bz2 #./bootstrap #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var #make #make install |
4、完成之后,我们现在安装第三个:ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
[root@realserver2tmp]#tar -zxvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz #./autogen.sh #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var #make #make install autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext |
注意(我们在这安装这个软件的时候,系统会提示由于版本过低不能够安装。所以我们在安装这个5、软件的时候我么现在安装这两个软件。autoconf-2.68.tar.gz automake-1.11.2.tar.gz)
[root@realserver2tmp]#tar -zxvf autoconf-2.68.tar.gz #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var #make #make install [root@realserver2tmp]#tar -zxvf automake-1.11.2.tar.gz #./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var #make #make install |
(上面的安装在两个节点必须一致;不然会出现问题。)
6、在安装完成之后,先在进入Heartbeat软件包目录下,复制三个主配文件到ha.d目录下。
# cp doc/ha.cf /etc/ha.d/ # cp doc/haresources /etc/ha.d/ # cp doc/authkeys /etc/ha.d/ [root@director2 ha.d]# ls authkeys ha.cf haresources |
7、复制完成之后,现在开始进行配文件修改。这三个文件没有先后的顺序。那么,我首先配置authkeys这个文件。在两个节点上都是配置一样的配置,保持同步。
[root@director2 ha.d]# vim authkeys auth 3—————————这个默认是选择是1,这样不安全。所以我们选择3. #1 crc————冗余 #2 sha1 HI! 3 md5 Hello!————————采用md5密文认证方式。 |
8、接下来进行配置haresource资源管理的文件。只需要在文件的末端加入下面这条命令即可。
[root@director2 ha.d]# [root@director2 ha.d]# cat haresources director2 httpd 192.168.10.200/24/eth0/192.168.10.255 |
注意(在这个文件下面加入上面这条命令的时候,是要根据节点本身自己要求进行添加的。不能两个节点都一致,这样会出现重名的错误。)
9、接下就进行配置ha.cf主配文件。由于文件有很多的解释代码。现在我把解释说明的出去。把ha.cf这个文件当中我我们需要注意的代码,都标记号行号,这样便于查找。
24 #debugfile /var/log/ha-debug 29 #logfile /var/log/ha-log 34 logfacility local0 48 keepalive 2 56 deadtime 30 61 warntime 10 71 initdead 120 76 udpport 694 91 bcast eth0 # Linux 157 auto_failback on 211 node realserver2 212 node director2 |
注意(在文件的213行上面我们加上标记红色的两行代码,指定两个节点。其他只需出去注释,并且修改自己想要的参数。)
10、配置完成之后,现在要进行最后的检查。heartbeat管理的应用不能随机启动,修改chkconfig配置,关闭随机启动选项。
[root@director2 ~]# chkconfig --list |grep heartbeat service heartbeat supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add heartbeat') [root@director2 ~]# |
现在去两个节点上的www/html目录下。我们去编辑简单的网页。
[root@director2 html]# cat index.html nihao!!!! [root@realserver2 ~]# cat /var/www/html/index.html Realserver2 |
11、置完成之后,现在进行heartbeat服务器的测试。先在两个节点上开启Heartbeat服务。
[root@realserver2 ~]# service heartbeat start Starting High-Availability services: [ OK ] [root@realserver2 ~]#
[root@director2 ~]# service heartbeat start Starting High-Availability services: [ OK ] [root@director2 ~]# |
12、开启Heartbeat服务器之后,现在我们在PC机上进行测试。我们通过浏览器访下面这个IP:192.168.10.200.
|
13、现在去查看一下ha.cf的日志文件
[root@director2 ha.d]# tail /var/log/ha-log -f harc[8947]: 2012/12/10_07:30:43 info: Running /etc/ha.d//rc.d/ip-request-resp ip-request-resp ip-request-resp[8947]: 2012/12/10_07:30:43 received ip-request-resp httpd OK yes Dec 10 07:30:43 director2 heartbeat: [8866]: info: remote resource transition completed. ResourceManager[8970]: 2012/12/10_07:30:43 info: Acquiring resource group: director2 httpd 192.168.10.200/24/eth0/192.168.10.255 ResourceManager[8970]: 2012/12/10_07:30:43 info: Running /etc/init.d/httpd start IPaddr[9033]: 2012/12/10_07:30:56 INFO: Resource is stopped ResourceManager[8970]: 2012/12/10_07:30:57 info: Running /etc/ha.d/resource.d/IPaddr 192.168.10.200/24/eth0/192.168.10.255 start IPaddr[9121]: 2012/12/10_07:30:57 INFO: Using calculated netmask for 192.168.10.200: 255.255.255.0 IPaddr[9121]: 2012/12/10_07:30:58 INFO: eval ifconfig eth0:0 192.168.10.200 netmask 255.255.255.0 broadcast 192.168.10.255 IPaddr[9095]: 2012/12/10_07:30:58 INFO: Success
|
这里我们可以发现Heartbeat已经正常在运转。
同时也查看下httpd的日志。
[root@director2 ha.d]# tail /var/log/httpd/access_log 192.168.10.112 - - [10/Dec/2012:07:31:05 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" 192.168.10.112 - - [10/Dec/2012:07:31:54 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" [root@realserver2 log]# taol httpd/access_log -bash: taol: command not found |
14、在director2上我们可以发现httpd服务有响应,可是在realserver2上的httpd服务却没有响应。这说明主节点没有出现错误,并且能够正常运转。同时,我们在网络中也可发现会自动生成一个eth0的子接口。
[root@realserver2 log]# ifconfig eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CA:08:0C inet addr:192.168.10.200 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:67 Base address:0x2000 |
15、现在我们去把director2的heartbeat服务关闭,再来测试下,会出现什么情况。
[root@director2 ~]# service heartbeat stop Stopping High-Availability services: [ OK ] [root@director2 ~]# |
16、在关闭Heartbeat服务器之前,我们首先在PC客户端进行PING命令测试。这个时候会发现。当主节点在挂掉的时候,PING Vip时候会出现机跳的丢包。这个是由于两个节点在相互切换的时候,会出现几秒的停顿。
|
17、这个时候,再次进行访问192.168.10.200地址。会发现依然能够正常访问,并不会出现不能访问的情况。
|
注意(在这里我们能够更好的发现,PC机现在所访问的httpd服务,已经不是原来那个服务器。)
18、现在去查看节点的日志,这个时候就会发现。在director2节点上的ha_log日志,没有变化。httpd上次所访问的日志不变;同时。在realserver2节点上,我们可以发现ha_log日志中增加新日志。在httpd日志当中增加192.168.10.112所访问的日志。
[root@realserver2 ~]# tail /var/log/ha-log heartbeat[7963]: 2013/03/11_01:11:12 WARN: Gmain_timeout_dispatch: Dispatch function for check for signals was delayed 3550 ms (> 1010 ms) before being called (GSource: 0x8ad1a60) heartbeat[7963]: 2013/03/11_01:11:12 info: Gmain_timeout_dispatch: started at 430955771 should have started at 430955416 [root@realserver2 ~]# [root@realserver2 ~]# tail /var/log/httpd/access_log "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" 192.168.10.1 - - [11/Mar/2013:01:15:26 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" |
同时查看director2的日志进行作对比。
[root@director2 ~]# tail /var/log/httpd/access_log 192.168.10.112 - - [10/Dec/2012:07:31:05 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" 192.168.10.112 - - [10/Dec/2012:07:31:54 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" |
在这里可以发现,现在的主要节点是realserver2.而不是director2。这样就说明实验成功。
注意(在修改Heartbeat其中ha.cf文件的时候,可以对其参数进行修改。其中这个参数auto_failback on 、keepalive、 deadtime 、warntime 、initdead等比较中要。这些参数能够决定节点的反应速度。同时,还要注意,如果现实中所使用的服务器性能一样。尽量不要开枪抢占的机制。这样不会导致因为抢占而出现的断接。)
到这里实验基本完成!!!!!!!!!!!!