CentOS 6.5 下HeartBeat的安装与配置

参考网站:

http://wenku.baidu.com/link?url=BvqJatdx1m12PLil-7YA1zkM0yUOEO8OnN5oI0DKJ7BHxvaS0Ha39IfqEBvud5YO_NvFJ9do6EX6jpXWWibPMo4MjHOLjtFbu3FvoCbSd_W

http://blog.csdn.net/redfox1985/article/details/49994179

http://blog.csdn.net/cppresearcher/article/details/6611685

http://www.lxway.com/440929854.htm

http://edu.51cto.com/lesson/id-24641.html

http://www.51itstudy.com/50816.html

两台linux服务器,双网卡。

xldwhj(主):eth0:192.168.42.2 (心跳线)                     eth1:192.168.184.128

xldroot(从):eth0:192.168.42.3(心跳线)                     eth1:192.168.184.130

虚拟IP:192.168.184.200

1         HeartBeat基本介绍

Heartbeat是High-Availability Linux Project (Linux下的高可用性项目)的产物,是一套提供防止业务主机因不可避免的意外性或计划性宕机问题的高可用性软件。Heartbeat可以从Linux-HA 项目Web 站点免费获得,它提供了所有HA (高可用性)系统所需要的基本功能,如启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享IP 地址的所有者等。它通过串行线、以太网接口或同时使用两者来监测特定服务(或多个服务)的运行状况。

Heartbeat实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的可用性。它能侦测服务器应用级系统软件、硬件发生的故障,及时地进行错误隔绝、恢复;通过系统监控、服务监控、IP自动迁移等技术实现在整个应用中无单点故障,简单、经济地确保重要的服务持续高可用性。

Heartbeat采用虚拟IP地址映射技术实现主从服务器的切换对客户端透明的功能。

1.1         HeartBeat的工作原理

通过修改Heartbeat的软件的配置文件,可以制定那一台Heartbeat服务器作为主服务器,则另一台将自动成为热备服务器。然后在热备服务器上配置Heartbeat

守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定时间内为监听到来自主服务器的心跳,就会启动故障转义程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。

以上的描述为heartbeat的主备模式,heartbeat还支持主主模式,即两台服务器互为主备,这是他们之间还会互相发送报文来告诉对方自己的当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者是已经宕机了,这时运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者是服务,继续为用户提供服务。一般情况下,可以较好的实现一台主机故障后,企业业务能够不间断的持续的提供服务。注意:所谓的业务不间断,在故障转移期间也是需要切换时间的,heartbeat的切换时间是5-20秒。

切换的常见条件:

1)服务器宕机

2)Heartbeat服务本故障

3)中间的连接线路故障

1.2         HeartBeat的心跳连接

讲过上面的描述,要部署heartbeat服务,至少需要两台主机才能完成。那么,要实现高可用服务,这两台主机之间,是如何做到互相通信互相监控的呢/

下面是两台heartbeat主机之间通信的一些常用的可行的方法:

1)串行电缆,即所谓的串口(首选,缺点是距离不能太远)

2)一根以太网电缆两网卡直连(生产环境中常用的方式)

3)以太网电缆,通过交换机等网络设备连接(次选,原因是增加了故障点,不好排查故障,同时,线路不是专用的心跳线,容易受其他数据传输的影响,导致心跳报文发送问题)

2         HeartBeat的安装与配置

2.1         HeartBeat的安装

因为Centos默认的yum源里没有heartbeat的资源,所以首先需要将fedora的源添加到centos系统中

[root@xldwhj ~]#

Wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@xldwhj ~]# rpm –ivf epel-release-6-8.noarch.rpm

yum安装HeartBeat

[root@xldwhj ~]# yum –y install heartbeat

安装完成后,需要三个配置文件: ha.cf,haresources,authkeys

[root@xldwhj ~]# cat /etc/ha.d/README.config      

You need three configuration files to make heartbeat happy,

and they all go in this directory.

They are:

ha.cf              Main configuration file

haresources     Resource configuration file

authkeys  Authentication information

These first two may be readable by everyone, but the authkeys file

must not be.

The good news is that sample versions of these files may be found in

the documentation directory (providing you installed the documentation).

If you installed heartbeat using rpm packages then

this command will show you where they are on your system:

rpm -q heartbeat -d

If you installed heartbeat using Debian packages then

the documentation should be located in /usr/share/doc/heartbeat

执行上面的命令可以看到相关的目录

[root@xldwhj ~]# rpm -q heartbeat -d

/usr/share/doc/heartbeat-3.0.4/AUTHORS

/usr/share/doc/heartbeat-3.0.4/COPYING

/usr/share/doc/heartbeat-3.0.4/COPYING.LGPL

/usr/share/doc/heartbeat-3.0.4/ChangeLog

/usr/share/doc/heartbeat-3.0.4/README

/usr/share/doc/heartbeat-3.0.4/apphbd.cf

/usr/share/doc/heartbeat-3.0.4/authkeys

/usr/share/doc/heartbeat-3.0.4/ha.cf

/usr/share/doc/heartbeat-3.0.4/haresources

