LVS Heartbeat Ldirectord在Red Hat9.0下的实现

陆 飞(fluzj@21cn.com、fluhzzj@hotmail.com)
杭州市地方税务局西湖征收管理局
2003年9月

随着Internet技术的迅猛发展,网络技术、性能的不断提高,高可伸缩性、高可用性、可管理性、价格有效性的网络服务技术将 成为网络服务技术的主导。各种平台下的技术方案应运而生。本文试图以一篇完整的理论 实践性的文字来介绍如何在优秀的开源操作系统Linux下创建低成 本、高性能、高可用的服务集群系统。文中所使用的系统和软件包均为最新版本。希望通过对本文的阅读能使您对如何创建Linux下的集群系统有所帮助。

1.Linux下的解决方案

Linux下的集群系统通常能够分为三类:

  1. HA容错集群 (Fail-over Cluster)
    高可用性集群(High available)用于不可间断服务的环境下。提供冗余的容错备份,在主节点失效后,能够立即接管相关资源及继续提供相应服务。
  2. 负载均衡集群 (Load Balancing Cluster)
    在应用服务的高负载情况下运用该技术,由多台节点提供高可伸缩的,高负载的服务器组。以确保对外提供良好的服务响应。
  3. HPC高性能电脑集群 (High Performance Computing)
    概念并不完全统一,有一定争论,应该理解为并行系统,主要用于科学计算。

本文所要介绍的是前两类集群的一个完美的组合。

1.1. Linux Virtual Server项目

在1998年5月,由章文嵩博士成立了Linux Virtual Server的免费软件项目,进行Linux服务器集群的研发工作。同时,Linux Virtual Server项目也是国内最早出现的免费软件项目之一。该项目针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解 决方法,他通过前端一个负载调度器(Load Balancer)无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、 高可用的服务器相同。客户程式不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进 程故障和正确地重置系统达到高可用性。并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。

虚拟服务器的体系结构如图2所示。


图2:虚拟服务器的结构

1.1.1. LVS的核心软件IPVS

在调度器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中有通过网络地址转换(Network Address Translation)VS/NAT技术的基础上,IPVS软件实现了三种IP负载均衡技术:

1)Virtual Server via Network Address Translation(VS/NAT) 网络地址转换 (如图1)
2)Virtual Server via IP Tunneling(VS/TUN) 隧道技术 (如图2)
3)Virtual Server via Direct Routing(VS/DR) 直接路由 (如图3)

针对不同的网络服务需求和服务器配置,IPVS调度器实现了如下十种负载调度算法:

  1. 轮叫(Round Robin)
  2. 加权轮叫(Weighted Round Robin)
  3. 最少链接(Least Connections)
  4. 加权最少链接(Weighted Least Connections)
  5. 基于局部性的最少链接(Locality-Based Least Connections)
  6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
  7. 目标地址散列(Destination Hashing )
  8. 源地址散列(Source Hashing)
  9. 最短期望延迟(Shortest Expected Delay)(新增加调度算法)
  10. 无须队列等待(Never Queue)(新增加调度算法)

其中9-10是最新1.09版IPVS软件包中新增的调度算法,这十种调度算法将会在后面的ipvsadm配置文档中用到,通常用英文单词的第一个字母的缩写来表示。例如:轮叫(Round Robin)表示为rr。

三种IP负载均衡技术的优缺点比较


VS/NATVS/TUNVS/DR
服务器(OS)任意支持隧道多数(支持Non-arp )
服务器网络私有网络局域网/广域网局域网
服务器数目(100M网络)10~20100多(100)
服务器网关负载均衡器自己的路由自己的路由
效率一般最高

三种IP负载均衡技术中特别是后两种技术VS/TUN,VS/DR极大地提高系统的伸缩性,他们的相关技术原理不是本文讨论的重点,若需了解周详内容,请参看章文嵩博士的相关撰文。


图1


图2


图3

1.2. High Availability of LVS

较为成熟的方案有mon heartbeat fake coda 和ldirectord heartbeat 方案,本文我们采用的是ldirectord heartbeat 方案。

1.2.1. Heartbeat

Linux-HA 项目开始于 1998 年,是 Linux-HA HOWTO(Haranld Milz 著)的产物。该项目现在由 Alan Robertson 领导,许多其他代码提供者也参和其中。1.0.3版本是2003年6月发布的最新稳定版本。

Heartbeat 通过通信介质(通常是串行设备和以太网)监控节点的"健康"状况。最好有多个冗余介质,以便我们既能够使用串行线又能够使用以太网链接。每个节点运行一个 守护程式进程(称为"心跳")。主守护程式派生出读和写每个心跳介质的子进程,连同状态进程。当检测到某个节点发生故障时,Heartbeat 运行 shell 脚本来启动(或停止)辅助节点上的服务。按照设计,这些脚本使用和系统 init 脚本(通常位于 /etc/init.d 中)相同的语法。缺省脚本是为文档系统、Web 服务器和虚拟 IP 故障转移提供的。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!