首页 > 代码库 > Linux之Heartbeat实现服务器的高可用

Linux之Heartbeat实现服务器的高可用

Heartbeat简介
   Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。

Heartbeat结构图
技术分享

基准层:(心跳传递层)运行在每一个节点,通过组播的方式传寄给每个备用节点。此协议工作在udp的694端口。
 CRM:(集群资源管理器)依赖与心跳层,并且可以向上传及信息,安装与每个节点。
 LRM:(本地资源管理器)由CRM进行调度,施行CRM的决策,找到RA进行执行。
 RA:(资源代理)能够接受CRM的调度,用于实现在某一个的节点上资源调度和配置,一般为脚本。脚本必须接受{start|stop|restart|status}

CRM的工作方式
   在众多的CRM中会选出一个CRM作为管理员,负责调度使用那个备用服务器作为主服务器。

Heartbeat各层常用的软件

 1. 信息层:
    a.Heartbeat V1,V2,V3
    b.corosync
 2. CRM:
    a.Heartbeat v1:配置接口(配置文件)
    b.Heartbeat v2:crm(命令)
    c.Heartbeat v3:heartbeat+pacemaker+gluster-glue(粘和挤)
    d.pacemake
 3. RA:
    a.heartbeat legacy:heartbeat的传统类型
    b.OCF:开源集群框架

防止脑裂

节点级别:以少数服从多数的形式,切断少数集群的电源。
 资源级别:屏蔽少数集群访问公共资源。

集群的工作模式

N-M模型:N>M
    在N个节点上运行M个服务,M个服务上出现故障,将服务转移到N-M个节点上的其中一个,这个集群模式中,至少3台主机
N-N模型:
    在N个节点上运行N个服务,每个节点上运行一个服务,当其中一个节点出现故障时,将服务转移到另一个节点。至少两台主机。
A/A模型:
    此模型为双主模式,两台主机分别运行两个主服务,两个主服务分别对应不同的IP,当其中一台出现故障时,将会转移到另一台。123456123456

资源转移方式

rgmanager:(故障转移域)指只能在指定的节点上转移
pacemaker:资源约束
    资源粘性:是指资源约束一样时,根据粘性判断,更倾向于运行在那个节点。
     1. 位置约束:资源更倾向于运行的那个节点
        inf:无穷大,资源一定运行在这个节点上
        -inf:无穷小,单反有可能离开这个节点     
     2. 顺序约束:定义资源启动顺序和关闭次序
     3. 排序约束:两个资源是否愿意在一起
        inf:表示愿意
        -inf:表示不愿意常常使用顺序约束和排序约束

资源类型

primitive,native:主资源,只能运行于一个节点
 group:组资源
 clone:克隆资源,可以在多个节点上运行,需要定义两个参数(总克隆数,每个节点的最大克隆数)
 master/slave:主从资源

不在集群中的资源处理方式

stop:停止服务
 ignore:忽略是不是集群成员,继续运行。
 freeze:冻结,不解收新的请求。
 suicide:kill sever

Heartbeat V1实现web资源高可用

 1. yum安装heartbeat
    [root@www ~]# wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
    [root@www ~]# rpm -ivh epel-release-6-8.noarch.rpm 
    [root@www ~]# yum install heartbeat*
 2. 配置文件/etc/ha.d/目录下
    [root@www ~]# cp /usr/share/doc/heartbeat-3.0.4/{ha.cf,authkeys,haresources} /etc/ha.d/
    [root@www ~]# chmod 600 /etc/ha.d/authkeys
 3. authkeys配置文件
    格式:
        auto {1,2,3}        1 crc        2 sha1 密码        3 md5 密码 4. ha.cf常用配置文件
    logfile /var/log/ha-log       //日志文件
    keepalive time                //多长时间进行一次心跳检测
    deadtime 30                   //多长时间没有检测到心跳,接管资源
    warntime 10                   //多长时间没有检测到心跳,将写入日志
    initdead 120                  //在系统重启或者启动之后,多长时间过后网络再一次工作
    dpport 694  
    baud  19200                   //设置串行通信波特率
    bcast   eth0                  //设置广播接口                  
    mcast eth0 225.0.0.1 694 1 0  //多播
    ucast   eth0    ip            //单播
    auto_failback on              //主节点恢复后,能够切回
    node    Clone1                //主节点主机
    node    Clone2                //备用节点主机
    compression     bz2           //压缩传送
    compression_threshold 2       //压缩最小极限,单位为KB
 5. haresources资源配置文件
    格式:
        第一种:主节点(nodel) vip|vip/mask/dev  服务名称   
        第二种:主节点(nodel) vip|vip/mask/dev  Filesystem::/dev/sad1::/挂在点   服务名称
    eg:Clone1 192.168.80.150 httpd

测试结果
技术分享
技术分享

关闭主节点的heartbeat
技术分享

使用Heartbeat V2配置web高可用

配置步骤 
    1. 在Heartbeat V1的基础上安装heartbeat-gui,只在主服务上安装 
    2. 在配置文件ha.cf中添加crm on这一行
    3. 删除haresources文件 
    4. /usr/lib64/heatbeat/ha_propagate可以将配置文件同步到替他节点上。 
    5. 启用hearbeat-gui
        [root@www ~]# hb-gui &

由于Heartbeat V3配置都是命令和corosync+pacemaker的配置方式一样,所以在此就不配置Heartbeat V3,下期使用corosync+pacemaker配置。


Linux之Heartbeat实现服务器的高可用