/usr/share/man/man1/cl_status.1.gz

/usr/share/man/man1/hb_addnode.1.gz

/usr/share/man/man1/hb_delnode.1.gz

/usr/share/man/man1/hb_standby.1.gz

/usr/share/man/man1/hb_takeover.1.gz

/usr/share/man/man5/authkeys.5.gz

/usr/share/man/man5/ha.cf.5.gz

/usr/share/man/man8/apphbd.8.gz

/usr/share/man/man8/heartbeat.8.gz

查找到3个配置文件ha.cf,haresources,authkeys的位置在/usr/share/doc/heartbeat-3.0.4/下,将其拷贝到/etc/ha.d目录下

2.2         HeartBeat的配置

ha.cf定义心跳信息层,用于实现心跳信息传输。

xldwhj上ha.cf的配置如下:

[root@xldwhj ~]# vim /etc/ha.d/ha.cf

logfile     /var/log/ha-log   #ha的日志文件记录位置。如没有该目录,则需要手动添加

logfacility       local0

keepalive 2             #设定心跳(监测)时间时间为2秒

deadtime 30            #超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡

warntime 10        #超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中

initdead 120        #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。

udpport   694       #使用udp端口694进行心跳监测(bcast和ucast通信),这是默认的,并且在IANA官方注册的端口号。

ucast eth0 192.168.42.3   #采用网卡eth0的udp单播来通知心跳,ip为对方ip

auto_failback on    #heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取所有资源。

watchdog /dev/watchdog

node       xldwhj            #节点1,必须要与uname -n指令得到的结果一致。

node       xldroot            #节点2

ping 192.168.184.1      #通过ping网关来监测网络是否正常。

hopfudge 1

deadping 30

xldroot上ha.cf的配置如下:

logfile     /var/log/ha-log

logfacility       local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport   694

ucast eth0 192.168.42.2

auto_failback on

node       xldwhj

node       xldroot

ping 192.168.184.1

hopfudge 1

deadping 30

xldwhj与xldroot上的haresources,authkeys配置相同。

authkeys的配置如下:

[root@xldwhj ~]# vim /etc/ha.d/authkeys

auth 1 #指定的认证方式,数字是后面所列的方法的一种,最简单的是crc,最复杂的是sha1,下面的列表必须按顺序来,不能只有2,没有1,而且这里指定的方法必须是下面列表有的

1 crc

在haresources的配置文件中加入如下内容:

[root@xldwhj ~]# vim /etc/ha.d/haresources   //决定那一个服务器是主节点

xldwhj IPaddr::192.168.184.200/24/eth1 httpd

xldwhj IPaddr::192.168.184.200/24/eth1 mysqld

3         HeartBeat测试

在启动heartbeat之前,在xldwhj与xldroot上首先查看httpd的状态:

[root@xldwhj ~]# netstat -nlp | grep httpd

[root@xldwhj ~]#

可知httpd未启动。

启动两台服务器上的heartbeat:

[root@xldwhj ~]#/etc/init.d/heartbeat start

或者

[root@xldwhj ~]#service heartbeat start

xldwhj(主)上的命令操作:

