HA(High available)--Heartbeat高可用性集群双机热备)

 

1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务。当主机恢复正常后,按照使用者设定的自动或手动切换到主机上运行,数据一致性通过共享存储系统解决。

2.实现该功能的软件有:Heartbeat , keepalived(具有负载均衡的能力)

3.结构图



HA-Heartbeat

实验:以hearbeat为例,来做HA集群,并把nginx服务作为HA对应的服务

关闭防火墙:iptables -F service iptables save

关闭selinux:  setenforce  0 ,getenforce 查看,vim /etc/selinux/conf 修改,保存退出。

配置网卡:

master --eth1 192.168.2.105

slave  --eth1 192.168.2.106  eth1作为心跳线 作用:探测对方主机服务是否存活。

master --eth0 192.168.1.105

slave  --eth0 192.168.1.106  eth0为流动ip 又称VIP 对外提供服务。

操作:A:

hostname =master

vim /etc/sysconfig/network

HOSTNAME=master

vim /etc/hosts

192.168.1.105  master

192.168.1.106  slave

 操作:B:

hostname =slave

vim /etc/sysconfig/network

HOSTNAME=slave

vim /etc/hosts

192.168.1.105  master

192.168.1.106  slave.


A,B同时安装epel扩展源 (安装扩展源后yum报错解决linux 小记[2])

wget www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm

rpm -ivh epel-release-6-8_64.noarch.rpm

A,B同时安装hearbeat 及扩展libnet 和准备测试的nginx

yum install -y heartbeat* libnet nginx
A机:切换到安装目录拷贝文件到/etc/ha.d下
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
切换目录到/etc/ha.d编辑配置
cd /etc/ha.d/
vim authkeys 
auth 3 验证级别
3 md5 Hello! 加密方式
并且赋予600读写权限给root
chmod 600 authkeys 
vim haresources 
master  192.168.1.106/24/eth0 nginx   [流动ip 即vip master 主机名 nginx 服务,可以是其他服务。]
vim ha.cf 
debugfile /var/log/ha-debug 
logfile /var/log/ha-log
logfacility   local0
keepalive 2
deadtime 30
warntime  10
initdead 60
udpport  694
ucast eth1 192.168.2.106 对方ip
auto_failback on
node    master
node    slave
ping 192.168.2.1
respawn hacluster /usr/lib64/heartbeat/ipfail  如果是32系统切记lib64改为lib


ha.cf 文件详解

debugfile /var/log/ha-debug           故障调试log
logfile /var/log/ha-log                    log文件
logfacility    local0                         日志级别
keepalive 2                                   探测周期 2s
deadtime 30                                 检测死亡时间 30s
warntime 10                                 启动警告记录时间 10s
initdead 60                                   重启预留时间60s
udpport 694                                  心跳线通讯端口
ucast eth0 192.168.0.161                 对方的ip ,也可使用 bcast   即广播的方式寻找 ,最好串口线或者使用单独网卡
auto_failback on                              从机启动后探测到主机存活是否返回设置
node master                                          
node slave                                     两个node机器
ping 192.168.0.1                              仲裁者   路由器或者交换机来充当
respawn hacluster /usr/lib/heartbeat/ipfail  防止进程死亡   从新拉起进程 64位系统需要改一下/lib 位lib64 不然服务无法启动,切记。


拷贝编辑的此三个文件到第二台服务器B机的/etc/ha.d目录下
scp authkeys ha.cf haresources slave:/etc/ha.d/

修改B机器中的ha.cf

vim /etc/ha.d/ha.cf

修改:ucast 项为:ucast eth1 192.168.2.105 保存退出。

环境测试

A主机nginx

echo "this is heartbeat server master "1111"" > /usr/share/nginx/html/index.html

B主机nginx

echo "this is heartbeat server slave "2222"" > /usr/share/nginx/html/index.html

查看AB 机器nginx启动情况

先启动A机master heartbeat服务 后启动B机slave heartbeat
/etc/init.d/heartbeat start

查看nginx启动情况

ps -aux|grep nginx

注释:(启动heartbeat后nginx会自动启动无需手动,B机器默认nginx是不会启动的)


测试1

客户端浏览器访问192.168.1.106 [流动ip (vip)]

浏览器显示“this is heartbeat server master 111111”正常


测试2

介于该心跳线是基于icmp协议的服务,所以我们屏蔽主机A的ping服务后,B机中heartbeat服务无法探测到A机器时,B机器认为A机器已故障(可从heartbeat日志中查看到),于是B机器即刻启动自身nginx服务接管A机器工作

实验.在A服务器主机上添加一条防火墙规则,拒绝ping
iptables -A INPUT -p icmp -j DROP
客户端浏览器访问192.168.1.106

