CentOS 6.5 下HeartBeat的安装与配置
CentOS 6.5 下HeartBeat的安装与配置
参考网站:
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的安装与配置的更多相关文章
- CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例
最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...
- CentOS 7.5下KVM的安装与配置
由于没有物理机可用,在自己的VMware Workstation中CentOS 7.5下搭建完成. 首先查看VMware Workstation是否支持虚拟化,把红框内打钩即可. 虚拟化开启并安装Ce ...
- CentOS 6.3下PostgreSQL 的安装与配置
一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库都不具备.这个起源于伯克 ...
- Linux——CentOS 6.3下PostgreSQL 的安装与配置
一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库 都不具备.这个起源于伯 ...
- CentOS 6.3下NTP服务安装和配置
测试环境: NTPserver 192.168.1.252 NTPclient 192.168.1.251 准备工作: 关闭selinux: vi /etc/selinux/config SELINU ...
- CentOS 6.5下mysql的安装与配置
一.通过yum自动安装mysql yum install mysql-server my-client 二.初始化及相关配置 安装完mysql数据库以后,会发现会多出一个mysqld的服务,通过输入 ...
- mac与centos下redis的安装与配置
前言 最近在用redis,下面简单写一下mac和centos下redis的安装与配置方法. 安装 mac下面 安装命令:brew intall redis 运行命令:brew services sta ...
- CentOS 7.0下使用yum安装MySQL
CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1 ...
- Centos下telnet的安装和配置
Centos下telnet的安装和配置 首先为Centos配置地址(192.168.0.1/24) 一.查看本机是否有安装telnetrpm -qa | grep telnetrpm -q telne ...
随机推荐
- Django:表结构发生变化需要执行命令
Django:表结构发生变化需要执行命令 Django:表结构发生变化需要执行命令 mysite> python manage.py makemigrations blog #让 Django ...
- nw.js node-webkit系列(18)怎么对.js进行编译以防你的代码暴露出来
原文链接:http://blog.csdn.net/zeping891103/article/details/50819102 参考:https://segmentfault.com/a/119000 ...
- img = img1*mask + img2*(1-mask) How do that ?
原文地址:http://answers.opencv.org/question/160599/img-img1mask-img21-mask-how-do-that/ 如何提高一个简单操作的速度?最后 ...
- 20145301《网络对抗》shellcode注入&Return-to-libc攻击深入
20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...
- STM32组合设备实现USB转双串口
USB转双串口,核心技术就在于组合设备(USB Composite)的实现,组合设备的实现,其核心技术在于描述符的实现,下面我们先给出描述符:设备描述符 [C] 纯文本查看 复制代码 ? 00001 ...
- python 返回系统名称,系统平台,系统版本
import platform import os print(os.name) print(platform.system()) print(platform.release())
- Java网络编程学习A轮_07_基于Buffer的Socket编程
示例代码: https://github.com/gordonklg/study,socket module A. LineSeparate 基于 Buffer 实现逐行读取的 EchoServer ...
- jquery性能优化的十种方法
jquery性能优化的十种方法 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力.随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运 ...
- bzoj-4565-区间dp+状压
4565: [Haoi2016]字符合并 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 542 Solved: 253[Submit][Status ...
- python模块之ConfigParser: 用python解析配置文件
在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介 ...