利用DRBD和OpenSSI构建高可用集群系统
- 格式:pdf
- 大小:283.14 KB
- 文档页数:5
利用DRBD和OpenSSI构建高可用集群系统*龚念袁由光(武汉数字工程研究所武汉430074)摘要为提高集群系统的可靠性和计算性能并降低成本,提出将单一系统映像的集群系统(SingleSystemImage)和分布式复制块设备技术(DRBD)结合起来构建一种高可用集群(SSI-DRBD集群)。这种利用单一系统映像和DRBD技术所构建的集群具有高性能、高可靠、实时性强、易管理和低成本等特点,可作为周期性、高强度和多元信息处理的平台。关键词DRBDOpenSSILVSSSIrootfailover中图分类号TP3911引言集群是利用现有的工作站或高档微机资源,通过高速网络连接构成的并行系统,由于具有用户投资风险小、结构可扩展性好、用户可继承原有的软件资源、编程方便并且构造简单等特点,目前已成为并行处理发展的主流。现在常用的集群大致分为科学集群、负载均衡集群和高可用性集群三种。在军用指控系统中,必须采用高可用集群以满足作战要求。在高可用集群中,为了保证数据的高可靠性,数据的保存大多依赖SAN,NAS等共享存储设备。一旦采用SAN,NAS,就意味着整个集群成本的提高。为了满足指控系统的要求并降低成本,本文提出一种利用DRBD技术和两台普通商用PC来构建高可靠的存储设备的方法,以满足我们对数据的高可靠性要求。除了数据的高可靠性之外,集群的可管理性和易用性对于集群的管理员和用户来说也是一个非常重要的问题,利用分布式系统中的单一系统映像技术,使得管理员和用户像使用一台虚拟的大型计算机一样来管理整个集群,从而具有很好的可管理性和易用性。2SSI系统设计单一系统影响SSI是由中间件层实现的,处于操作系统和用户层环境中间。集群中间件负责为独立但互连的计算机对外提供统一的系统映像(单一系统映像)。整个系统分为三部分,具体个部分的功能如下:第一层:前端机和备份机,运行LVS来进行调度,两者互为备份以提高系统的可用性,是整个系统的信息入口,负责接收客户端请求,并将这些请求按照一定的策略(8种调度算法)分配到集群内部的各处理节点。第二层:集群内部处理节点的本地操作系统内核和本地进程。集群内部处理节点的本地操作系统内核以及本地进程负责各个节点的系统自举,提供基本的OS底层调用以及基本的应用软件支持,逻辑上位于集群系统SSI的边界之外。第三层:SSI(SingleSystemImage)层,集群系统中间件层,包括全局IPC,全局工作进程SIOS,逻辑上位于集群系统SSI的边界之内。SSI实现在操作系统内核层,通过修改与IPC对象,进程信号相关的系统调用,集群内部节点相互协作,统一调度,透明的对用户层应用程序提供SSI服务。3关键技术3.1单一系统映像(OpenSSI)OpenSSI的目标是建立一个可扩展、可用性高、可管理的集群环境。其核心技术体如下:(一)全局进程ID号:运行在集群环境中的每个进程在整个集群范围内都有自己唯一的PID。特别是对于用户、管理人员或某个进程,集群中所有节点上的所有进程都可见、可访问的(/proc目录展示所有进程),就像运行在一台机器上,因此用户可以启动远程节点上的进程,甚至可以将某个节点上正在运行的进程迁移到其它节点上。(二)文件系统的单一映像:整个集群只有一45第35卷(2007)第8期计算机与数字工程
*收到本文时间:2006年10月20日作者简介:龚念,男,硕士研究生,研究方向:并行计算与系统结构。袁由光,男,研究员,研究方向:计算机系统结构。个根文件系统(rootfilesystem),该文件系统的目标是让所有节点上的进程看到相同的文件树(filesystemtree),并且根文件系统在集群范围内都是可见的。其中/etc/fstab文件用于记录所有节点上的文件系统,这样可以明确每个节点上有哪些文件系统,还可以记录文件系统在节点间的转移情况,除此之外,系统用/ect/mtab文件来记录每个文件系统挂接的位置。(三)全局进程间通讯对象:OpenSSI集群上所有进程间通讯对象(IPC)在整个集群范围内部都是可共享、可命名的。这意味着对于信号量、消息队列、共享内存等,它们都在一个名字空间(namespace)中,并且所有节点都可以使用这些对象。虽然SSI集群支持远程设备访问,但每个节点仍然有自己的一组设备(通过devfs管理)、设备目录和自己的交换空间(swapspace)。(四)虚拟IP技术:首先,每个节点有多个地址,其中一个地址是用于内核通讯(kernel-to-kernelcommunication)。这个地址还可以用于MPI或不同节点上应用程序之间的通讯。其次,当某个节点发生故障或是从集群中离开时,集群将该节点机网卡的工作转移到其它节点的网卡上,这样集群就能对外提供不间断的服务。3.2分布式复制块设备分布式复制块设备技术(DRBD)是由内核模块和相关脚本构成,它可用于构建高可用性集群。其实现方式是通过网络镜像整个设备,以达到提供高可靠数据服务的目的。DRBD和OpenSSI的搭配使用能够为各种机构和组织提供一个经济有效的高可靠集群服务平台,并且增强应用程序、数据传输和网络服务的可靠性。DRBD的工作模式如下:每个设备(drbd提供了不止一个设备)都有一个状态,可能是主 状态或辅助 状态。在具有主状态设备的节点上,应用程序应能运行和访问设备/dev/nbX(drbd的低级别设备)。每次写入都会发往本地低级别块设备和带有辅助 状态设备的节点中。辅助设备只能简单地把数据写入它的低级别块设备上。读取数据通常在本地进行。如果主要节点发生故障,利用心跳机制把辅助设备转换到主状态,并启动其上的应用程序。如果你将它和无日志FS一起使用,则需要运行文件系统检查程序(fsck)。如果发生故障的节点恢复工作,它就会成为新的辅助节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后台的服务。目前大部分主流高可用性集群(如:惠普、康柏等等)使用的都是共享存储器,存储器连接集群多个节点(用共享的SCSI总线或光纤通道就可以做到)。DRBD也可以作为一个共享设备,但它并不需要任何不常见的硬件。它在IP网络中运行,而且在价格上IP网络比专用存储网络经济的多。下面我们将利用OpenSSI和DRBD这两种技术来搭建一个高可用的SSI-DRBD集群,并从系统的拓扑结构和配置与测试对整个集群系统作一个详细的介绍。4SSI-DRBD集群拓扑结构与实验结果
图1SSI-DRBD集群体系结构我们构建的SSI-DRBD集群的拓扑结构如图1所示。该集群由n个计算节点组成,分别是ROOT1,ROOT2,NODE3,NODE4!!NODEn-1和NODEn。其中ROOT1和ROOT2是OpenSSI的监控节点(Monitor),也是根文件系统(RootFilesystem)的挂接点。在图1中:n个节点通过交换机连接构成集群,其中配备了DRBD软件的ROOT1和ROOT2成为集群的根文件系统,同时也负责管理、控制整个集群。它们当中一个作为主控节点(Primarynode),另一个作为从控节点(Secondarynode),这两个节点同时可充当计算节点。实际试验过程当中,我们利用七台普通商用PC机按照如图一中的拓扑结构构建了一个SSI-DRBD的集群系统,其中两台计算机作为客户机(CLIENT)、两台计算机作为主控节点和从控节点,其他三台计算机作为集群的计算节点。在正常情况下,只有主控节点对外提供集群服务,而从控节点处于热备状态(Standby),主/从节点上分别配有两块网卡,其中一个作为集群内部联接,另一个对外提供集群服务。两块对外提供集群服务的网卡应用集群虚拟IP技术与外网连接,为46龚念等:利用DRBD和OpenSSI构建高可用集群系统第35卷用户提供单一的虚拟IP地址。如果正在对外提供服务的主控结点宕机,那么从控节点将立刻接替它的工作,继续对外提供服务,从而提高了整个系统的可靠性和可用性。4.1系统配置硬件需求:7台普通商用PC机(其中两台需配有双网卡并作为互备根节点)软件需求:DRBD软件、基于OpenSSI的内核源码包、OpenSSI软件和刻有etherboot可光盘引导的光盘(所有软件包拷贝到/usr/src目录下)(1)安装操作系统选取其中一台拥有双网卡的计算机作为节点1,安装RedhatHatFedoraCore2,安装过程中硬盘分区时请注意,/boot区和根目录区必需分开,并且在扩展分区中建立一个drbd的次级设备分区。最后为两块网卡配置IP地址并修改hostname。(2)安装OpenSSI解压缩OpenSSI软件,进入其目录执行安装命令,安装过程中有两点要注意:首先安装过程中选择的网卡是内联的网卡,用于连到Node2,其次,一定要选择启用根文件系统失效转移(rootfailover)的功能。(3)安装DRBD解压缩drbd软件,进入其目录执行makeinstall命令安装。最后创建initrd文件,并修改GRUB启动目录使其能够以新的Linux内核启动。(4)配置节点2将另外一台拥有双网卡的计算机用etherboot启动,这台计算机作为节点1的备份节点,在Node1上利用ssi-addnode命令添加第二个节点,注意在配置过程中选择rootfailover。在Node2上对其硬盘进行分区使其与节点1的硬盘分区相一致,最后进入Node2的GRUB编辑器修改Node2从本地硬盘启动。在配置完节点1和节点2后,在节点1上利用ssi-addnode命令集群添加其他三台计算机作为集群系统的计算节点,剩下的两台计算机负责从外网访问整个集群系统,最后启动整个集群系统(ROOT1和ROOT2都从本地磁盘启动)。至此,整个集群系统配置完毕。配置过程中需要注意的问题:(1)对于异构的集群系统,根文件系统节点ROOT1和ROOT2非常重要,请选择同为超线程和非超线程的机器,目前为止,DRBD对于超线程和非超线程的机器做DRBD还存在bug,配置将失败。(2)特别注意在对ROOT1和ROOT2进行硬盘分区时,/boot分区和根目录分区必须划分为两个独立的分区,并且ROOT1和ROOT2的硬盘分区顺序要匹配,容量最好也相当,否则数据镜像将失败。(3)在完成ROOT1和ROOT2的配置后,进入系统后的第一次同步非常重要,这将是整个系统配置完成后数据的第一次完全同步,如果这个同步没有完成,两台系统的文件系统表/etc/fstab将被破坏,整个系统将崩溃,配置需要从头再来。请注意配置过程中的上面3个比较重要的问题。4.2系统测试接下来我们对这个SSI-DRBD集群做了三个方面的实验:分别是测量集群的负载平衡、集群的故障模拟和根文件系统节点间的数据同步。(1)在测量集群的负载平衡实验当中,我们利用OpenSSI提供的一个demo程序,调用fork()函数创建了50个进程,然后利用监视程序观察这50个程序在SSI-DRBD集群中节点间的分布情况,截图效果如下:Node1:loadavg11.327.213.60Node2:loadavg13.106.222.77132306132310132311132313132315132307132308132309132312132314132328132329132332132333132334132324132325132330132331132352Node3:loadavg10.246.214.60Node4:loadavg14.107.223.77132319132321132322132326132327132316132317132318132320132323132335132337132338132341132345132339132340132342132343132344132336Node5:loadavg11.105.221.77132347132348132349132350132351132353132354132355132346在图中我们可以看到每个集群节点上运行的进程号以及各个节点机的负载。创建的50个进程几乎平均分配到了各个计算节点上,实际效果较好的满足了我们的需求。(2)在集群故障模拟的实验当中,我们人为模拟根文件系统的宕机故障(拔掉主控节点的电源),在进行切换的过程中,服务进程能够在15秒之内在从控节点上启动,对外提供不间断的服务,对于普通应用来说,这已能达到需求。(下转第116页)47第35卷(2007)第8期计算机与数字工程