览器显示“this is heartbeat server slave 2222”正常


测试3.

当我们删除A机器刚才添加的防火墙规则,B机器探测到A机器存活后,读取自身/etc/ha.d/ha.cf 文件auto_failback on项, 于是自动切换到A机器,停止自身ngingx服务。此时服务有A提供。测试如下

实验:删除A机器刚才添加的防火墙规则
iptables -D INPUT -p icmp -j DROP

浏览器显示“this is heartbeat server master 111111”正常

此次测试可从eth0 ,nginx , heaartbeat日志等看到相同的情况。日志:/var/log/ha-log.


完结

超详配置说明:

linux下heartbeat的配置

在Linux系统上双机功能的实现,对双机软件High-Availability Linux Project的安装、配置、运行以及测试进行说明。

1. 软件及安装说明

本文档描述的Linux-HA软件以及参考的文档均来自网站: http://www.linux-ha.org/
通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案,实现双机系统的热备份,并能够做到双机之间的无缝切换,从而对外

提供稳定可靠的服务,最终实现系统高性能RAS(reliability, availability, and serviceability)。

实现双机系统的两台主机不要求完全一致,但应该尽量做到硬件匹配。双机的连接可以使用串口线,也可以通过以太网ethernet进行连接,还

可以采用并存的多种连接方式实现两台主机的多重互连。两台主机应该安装相同的操作系统,推荐使用RedHat Linux。进行网络配置,为每一

台主机分配一个固定IP地址,另外需要选择一个IP地址作为集群IP(cluster IP),该IP是集群系统对外提供服务的接口。

注意:主机IP地址与集群IP地址一定不能重复。

1.2 软件的安装

1.2.1 下载

首先选择与系统匹配的安装文件。本文档测试所用的系统是CENTOS4.4,所用的安装文件是heartbeat-2.0.8.tar.gz,用户可以自行到网站

http://linux-ha.org/download/index.html上下载,该网站也会不断提供实时更新.同时到 http://www.packetfactory.net/libnet/下载

libnet.tar.gz  稳定版本是:1.1.2.1.
Linux-HA软件的安装需要大量支持性的rpm软件包,根据用户系统及配置的不同,安装过程中会提出不同的rpm需求。如果有未获得的rpm包,可

以到网站  http://rpmfind.net/ 上查找并下载。

1.2.2 编译安装

如安装文件所示,heartbeat-2.0.8.tar.gz是heartbeat的源代码软件包。该文件需要重新编译,但是首先应该依次安装支持heartbeat的一些

rpm package,这些软件包对heartbeat提供必要的支持,然后再安装heartbeat软件包。注意由于软件包之间有相互依赖关系,因而需要遵循一

定的安装顺序,可以根据安装过程中的提示自行协调安装顺序。
一些依赖的rpm包如下:
#rpm –ivh perl-Digest-SHA1-2.01-6.i386.rpm
#rpm –ivh perl-Digest-HMAC-1.01-8.noarch.rpm
#rpm –ivh perl-Authen-SASL-2.03-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-ldap-0.2701-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Convert-ASN1-0.16-2.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Net-SSLeay-1.22-1.rh.8.0.um.1.i386.rpm
#rpm –ivh perl-IO-Socket-SSL-0.92-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Parse-RecDescent-1.80-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Mail-IMAPClient-2.2.7-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-XML-NamespaceSupport-1.08-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-XML-SAX-0.12-1.rh.8.0.um.1.noarch.rpm

下面开始编译安装libnet和heartbeat

tar -zxvf libnet.tar.gz 
cd libnet
./configure
make 
make install

tar zxf heartbeat-2.0.8.tar.gz
cd heartbeat-2.0.8
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make
make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/

1.3 软件的配置

Heartbeat软件的安装目录为/etc/ha.d,其中的

README.config对配置文件进行了说明,共有三个主要的配置文件:ha.cf,haresources,authkeys。
下面依次对三个配置文件进行说明,此外用户还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。

1.3.1 配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置

方法说明如下:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息
logfile /var/log/ha-log:heartbeat的日志文件
keepalive 2:心跳的时间间隔,默认时间单位为秒
IXDBA.NET社区论坛
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至

少为deadtime的两倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
baud 19200:设置串行通信的波特率。
serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。
bcast eth0:设置广播通信所使用的网络接口卡。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从

节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
ping ping-node1 ping-node2:指定ping node,ping node并不构成双机节点,它们仅仅用来测试网络连接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常

用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。

1.3.2 配置haresources文件

haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
node-name  network-config  
其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另一个主机名成为从节点


network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机

系统通过集群IP对外提供。

下面举例对配置方法进行说明:

