1.heartbeat简介:


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

        这个集群方案是利用第三方软件搭建的,要比redhat自带的集群软件在功能上简化一些,但是搭建起来非常的方便。而且是一种快速解决方案。

        heartbeat的高可用集群采用的通信方式是udp协议和串口通信,而且heartbeat插件技术实现了集群间的串口、多播、广播和组播通信。它实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的可用性。它能侦测服务器应用级系统软件、硬件发生的故障,及时地进行错误隔绝、恢复;通过系统监控、服务监控、IP自动迁移等技术实现在整个应用中无单点故障,简单、经济地确保重要的服务持续高可用性。   Heartbeat采用虚拟IP地址映射技术实现主从服务器的切换对客户端透明的功能。

但是单一的heartbeat是无法提供健壮的服务的,所以我们在后台使用lvs进行负载均衡。


2.LVS简介

        LVSLinux Virtual Server的简写,意即 Linux虚拟服务器,是一个虚拟的服务器集群系统。由 章文嵩博士成立。

        IPVS

        说道lvs我们就得提到ipvs,IPVS 是 LVS 集群系统的核心软件,它的主要作用是:安装在 Load Balancer 上,把发往 Virtual IP 的请求转发到 Real Server 上。IPVS 的负载均衡机制有三种,这里使用 IP Tunneling 机制:
        ? Virtual Server via NAT
        ? Virtual Server via IP Tunneling
        ? Virtual Server via Direct Routing

        我们这次的实验采用最后一种直连的方式。
        lvs的调度算法非常的重要,大家一定要熟悉他们。在官方网站上有详细的解释:http://zh.linuxvirtualserver.org/
        IPVS 的负载调度算法有十种:
 
            轮叫(Round Robin)
            加权轮叫(Weighted Round Robin)
            最少链接(Least Connections)
            加权最少链接(Weighted Least Connections)
            基于局部性的最少链接(Locality-Based Least Connections)
            带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
            目标地址散列(Destination Hashing )
            源地址散列(Source Hashing)
            最短期望延迟(Shortest Expected Delay)
            无须队列等待(Never Queue)
           
            注释:我们采用较为简单的轮叫方式。

3. ldirectord 简介:    

       ldirectord是配合lvs作为一种健康检测机制,要不负载均衡器在节点挂掉后依然没有检测的功能。



上面介绍了 heardbeat、lvs和ldirectord的基本概念。说再多不如搭建一个服务给大家展示效果。

4.搭建RHEL6.5+LVS+Linux-HA+Ldirectord服务(提供http和ftp服务作为例子)  

    注意:

        1.系统:redhat6.5 ;
        2.节点:一共要用到四个虚拟机作为节点,其中两个上面安装heartbeat和lvs,另外两个节点只提供apache和vsftpd服务;
        3.这四个节点之间的解析一定要做好;
        4.防火墙关闭,时间同步,四个机子的系统版本最好相同。
       
        实验的环境如图下所示,第一个控制台是我真机的,其他四个为实验的四个节点,前两个安装heartbeat和lvs,后两个控制台提供apache和vsftpd服务。接下来我们分块来配置。
       
     
   1. 安装heartbeat:
    
    这个是第三方软件,不是redhat自带的,所以大家要自己去下载:,分别需要:

    heartbeat-3.0.4-2.el6.x86_64.rpm
    heartbeat-devel-3.0.4-2.el6.x86_64.rpm
     heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
 
    我的在本地的vsftpd服务上有,也可以在http://rpm.pbone.net/上查找。
   
    两个节点上都应该有这个三个包。然后在自定义的位置安装他们:
  

   
    要是没有安装成功那么一定要重新设置你的yum源:
    vim    /etc/yum.repos.d/yum.repo
   
   
    这个是heartbeat的三个配置文件:

、ha.cf        Main configuration file
    haresources    Resource configuration file
    authkeys    Authentication information
   
    默认情况下配置文件里没有,我们得从其他地方拷贝一份:

   
   
    vim ha.cf:
   
   
    keepalive 2
    设定heartbeat之间的时间间隔为2秒。
    warntime 10
    在日志中发出“late heartbeat“警告之前等待的时间,单位为秒。
    deadtime 30
    在30秒后宣布节点死亡。
    initdead 120
    在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍。
    udpport 694
    使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号。

  

  

   默认在回复后自动回切:
   
   
   
    有两个节点安装heartbeat:
   
   
   
    用来测试节点的网络是否联通:

   
   
  
   
   上述是ha.cf配置文件的修改,然后我们要来authkeys文件:
   
    
    
     修改文件的访问权限:
    
    
    
     最后我们来修改haresources,我们要在其中添加一个apache服务,但是我们要给它一个虚拟的ip(这个ip一定是没有被别人占用的),让这两个节点作它的论寻。
    
    
     
     在两边都安装httpd服务作为测试,为了区分,我们在他们的index.html中写入不同的内容(事实上在生产环境中两者的内容当然是相同的,因为我们作的可是负载均衡么)
    
      做完上述内容后开启两边的heartbeat服务:
     

      然后我们来通过firefox检验效果:
     
     
     
      然后我们让当前的节点heartbeat关闭,发现另外一个节点自动接管了:
     
     
     
     
     
       再让刚才那个节点的heartbeat开启,因为它是主节点(server101.example.com),所以又接管回来了:
      
      
      
      

小结:

        这样就起到了负载均衡的效果,但是这只是单纯的heartbeat,我们还没有和lvs进行结合,在功能上不够完善,在接下来的帖子里会逐渐把两者结合起来,下一个帖子首先会让大家感受一下lvs单独使用时的效果,最后会把两者结合起来。
    
   

   

   
Logo

更多推荐