[root@xldwhj ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:ef:76:a8 brd ff:ff:ff:ff:ff:ff

inet 192.168.42.2/24 brd 192.168.42.255 scope global eth0

inet6 fe80::20c:29ff:feef:76a8/64 scope link

valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:ef:76:b2 brd ff:ff:ff:ff:ff:ff

inet 192.168.184.128/24 brd 192.168.184.255 scope global eth1

inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

inet6 fe80::20c:29ff:feef:76b2/64 scope link

valid_lft forever preferred_lft forever

虚拟IP已存在。

[root@xldwhj ~]# netstat -nlp | grep httpd

tcp    0      0 :::80        :::*                        LISTEN      3121/httpd

httpd已启动。

xldroot(从)上的命令操作:

[root@xldroot ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:85 brd ff:ff:ff:ff:ff:ff

inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

inet6 fe80::20c:29ff:fe53:7485/64 scope link

valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:8f brd ff:ff:ff:ff:ff:ff

inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

inet6 fe80::20c:29ff:fe53:748f/64 scope link

valid_lft forever preferred_lft forever

未发现虚拟IP存在

[root@xldroot ~]# netstat -nlp | grep httpd

[root@xldroot ~]#

httpd未启动

打开网页,输入虚拟IP地址:192.168.184.200,出现如下内容:

关闭xidwhj虚拟机:

[root@xldwhj html]# shutdown now

在xldroot上的操作如下:

[root@xldroot html]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:85 brd ff:ff:ff:ff:ff:ff

inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

inet6 fe80::20c:29ff:fe53:7485/64 scope link

valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:8f brd ff:ff:ff:ff:ff:ff

inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

inet6 fe80::20c:29ff:fe53:748f/64 scope link

valid_lft forever preferred_lft forever

可以看到虚拟IP悬浮于xldroot虚拟机的网卡下:

[root@xldroot html]# netstat -nlp | grep httpd

tcp      0      0 :::80              :::*              LISTEN      2330/httpd

打开网页,输入虚拟IP地址,出现如下内容:

此时重启xldwhj服务:

[root@xldwhj ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:ef:76:a8 brd ff:ff:ff:ff:ff:ff

inet 192.168.42.2/24 brd 192.168.42.255 scope global eth0

inet6 fe80::20c:29ff:feef:76a8/64 scope link

valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:ef:76:b2 brd ff:ff:ff:ff:ff:ff

inet 192.168.184.128/24 brd 192.168.184.255 scope global eth1

inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

inet6 fe80::20c:29ff:feef:76b2/64 scope link

valid_lft forever preferred_lft forever

可以看出,自动抢占虚拟IP地址。

而xldroot上

[root@xldroot html]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:85 brd ff:ff:ff:ff:ff:ff

inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

inet6 fe80::20c:29ff:fe53:7485/64 scope link

valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:53:74:8f brd ff:ff:ff:ff:ff:ff

inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

inet6 fe80::20c:29ff:fe53:748f/64 scope link

valid_lft forever preferred_lft forever

虚拟IP地址已不见。

测试完成,HeartBeat安装与配置成功

CentOS 6.5 下HeartBeat的安装与配置的更多相关文章

  1. CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例

    最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...

  2. CentOS 7.5下KVM的安装与配置

    由于没有物理机可用,在自己的VMware Workstation中CentOS 7.5下搭建完成. 首先查看VMware Workstation是否支持虚拟化,把红框内打钩即可. 虚拟化开启并安装Ce ...

  3. CentOS 6.3下PostgreSQL 的安装与配置

    一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库都不具备.这个起源于伯克 ...

  4. Linux——CentOS 6.3下PostgreSQL 的安装与配置

    一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库 都不具备.这个起源于伯 ...

  5. CentOS 6.3下NTP服务安装和配置

    测试环境: NTPserver 192.168.1.252 NTPclient 192.168.1.251 准备工作: 关闭selinux: vi /etc/selinux/config SELINU ...

  6. CentOS 6.5下mysql的安装与配置

    一.通过yum自动安装mysql yum install mysql-server my-client 二.初始化及相关配置 安装完mysql数据库以后,会发现会多出一个mysqld的服务,通过输入  ...

  7. mac与centos下redis的安装与配置

    前言 最近在用redis,下面简单写一下mac和centos下redis的安装与配置方法. 安装 mac下面 安装命令:brew intall redis 运行命令:brew services sta ...

  8. CentOS 7.0下使用yum安装MySQL

    CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1 ...

  9. Centos下telnet的安装和配置

    Centos下telnet的安装和配置 首先为Centos配置地址(192.168.0.1/24) 一.查看本机是否有安装telnetrpm -qa | grep telnetrpm -q telne ...

随机推荐

  1. #/bin/sh参数-e的含义

    注:本博客欢迎转载和引用,但请保留原作者信息! 一.背景 今天遇到一个诡异的问题,一旦脚本中判断$?为非零,那么脚本就会自动退出的情况,仔细调试脚本的逻辑,并没有发现错误,因此作此文 二.解决 既然要 ...

  2. BZOJ 2763 飞行路线(分层图最短路)题解

    题意:中文题意不解释... 思路:分层图最短路,我们再开一维用来表示当前用了多少次免费次数,dis[i][j]就表示到达i点用了j次免费的最短路,有点DP的感觉. 当个模板用 参考:分层图最短路 代码 ...

  3. 【同步时间】Linux设置时间同步

    所有节点都要确保已安装ntpd(在步骤4已安装) 1.首先选择一台服务器作为时间服务器. 假设选定为node1.sunny.cn服务器为时间服务器. 2.ntp服务器的配置 修改ntp.conf文件: ...

  4. atcoder ARC092 D - Two Sequences 二分 & 二进制

    今天生日捏,嘻嘻~ 题意:给定A B数组长度为n 求所有 (1<=i,j <=n ) a[i]+b[j] 的异或和. n <=200000  ai bi <=228 这题比赛没 ...

  5. Eclipse插件Fat Jar

    1.安装 1)Eclipse在线更新方法 Help > Install New Software > Add, name:Fat Jar location:http://kurucz-gr ...

  6. python 匹配指定后缀的文件名

    import glob x=glob.glob('*.py') print(x)

  7. SSH防止暴力破解--fail2ban

    一.ssh密钥对无交互登录 实战1:通过密钥进行sshd服务认证 服务端:linl_S    IP:10.0.0.15 客户端:lin_C    IP:10.0.0.16   1)在客户端生成密钥对 ...

  8. bzoj1179: [Apio2009]Atm scc缩点+dag上dp

    先把强连通缩点,然后变成了dag,dp求终点是酒吧的最长路即可, /************************************************************** Pro ...

  9. Access数据库 更新 "延时" 现象

    最近发现 Access数据库执行Update或Delete操作成功后,执行select回来的数据未更改.打开数据库查看时却发现已更改,再次执行select 后却发现正常了. 经调试发现:Access数 ...

  10. EBS 定义并发参数常用值集

    1.ORG_ID 2.DATE 3.YES_NO