# hello 192.168.8.240 httpd tomcat
假设ha.cf文件中node选项设置的两个主机名分别为hello和web,则根据上述配置,双机系统的主节点为hello,从节点为web。
heartbeat启动时获取集群IP(cluster IP)为192.168.8.240,该IP成为heartbeat对外提供服务的网络地址。此外heartbeat依次启动服务

httpd和tomcat(从左向右的顺序)。heartbeat关闭时将依次关闭tomcat和httpd(从右向左的顺序),并释放cluster IP。
httpd和tomcat分别是apache和tomcat的启动脚本,heartbeat将从下面目录中寻找这些启动脚本:    
/etc/ha.d/resource.d 
/etc/rc.d/init.d
# hello 192.168.8.240/19 httpd tomcat
指定cluster IP为192.168.8.240,并且指定子网掩码为255.255.224.0,每个网段内有213个可用IP,默认广播地址取该网段内的最大可用IP,

取值为192.168.31.255。
此外,还可以向启动脚本传递argument,语法为:scriptname::argument

# hello 192.168.8.240/19/eth0/192.168.31.251 httpd tomcat
指定cluster IP为192.168.8.240,子网掩码为255.255.224.0,使用的网络接口卡为eth0,并强制设定广播地址为192.168.31.251。
注意:两台主机的haresources文件设置必须完全一致。

1.3.3 配置authkeys文件

authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依

次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。
IXDBA.NET技术社区

其配置语句格式如下:
auth 
[]
举例说明:
auth 1 
1 sha1 key-for-sha1
其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。

auth 2 
2 crc
crc方式不需要指定键值。
最后,该authkeys文件的文件许可权应该设为600(即-rw-------),命令为:
     chmod 600 authkeys
注意:上述三个配置文件设置完毕后,应该复制到/etc/ha.d目录下。

1.4 运行与测试

1.4.1 启动heartbeat

heartbeat安装完成后,自动在/etc/rc.d/init.d/目录下生成启动脚本heartbeat,启动heartbeat可以使用命令

/etc/rc.d/init.d/heartbeat start
此外还可以使用stop、restart、reload、status等控制参数。

1.4.2 测试方案

下面描述一个简单的测试方案。系统环境和软件配置如下:
两台主机的主机名和IP地址分别为:   
hello(192.168.6.7)    
web(192.168.6.33)
则ha.cf文件中的node语句定义如下:
node hello
node web
haresources文件定义如下:
hello 192.168.8.240/19/192.168.31.255
该语句指定双机系统的主节点为hello,从节点为web,集群IP(cluster IP)为192.168.8.240,子网掩码为255.255.224.0,广播地址为

192.168.31.255。本测试方案没有指定heartbeat启动的服务,仅通过ping命令和telnet命令来检测双机系统的可用性。
任何一台主机在启动heartbeat后,可以使用命令 ps aux | grep heartbeat 来查看heartbeat的进程状态,可以使用ifconfig命令确认当前主

机是否已经绑定了cluster IP,此外还可以在/var/log/目录下查看heartbeat的日志文件ha-debug、ha-log。如果运行过程中产生了任何异常

或错误消息,则应该根据上述信息进行检查和调试。

测试步骤如下:

1.

主节点启动heartbeat
在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat start 启动heartbeat。该主机将会自动绑定集群IP地址,在双机系统之外的第三台

主机上使用ping命令检测集群IP地址192.168.8.240,直至该地址变为可用(根据硬件和网络性能的差异,主机绑定集群IP地址需要等待不同的

时间)。
在主节点hello上使用ifconfig命令查看该主机的网络配置,显示主节点已经绑定了集群IP地址192.168.8.240。
在第三台主机上使用telnet命令登录集群IP地址192.168.8.240,输入主节点hello的用户名和口令,可以成功登录hello主机。

2.从节点启动heartbeat
使用相同的命令启动从节点web的heartbeat。由于在两台主机同时启动heartbeat的情况下,应该由主节点来获取IP地址并对外提供服务,因而

从节点heartbeat的启动并不对主节点产生影响。最终仍然由主节点hello绑定集群IP地址,使用telnet命令登录的也是主节点hello。

3.  主节点关闭heartbeat
   在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat stop 关闭heartbeat。
使用ifconfig命令可以发现,主节点hello已经释放了集群IP地址192.168.8.240,并由从节点web绑定该IP地址。使用telnet命令登录的是从节

点web。

在这个过程中,使用ping命令进行不间断监测,可以发现集群IP地址192.168.8.240一直处于可通状态,并没有产生任何阻塞或延迟,所以,在

关闭处于激活状态的heartbeat的情况下,双机系统可以实现无缝切换。但是在另外一些情况下,比如网络故障、主机关机或重启等,如果该主

