Heartbeat v2 + haresouce 实现WEB高可用

一、简介

heartbeat最后一个v2版本是2.1.4,可以使用v1版本的haresource和crm,本实验以haresource为crm来讲解WEB的HA,haresource是不支持资源的监控操作,因此当资源出现了挂起,异常问题时不会导致heartbeat资源的转移,就存在问题,因此需要切合其他方式来实现资源的健康控制,这边我使用自己写得脚本的SHELL脚本来实现。

二、拓扑

三、配置

0、  HA前提:

1.时间同步(心跳信息要时刻一致)

utpdate  .....

2.主机名通信(ha当中的心跳信息的传递是通过主机名解析得来)

uname  -n   与/etc/hosts当中的一致

3.ssh互信 (当heartbeat出现问题的时候,通过ssh来自动完成资源的转移操作)

1、说明:

rhel5当中的heartbeat软件包可以从epel当中下载或者源代码编译,rhel6开始已自带

heartbeat的主要文件如下:

 /etc/ha.d/authkeys     #心跳信息认证
           ha.cf        #message line心跳信息的配置参数
           haresource   #v1版本的crm
 
 /usr/share/heartbeat/  #很多可执行的程序
                     hb_standy   #当前节点切换为备份节点
                     hb_takeover  #抢回资源,变为主节点
                     hb_delnode   #删除节点

2、配置authkeys,认证信息

#chmod 600 /etc/ha.d/authkeys
#openssl rand -base64 16  >> /etc/ha.d/authkeys
# tail -5 /etc/ha.d/authkeys

3.配置ha.cf,心跳参数

..............
#debugfile /var/log/ha-debug   #调试日志位置

#logfile /var/log/ha-log       #日志记录在本地文件位置
#logfacility    local0         #通过syslog记录日志(同上,2选1即可)

#keepalive 2                    #每2s发送一次心跳包
#deadtime 30                    #死亡时间
#warntime 10                    #警告时间
#initdead 120                   #初始化死亡时间

udpport 694                     #进程监听udp 694端口

#baud   19200                    #波特率19200,使用com口才使用的配置,一般不用  
#       serial  serialportname ...
#serial /dev/ttyS0      # Linux
#serial /dev/cuaa0      # FreeBSD
#serial /dev/cuad0      # FreeBSD 6.x
#serial /dev/cua/a      # Solaris
#---------------------------------------------------

bcast   eth1            # Linux    #在eth1口使用广播传递心跳信息
#bcast  eth1 eth2       # Linux
#bcast  le0             # Solaris
#bcast  le1 le2         # Solaris
#mcast eth0 225.0.0.1 694 1 0
#

#ucast eth0 192.168.1.2

auto_failback off

#node   ken3
node node1.yu.com                 #节点1
node node2.yu.com                 #节点2

ping 192.168.192.1                #pingnode节点为192.168.192.1

#ping_group group1 10.10.10.254 10.10.10.253
.......

4.配置资源

node1.yu.com  192.168.192.222/24/eth0 httpd  #默认在node1节点启动vip和http服务

5.HA测试

6.添加额外脚本实现资源监控

此时,HA即可实现,关闭heartbeat也能实现切换,但是如果vip 或者httpd进程异常,那么heartbeat是不会现在资源转移的,也就是说heartbeat是不会监控vip和httpd的健康状态,因此为了实现httpd异常时,也能保证HA,这边我使用一个简单地脚本来实现,如下:

[[email protected] html]# cat /etc/ha.d/1.sh

#!/bin/bash
#
vip="192.168.192.222";

while true;
do
ip addr show | grep $vip > /dev/null
ip_num=$?
nc 127.0.0.1 80 -z > /dev/null
port_return=$?
 if [ $ip_num -eq 0  ] && [ $port_return -eq 0 ] ;then
   let num=0
 elif [ $ip_num -eq 0 ] && [ $port_return -ne 0 ];then
    let num++
 elif [ $ip_num -ne 0 ] && [ $port_return -eq 0 ];then
    let num++
 elif [ $ip_num -ne 0 ] && [ $port_return -ne 0 ];then
    let num=0
 fi
sleep 1
 if [ $num -gt 2 ]; then
   service heartbeat stop > /dev/null
 fi
done

        ###大致的过程如下,判断当前的节点是否有vip或者httpd进程,当一个为0一个非为0即表示存在问题的资源,这个时候休眠2s,然后再执行一次,如果还是一样的问题,则关闭当前节点的heartbeat的服务,实现切换和资源的转移。

将1.sh加入到heartbeat的启动脚本中,随着heartbeat启动和关闭:

编辑/etc/init.d/heartbeat在start和stop处修改为如下:

 start)
        StartLogd
        RunStartStop pre-start
        StartHA
        RC=$?
        Echo
        if
          [ $RC -eq 0 ]
        then
          [ ! -d $LOCKDIR ] && mkdir -p $LOCKDIR
          touch $LOCKDIR/$SUBSYS
        fi
        RunStartStop post-start $RC
        /etc/ha.d/1.sh &                ##让1.sh也在后台实时操作
        ;;
 
 stop)
        RunStartStop "pre-stop"
        StopHA
        RC=$?
        Echo
        if
          [ $RC -eq 0 ]
        then
          rm -f $LOCKDIR/$SUBSYS
        fi
        RunStartStop post-stop $RC
        StopLogd
        pkill 1.sh                ##杀掉1.sh的进程
        ;;
        
  restart)
        sleeptime=`ha_parameter deadtime`
        StopHA
        pkill  1.sh
        Echo
        EchoNoNl Waiting to allow resource takeover to complete:
        sleep $sleeptime
        sleep 10 # allow resource takeover to complete (hopefully).
        echo_success
        Echo
        StartHA
        /etc/ha.d/1.sh &
        Echo
        ;;