机的heartbeat处于激活状态,则不能实现双机的无缝切换,切换过程需要有一定的延迟,使用ping命令可以发现集群IP地址暂时无法使用。

3. 主节点再次启动heartbeat
在这种情况下,主节点hello将重新绑定集群IP地址,从节点web释放该IP地址,并由主节点对外提供服务。在主节点启动heartbeat之后,集群

IP地址的释放和绑定有一定的延迟。虽然有一定的延迟,但是集群IP地址的释放和绑定是同步进行的,使用ping命令可以发现集群IP地址一直

处于可通状态,该过程并不影响双机系统的可用性。所以该过程仍然是一个无缝切换。

HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级的更多相关文章

  1. HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级

    HA(High available)-Keepalived高可用性集群   Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual ...

  2. heartbeat+DRBD 高可用 双机热备

    heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...

  3. 两台linux利用heartbeat+drbd 完美实现双机热备

    一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...

  4. spark、standalone集群 (2)集群zookeeper 热备

     测试 cmd     spark-examples-1.6.0-hadoop2.6.0.jar   spark 2.0以后  就没有这个 jar.需要下载 ./bin/spark-submit -- ...

  5. Heartbeat实现集群高可用热备

    公司最近需要针对服务器实现热可用热备,这几天也一直在琢磨这个方面的东西,今天做了一些Heartbeat方面的工作,在此记录下来,给需要的人以参考. Heartbeat 项目是 Linux-HA 工程的 ...

  6. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)

    Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...

  7. 物联网架构成长之路(9)-双机热备Keepalived了解

    1. 前言 负载均衡LB,高可用HA,这一小结主要讲双机热备方案保证高可用.这里选择Keepalived作为双机热备方案,下面就对具体的配置进行了解.2. 下载Keepalived wget http ...

  8. mysql双机热备+heartbeat集群+自动故障转移

    环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为 192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.20 ...

  9. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

随机推荐

  1. 0030 Linux 网络操作命令

    1. 主机是否可达 ping IP 2. 服务是否在运行 telnet IP port 3. 网络配置 ifconfig ip route arp 4. 网络访问 curl wget 5. 网络追踪 ...

  2. js中var 笔记

    js中声明变量会用到Var; 1,var a;声明一个变量a,此时输出a,会显示undefined:因为此时的a未定义: 2, var a=0;和b=0;有什么区别呢? 当声明一个全局变量时,实际是定 ...

  3. Xcode集成开发环境的安装

    Xcode是苹果官方提供的iOS开发环境,安装方式如下: 安装过程需要登录AppleID账号,如果你没有苹果账号,可以免费注册一个.根据提示就能完成Xcode安装.

  4. Clojure学习笔记(一)——介绍、安装和语法

    什么是Clojure Clojure是一种动态的.强类型的.寄居在JVM上的语言. Clojure的特性: 函数式编程基础,包括一套性能可以和典型可变数据结构媲美的持久性数据结构 由JVM提供的成熟的 ...

  5. IIS6.0开启gzip压缩(来自百度)

    IIS6.0开启gzip压缩 | 更新:2012-08-10 10:29 1 2 3 4 5 分步阅读 开启gzip可以极大的加速网站.有时压缩比率高达80%,近来测试了一下,最少都有40%以上,还是 ...

  6. c/c++ 软件集成 安装和可卸载软件

    作为一个工程师应具备的一些能力: 1. 首先具备这款软件:  >inno  Setup      免费版还开源,良心货,妥妥的. 2. 这款软件上手也比较款,可自行参考使用文档 3.编译成功,生 ...

  7. Project中分清楚挣值项

    在项目管理非常重要的挣值管理,有一些关键项,像PV,EV,AC,BAC,EAC,ETC等等这些都是关键项,如果这个没分清楚,计算出很多东西都是错的,下面两个图是我一个项目快要完成的报表. 图1 图2 ...

  8. cppcheck 下载与安装(Liunx)

    下载网址:https://sourceforge.net/projects/cppcheck/files/cppcheck/ 选择安装包:cppcheck-1.75.tar.gz 解压安装包:tar ...

  9. HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )

    题意:给定一个环形字符串,让他把它分成k份,使得最大的字典序 最小. 思路:二分答案,首先很明显答案所有可能是 n*n种  排序可以先求出最长公共前缀,这样比较就只需要比较公共前缀的下一位就能比较出两 ...

  10. RoseRT 建模学习

    目录: 一.RoseRT理论知识 二.一个完整模型的建立 三.TD-SCDMA(UE侧)RRC层建模的学习 四.LTE的RRC层建模(1.自主完成‘2.也可以是L2) 五.参考文献 一.RoseRT理 ...