此时vip或者httpd的进程出现问题都可以实现资源的转移。

时间: 2024-10-10 13:17:43

Heartbeat v2 + haresouce 实现WEB高可用的相关文章

heartbeat v2版CRM的高可用web集群的实现

上篇文章:heartbeat v1版CRM的高可用集群的实现 集群架构图 : 主节点(172.16.31.10) 客户端(172.16.31.12) Vitual IP(172.16.31.166)                            NFS IP(172.16.31.12) 从节点(172.16.31.11) 注:心跳信息传递借助eth0网卡实现 网络以及IP地址规划如下所示: 节点类型     IP地址规划          主机名      类型 主用节点     eth

基于heartbeat V2 crm 的lamp高可用

  实验环境: 虚拟机ha1:192.168.61.130 虚拟机ha2:192.168.61.132 虚拟机nfsserver:192.168.61.136 vip:192.168.61.100 目的: 使用heartbeat V2 crm(hb_gui)实现lamp+nfs+wordpress的高可用. 为了实验简便,lamp环境直接用yum配置,配置好的mysql数据库存放位置再重新挂载到nfs 注意事项: (a) .节点间时间必须同步:使用ntp协议实现: 服务端/etc/ntp.con

heartbeat v3版之web高可用初体验

系统:centos6.4最小化 heartbeat-3.0.4-2.el6.x86_64.rpm,heartbeat-libs-3.0.4-2.el6.x86_64.rpm 搭建高可用集群之前,首要前提条件: 1.节点之间必须能够ssh互信通信 2.节点间需传递集群事务信息,网段选择 3.节点名称与hostname(uname -n)一致,不要使用dns解析 4.各节点之间保持时间上的同步 #####################################################

heartbeat V2实现MySQL+NFS高可用

heartbeatV2实现MySQL+NFS高可用  实验前准备 1.时间需要同步,建议使用NTP服务器同步时间并且创建时间同步计划   #ntpdate 172.16.0.1  //第一个节点   #ntpdate 172.16.0.1  //第二个节点   crontab  -e     */3 * * * *  /usr/sbin/ntpdate 172.16.0.1 > /dev/null 2.root用户基于密钥认证的时候 ssh-keygen -t rsa -P '' //节点一 s

CoroSync+Pacemaker实现web高可用

一.简介 CoroSync最初只是用来演示OpenAIS集群框架接口规范的一个应用,可以说CoroSync是OpenAIS的一部分,但后面的发展明显超越了官方最初的设想,越来越多的厂商尝试使用CoroSync作为集群解决方案.如Redhat的RHCS集群套件就是基于CoroSync实现. CoroSync只提供了message layer,而没有直接提供CRM,一般使用Pacemaker进行资源管理. CoroSync和Pacemaker的配合使用有2种方式:①Pacemaker以插件形式使用

heartbeat+iscsi+mysql实现双机高可用

8.heartbeat+iscsi+mysql实现双机高可用 虚拟地址的迁移 iscsi提供存储共享 (mysql 是application  也可以是ftp web等) 在iscsi服务器上:10.0.2.220 必修有两块磁盘./dev/sdb是用来共享的.   (1)安装iscsi服务器端软件    # yum install scsi-target-utils        (2)设置配置文件进行iscsi共享    # vim /etc/tgt/targets.conf    <tar

keepalive+haproxy实现web高可用

一)地址配置:上面的图可能有点乱,这里再梳理一下(准备四台主机) 主机1: 172.16.24.100(面向外网的地址) 172.16.24.222(vip地址,传递两台主机的心跳信息) 192.168.24.1  (面向内网的地址) 所需要安装的软件为(keepalived+haproxy) 主机2 172.16.24.66(面向外网的地址) 172.16.24.222(vip地址,传递两台主机的心跳信息) 192.168.24.1  (面向内网的地址) 所需要安装的软件为(keepalive

HAProxy基于KeepAlived实现Web高可用及动静分离

    前言     软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载均衡.LVS是基于Linux操作系统实现的一种软负载,而Haproxy则是基于第三方应用实现的软负载.Haproxy相比LVS的使用要简单很多,但跟LVS一样,Haproxy自己并不能实现高可用,一旦Haprox节点故障,将会影响整个站点.本文是haprox基于keepalived实现web高可用及动静分离.     相关介绍         HAProxy     haproxy是一款提供

CentOS6.5安装DRBD+MariaDB+Heartbeat实现数据库集群高可用

本实验使用两台服务器搭建: 系统                  CentOS6.5 tese02              IP:192.168.1.244 test03               IP:192.168.1.245 DRBD               版本:8.4.6 DRBD-UTIL       版本:8.9.2 MariaDB           版本:10.0.17 Heartbeat         版本:3.0.4 VIP