一种服务器集群部署方法、装置、计算设备及存储介质转让专利

申请号 : CN202110889094.2

文献号 : CN113347049B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁彦刚孟杰薛皓琳刘兴伟

申请人 : 统信软件技术有限公司

摘要 :

本发明公开了一种服务器集群部署方法,适于在服务器中执行,服务器与一个或多个客户端通信连接,方法包括步骤:获取服务器的配置信息,根据配置信息生成主节点信息;对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口;根据客户端的网络端口设置客户端为从节点,并生成从节点信息;根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群。本发明还一并公开了一种服务器集群部署装置,一种计算设备和计算机可读存储介质。

权利要求 :

1.一种服务器集群部署方法,适于在服务器中执行,所述服务器与一个或多个客户端通信连接,所述方法包括步骤:获取服务器的配置信息,根据所述配置信息生成主节点信息;

对与所述服务器连接的每一个客户端进行网络设置,构建所述客户端的网络端口;

根据所述客户端的网络端口设置所述客户端为从节点,并生成从节点信息;

根据所述主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群;包括步骤:

根据所述主节点信息和从节点信息分别在客户端设置所安装的集群管理软件开机启动;

向用户提供默认安装和高级安装的安装选项;

当用户选择高级安装时,在客户端安装和配置虚拟机,对客户端进行从节点设置;

其中,所述在客户端安装和配置虚拟机包括步骤:若所述客户端中不存在虚拟机,则在所述客户端中新建虚拟机;

构建虚拟域资源和虚拟机资源代理文件;

根据所述虚拟域资源和虚拟机资源代理文件设置所述虚拟机的节点类型,所述虚拟机的节点类型包括guest节点和remote节点。

2.如权利要求1所述的方法,其中,所述服务器还存储有多种语言资源包,每种语言资源包对应一种语言,所述方法还包括步骤:向用户提供多种语言选项;

根据用户选择的语言选项,加载相应语言对应的语言资源包进行服务器集群部署。

3.如权利要求2所述的方法,其中,所述获取服务器的配置信息,根据所述配置信息生成主节点信息包括步骤:

获取所述服务器的IP地址,主机名和用户密码;

根据所述IP地址,主机名和用户密码生成主节点信息。

4.如权利要求3所述的方法,还包括步骤:根据与所述客户端的通信连接,对与所述服务器连接的每一个客户端进行连通性检查,若检查通过,则对所述客户端进行网络设置。

5.如权利要求4所述的方法,其中,所述对与所述服务器连接的每一个客户端进行网络设置,构建所述客户端的网络端口包括步骤:从所述客户端获取公钥文件;

根据所述公钥文件对所述客户端的防火墙进行设置,构建所述客户端的网络端口。

6.如权利要求5所述的方法,根据所述客户端的网络端口设置所述客户端为从节点,并生成从节点信息包括步骤:

根据所述客户端的主机名进行从节点认证;

认证通过后获取所述客户端的IP地址和主机名;

根据所述IP地址和主机名生成从节点信息。

7.如权利要求1‑6中任一项所述的方法,其中,所述服务器和与服务器连接的客户端预安装有集群管理软件,所述根据所述主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群包括步骤:将所述服务器的主节点信息和客户端的从节点信息在服务器中进行存储;

根据所存储的主节点信息和从节点信息分别在服务器和客户端设置所安装集群管理软件开机自动启动,以创建并启动服务器集群。

8.一种计算设备,包括:

一个或多个处理器;

存储器;以及

一个或多个装置,所述一个或多个装置包括用于执行根据权利要求1至7所述的方法中的任一方法的指令。

9.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1至7所述的方法中的任一方法。

10.一种服务器集群部署装置,所述装置驻留在服务器中,所述服务器与一个或多个客户端通信连接,所述装置包括通信连接的前端模块和后端模块,所述前端模块适于获取服务器的配置信息,根据配置信息生成主节点信息;

所述后端模块适于对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口;

根据客户端的网络端口设置客户端为从节点,并生成从节点信息;

根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群;

其中,所述前端模块包括高级节点配置单元,所述高级节点配置单元适于向用户提供默认安装和高级安装的安装选项;

所述后端模块还包括集群创建单元和虚拟机安装单元,所述集群创建单元适于根据主节点信息和从节点信息分别在服务器和客户端设置所安装的集群管理软件开机自动启动,所述虚拟机安装单元适于当用户选择高级安装时,在客户端安装和配置虚拟机,对客户端进行从节点设置;

所述在客户端安装和配置虚拟机包括步骤:若所述客户端中不存在虚拟机,则在所述客户端中新建虚拟机;

构建虚拟域资源和虚拟机资源代理文件;

根据所述虚拟域资源和虚拟机资源代理文件设置所述虚拟机的节点类型,所述虚拟机的节点类型包括guest节点和remote节点。

说明书 :

一种服务器集群部署方法、装置、计算设备及存储介质

技术领域

[0001] 本发明涉及云计算领域,特别涉及一种服务器集群部署方法、装置、计算设备及存储介质。

背景技术

[0002] 随着计算机技术的发展,人们对计算机工作的要求也越来越高,很多环境下要求计算机保持长时间,无故障的不间断运行。除了提高单台计算机的可靠性以外,人们采用一
组计算机作为一个整体向用户提供一组网络资源,从而提高整体服务的稳定性,减少服务
中断的时间,服务器集群技术应用而生。
[0003] 服务器集群是指如单系统一样地运行并支持计算机持续正常运行的一个主机群,它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业
务的影响降低到最小程度。服务器集群中每台计算机为计算机集群中的一个节点。随着计
算机集群的发展,其用途也越来越多,对单个节点的配置和操作也变得越来越复杂,造成配
置和使用服务器集群的巨大障碍。
[0004] 为此,需要一种新的服务器集群部署方法和装置。

发明内容

[0005] 为此,本发明提供一种服务器集群部署方法,以力图解决或者至少缓解上面存在的问题。
[0006] 根据本发明的一个方面,提供一种服务器集群部署方法,适于在服务器中执行,服务器与一个或多个客户端通信连接,方法包括步骤:获取服务器的配置信息,根据配置信息
生成主节点信息;对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口;
根据客户端的网络端口设置客户端为从节点,并生成从节点信息;根据主节点信息和从节
点信息构建以服务器为主节点,客户端为从节点的服务器集群。
[0007] 可选地,在根据本发明的方法中,服务器还存储有多种语言资源包,每种语言资源包对应一种语言,还包括步骤:向用户提供多种语言选项;根据用户选择的语言选项,加载
相应语言对应的语言资源包进行服务器集群部署。
[0008] 可选地,在根据本发明的方法中,获取服务器的配置信息,根据配置信息生成主节点信息包括步骤:获取服务器的IP地址,主机名和用户密码;根据IP地址,主机名和用户密
码生成主节点信息。
[0009] 可选地,在根据本发明的方法中,还包括步骤:根据与客户端的通信连接,对与服务器连接的每一个客户端进行连通性检查,若检查通过,则对客户端进行网络设置。
[0010] 可选地,在根据本发明的方法中,对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口包括步骤:从客户端获取公钥文件;根据公钥文件对客户端的防火
墙进行设置,构建客户端的网络端口。
[0011] 可选地,在根据本发明的方法中,根据客户端的网络端口设置客户端为从节点,并生成从节点信息包括步骤:根据客户端的主机名进行从节点认证;认证通过后获取客户端
的IP地址和主机名;根据IP地址和主机名生成从节点信息。
[0012] 可选地,在根据本发明的方法中,服务器和与服务器连接的客户端预安装有集群管理软件,根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务
器集群包括步骤:将服务器的主节点信息和客户端的从节点信息在服务器中进行存储;根
据所存储的主节点信息和从节点信息分别在服务器和客户端设置所安装集群管理软件开
机自动启动,以创建并启动服务器集群。
[0013] 可选地,在根据本发明的方法中,还包括步骤:向用户提供默认安装和高级安装的安装选项;当用户选择高级安装时,在客户端的安装和配置虚拟机,对客户端进行从节点设
置。
[0014] 可选地,在根据本发明的方法中,还包括步骤:在完成构建服务器集群后显示服务器集群信息。
[0015] 根据本发明的另一方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理
器执行,一个或多个程序包括用于执行根据本发明的一种设备故障检测分类器训练方法的
任一方法的指令。
[0016] 根据本发明的还有一个方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本发
明的一种服务器集群部署方法中的任一方法。
[0017] 根据本发明的再一个方面,提供一种服务器集群部署装置,装置驻留在服务器中,服务器与一个或多个客户端通信连接,装置包括通信连接的前端模块和后端模块,前端模
块适于获取服务器的配置信息,根据配置信息生成主节点信息;后端模块适于对与服务器
连接的每一个客户端进行网络设置,构建客户端的网络端口;根据客户端的网络端口设置
客户端为从节点,并生成从节点信息;根据主节点信息和从节点信息构建以服务器为主节
点,客户端为从节点的服务器集群。
[0018] 可选地,在根据本发明的装置中,存储有多种语言资源包,每种语言资源包对应一种语言前端模块,前端模块包括语言选择单元,语言选择单元适于向用户提供多种语言选
项;根据用户选择的语言选项,加载相应语言对应的语言资源包进行服务器集群部署。
[0019] 可选地,在根据本发明的装置中,前端模块包括集群节点配置单元,集群节点配置单元适于获取服务器的IP地址,主机名和用户密码;根据IP地址,主机名和用户密码生成主
节点信息。
[0020] 可选地,在根据本发明的装置中,后端模块还包括连通性检查单元,连通性检查单元适于根据与客户端的通信连接,对与服务器连接的每一个客户端进行连通性检查,若检
查通过,则对客户端进行网络设置。
[0021] 可选地,在根据本发明的装置中,后端模块还包括免密登陆设置单元,免密登陆设置单元适于从客户端获取公钥文件;根据公钥文件对客户端的防火墙进行设置,构建客户
端的网络端口。
[0022] 可选地,在根据本发明的装置中,后端模块还包括节点认证单元,节点认证单元适于根据客户端的主机名进行从节点认证;认证通过后获取客户端的IP地址和主机名;根据
IP地址和主机名生成从节点信息。
[0023] 可选地,在根据本发明的装置中,后端模块还包括资源包安装单元和集群创建单元,资源包安装单元适于预先在服务器和与服务器连接的客户端安装集群管理软件;集群
创建单元适于将服务器的主节点信息和客户端的从节点信息在服务器中进行存储;根据所
存储的主节点信息和从节点信息分别在服务器和客户端设置所安装集群管理软件开机自
动启动,以启动服务器集群。
[0024] 可选地,在根据本发明的装置中,前端模块还包括高级节点配置单元,高级节点配置单元适于向用户提供默认安装和高级安装的安装选项;当用户选择高级安装时,在客户
端的安装和配置虚拟机,对客户端进行从节点设置。
[0025] 可选地,在根据本发明的装置中,前端模块还包括高级节点配置单元,高级节点配置单元适于向用户提供默认安装和高级安装的安装选项;当用户选择高级安装时,在客户
端的安装和配置虚拟机,并进行客户端的从节点设置,以便对客户端进行服务管理。
[0026] 本发明中的服务器集群部署方法适于在服务器中执行,服务器与一台或多个客户端通信连接。首先获取服务器的配置信息,根据配置信息生成主节点信息;接着对与服务器
连接的每一个客户端进行网络设置,构建客户端的网络端口,从而通过网络接口对客户端
进行配置,方便构建服务器集群。接着根据客户端的网络端口设置客户端为从节点,并生成
从节点信息,根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服
务器集群。根据本发明的方法,可以快速构建服务器集群,实现快速部署,降低搭建集群环
境的复杂度,提高集群服务上线速度。

附图说明

[0027] 为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面
旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述
以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的
部件或元素。
[0028] 图1示出了根据本发明一个示范性实施例的服务器与客户端通信连接的示意图;
[0029] 图2示出了根据本发明一个示范性实施例的计算设备200的结构框图;
[0030] 图3示出了根据本发明一个示范性实施例的服务器集群部署方法300的流程示意图;
[0031] 图4a示出了根据本发明一个示范性实施例的页面跳转流程示意图;
[0032] 图4b示出了根据本发明一个示范性实施例的页面跳转架构示意图;
[0033] 图5示出了根据本发明一个示范性实施例的构建客户端的网络端口的流程示意图;
[0034] 图6示出了根据本发明一个示范性的创建服务器集群的流程示意图;
[0035] 图7示出根据本发明一个示范性实施例的设置从节点的流程示意图;
[0036] 图8示出了根据本发明一个示范性实施例的服务器集群部署装置的架构示意图;以及
[0037] 图9示出了根据本发明一个示范性实施例的服务器集群部署装置的技术架构示意图。

具体实施方式

[0038] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例
所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
完整的传达给本领域的技术人员。相同的附图标记通常指代相同的部件或元素。
[0039] 图1示出了根据本发明一个示范性实施例的服务器与客户端通信连接的示意图。如图1所示,服务器140连接有客户端110 130。图1所示的服务器140与客户端110 130的链
~ ~
接方式仅是示例性的,本发明对服务器140与客户端110 130的连接方式,以及服务器140所
~
连接的客户端数量不做限制。服务器不仅对服务器自身进行主节点配置,也通过与客户端
的统信连接,对客户端进行配置。
[0040] 服务端140以及所连接的客户端110 130具体可实现为一种计算设备。图2示出了~
根据本发明一个示范性实施例的计算设备200的结构框图。如图2所示,在基本的配置202
中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可
以用于在处理器204和系统存储器206之间的通信。
[0041] 取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如
一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心
214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、
数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器
204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
[0042] 取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储
器206可以包括操作系统220、一个或者多个程序222以及程序数据228。在一些实施方式中,
程序222可以布置为在操作系统上由一个或者多个处理器204利用程序数据228执行根据本
发明的方法300的指令223。
[0043] 计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置
202的通信。操作系统220、程序222以及数据224的至少一部分可以存储在可移除储存器236
和/或不可移除储存器238上,并且在计算设备200上电或者要执行程序222时,经由储存接
口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
[0044] 计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例
的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由
一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外
围接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于
经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸
输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设
备246可以包括网络控制器260,其可以被布置为以便经由一个或者多个通信端264与一个
或者多个其他计算设备262通过网络通信链路的通信。
[0045] 网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可
以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多
个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以
包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外
(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存
储介质和通信介质二者。
[0046] 在根据本发明的计算设备200中,程序222包括服务器集群部署方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的计算设备200中运行的服务器集群
部署方法300中的部分步骤,以便计算设备200中的各部分通过执行本发明的服务器集群部
署训练方法300来实现部署服务器集群。。
[0047] 计算设备200可以实现为服务器,例如文件服务器240、数据库250、服务器、应用程序服务器等,这些电子设备可以是诸如个人数字助理(PDA)、无线网络浏览设备、应用专用
设备、或者可以包括上面任何功能的混合设备。可以实现为包括桌面计算机和笔记本计算
机配置的个人计算机,也在一些实施例中,计算设备200被配置为执行服务器集群部署方法
300。
[0048] 图3示出了根据本发明的一个示范性实施例的服务器集群部署方法300的流程示意图。方法300适于在服务器140中执行,可具体实现为在计算设备200中执行。如图3所示,
服务器集群部署方法300始于步骤S310,获取服务器的配置信息,根据配置信息生成主节点
信息。下面以客户端110和服务器140为例,对方法300进行说明。本发明对服务器集群的类
型不做限制,根据本发明的一个实施例,服务器集群可实现在基于pacemaker的服务器集
群。
[0049] Pacemaker是Linux环境中使用最为广泛的开源集群资源管理器, Pacemaker利用集群基础架构(Corosync或者Heartbeat)提供的消息和集群成员管理功能,实现节点和资
源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用性。从逻辑功能而言,
Pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管
理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。Pacemaker在实际应用
中可以管理任何规模的集群,由于其具备强大的资源依赖模型,这使得集群管理员能够精
确描述和表达集群资源之间的关系。同时,对于任何形式的软件资源,通过为其自定义资源
启动与管理脚本,几乎都能作为资源对象而被 Pacemaker管理。
[0050] 根据本发明的一个实施例,服务器还存储有多种语言资源包,每种语言资源包对应一种语言,用以向使用者提供不同的语言,使用多种语言资源包便于使用不同语言的用
户应用本发明方法300。方法300还包括步骤:向用户提供多种语言选项,根据用户选择的语
言选项,加载相应语言对应的语言资源包进行服务器集群部署。
[0051] 根据本发明的一个实施例,根据选择语言选项加载对应的语言资源包可通过执行如下代码实现:
[0052] function setLanguage(){
[0053]                       var lang = document.getElementById("set_lange");
[0054]                       if (lang.value == "en_ZH") {
[0055]                      var language = 'en_ZH'
[0056]                       } else {
[0057]                          var language = 'en_US'
[0058]                       } else {
[0059]                          ......
[0060]                        }
[0061]            loadProperties(language)
[0062]                         }
[0063]     function loadProperties(type) {
[0064]         jQuery.i18n.properties({
[0065]             name: 'strings',
[0066]             mode: 'map',
[0067]             language: type,
[0068]             encoding: 'UTF‑8',
[0069]             callback: function () {
[0070]                 $("[data‑locale]").each(function(){
[0071]                   $(this).html($.i18n.prop($(this).data("locale")));
[0072]                 });
[0073]             }
[0074]         });
[0075]     }
[0076] 根据本发明的一个实施例,在进行语言选择以及加载对应的语言资源包后,进行用户协议许可。用户协议许可与语言选择可实现在不同的窗口界面,窗口界面中包括相关
的选项,渲染并展示给用户。执行本发明的方法300时,绘制多个窗口界面,将每一次项配置
信息的设置安排在单独的窗口界面,进行下一项目的配置信息的设置时进行窗口界面的跳
转。
[0077] 不同窗口界面之间设置有跳转规则,规定了跳转顺序,即从当前窗口页面可以跳转到哪个目标窗口界面。每个窗口界面还可设置窗口界面的跳转按钮等,便于用户触发窗
口界面的跳转。本发明对窗口界面的跳转按钮,以及用户触发窗口界面的跳转方式不做限
制。跳转按钮可实现为“下一步”的样式等。
[0078] 本发明在配置服务器集群时设置显示可视化的窗口界面,方便用户进行操作和检测配置过程,并且窗口界面的上述设置方式使服务器集群的配置信息的设置更加条理化和
模块化,每个窗口界面的信息显示更加简洁,方便配置服务器集群。
[0079] 根据本发明的一个实施例,为了配置服务器集群,设置有窗口界面1和窗口界面2,可分别进行语言选择和用户协议许可。图4a示出了根据本发明一个示范性实施例的页面跳
转流程示意图。窗口界面1和窗口界面2可通过html或js编写得到,并且预先设置和存储有
窗口界面1和窗口界面2的跳转规则,窗口界面1的下一个窗口界面为窗口界面2。窗口界面1
中设置有“下一步”按钮,可由用户触发以跳转到窗口界面2。窗口界面2中设置有“上一步”
按钮,可以由用户触发以回退到窗口界面1。
[0080] 图4a示出了根据本发明一个示范性实施例的页面跳转流程示意图。在用户通过窗口界面1的“下一步”按钮窗口界面1要跳转到页面2时,窗口界面1将窗口界面1的配置信息
进行保存。所保存的配置信息用来配置服务器集群。成功处理相关数据,设置完毕该窗口界
面的配置信息后,窗口界面1发送跳转信号,显示下一页面:窗口界面2。若不能正常处理相
关数据,不能正常设置该配置信息,则窗口界面1弹出错误提示窗。
[0081] 用户协议许可作为一个单独的窗口界面,由语言选择界面跳转得到。进行用户协议许可时,提示使用相关软件执行本发明的方法300的使用者需要遵守相关的使用协议,只
有同意并遵守使用协议才能够继续进执行本发明的方法300。本发明对使用协议的数量及
其具体内容不做限制。
[0082] 接着获取服务器的配置信息,根据配置信息生成主节点信息时,获取服务器的IP地址,主机名和用户密码,根据IP地址,主机名和用户密码生成主节点信息。将服务器配置
为主节点时,需要配置主节点的IP地址,主机名和用户密码。获取配置信息时,可以从服务
器的系统配置文件中获取,也可以由用户输入的获得。
[0083] 在生成主节点信息时,还向用户提供本机是否作为集群节点的选项。当用户选择本机作为集群节点时,正常继续对本机进行服务器集群的配置。当用户需要将本机从服务
器集群中注销,使其脱离服务器集群时,选择本机不作为集群节点的选项,即可实现从服务
器集群中注册本机。
[0084] 获取服务器的配置信息后,根据与客户端的通信连接,对与服务器连接的每一个客户端进行连通性检查,若检查通过,则对客户端进行网络设置。为了正常对客户端进行网
络设置,预先对与每个客户端的连接进行测试,检查与客户端通信连接是否正常。在进行连
通性检查时,对与服务器连接的每个客户端使用ping命令进行连通性检查,检查与客户端
是否可以连接。
[0085] 根据本发明的一个实施例,进行连通性检查可通过shell执行如下代码实现:
[0086] ping hostname
[0087] 通过对ping结果判断集群节点是否可以连通。
[0088] 随后,执行步骤S320,对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口。图5示出了根据本发明一个示范性实施例的构建客户端的网络端口的流程示
意图。如图5所示,在进行连通性检查成功后进行构建客户端的网络端口。构建网络端口时,
先进行免密登陆设置,对与服务器所连接的所有客户端进行免密配置,对后续步骤提供操
作准备。进行免密登陆设置时从客户端获取公钥文件。公钥文件由客户端根据与服务器的
统信连接生成。随后,服务器在获取到公钥文件后,根据公钥文件对客户端的防火墙进行设
置,构建客户端的网络端口。根据本发明的一个实施例,当客户端使用Linux操作系统时还
进行客户端的SElinux检查,关闭客户端的SElinux工具。SELinux为安全增强型Linux
(Security‑Enhanced Linux)简称,是一个Linux内核模块,也是Linux的一个安全子系统。
关闭SElinux工具以便根据客户端的网络端口配置客户端。在执行每个步骤时,若执行成功
直接则执行下一步,若执行失败,则显示错误信息提示。
[0089] 根据本发明的一个实施例,进行免密登陆设置可通过shell执行如下代码实现:
[0090] Ansible_yml=ssh.yml
[0091] /usr/bin/ansible‑playbook ‑i /etc/ansible/hosts $Ansible_yml
[0092] 其中,ssh.yml文件为公钥文件,具体可实现为ansible的话本文件,ansible是基于Python开发的自动化运维工具。
[0093]    ‑ name: close   ssh  check  ##关闭公钥认证
[0094]    shell:  sed   ‑i   "s/^.*StrictHostKeyChecking.*$/ StrictHostKeyChecking  no/g"  /etc/ssh/ssh_config
[0095]    ‑ name: delete  rsa.pub   ##避免多次运行时冲突,删除之前的公钥
[0096]      file: path=/root/.ssh/  state=absent
[0097]    ‑ name: keygen     ##生成新的公钥
[0098]      shell: ssh‑keygen  ‑t rsa ‑b 2048 ‑N '' ‑f /root/.ssh/id_rsa
[0099]    ‑ name: delete /tmp/ssh/    ##删除临时公钥文件
[0100]      file: path=/tmp/ssh/ state=absent
[0101]    ‑ name: copy  id_rsa.pub  for  The  remote  for  localhost  ##远程主机中的公钥获取到本地
[0102]      fetch: src=/root/.ssh/id_rsa.pub   dest=/tmp/ssh/
[0103]    ‑ name: authorized_keys.log    ##/tmp/ssh/下本身是认证信息,复制到.ssh下面的密钥文件,其中mode是必须要加的权限,否则密钥文件将不起作用
[0104]      shell: find /tmp/ssh/* ‑type f ‑exec sh ‑c 'cat {}>>/tmp/ssh/authorized_keys.log' \;
[0105] 对防火墙进行设置时,可通过shell执行如下代码实现:
[0106] systemctl restart firewalld && firewall‑cmd ‑‑add‑port 3121/tcp ‑‑add‑port 2224/tcp ‑‑permanent && firewall‑cmd ‑‑reload
[0107] selinux关闭设置:
[0108] setenforce 0 && sed ‑ir "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
[0109] 随后,执行步骤S330和步骤S340,以创建服务器集群。图6示出了根据本发明一个示范性的创建服务器集群的流程示意图。如图6所示,在进行创建服务器集群时,首先设置
服务器集群的集群名称,接着进行集群管理软件的安装,在所有的节点上安装预先设定RPM
包列表中的软件。集群管理软件为服务器集群构建和工作所需要的必要的软件。RPM为红帽
软件包管理器,开发人员预先将需要安装的软件名称写入RPM包列表中。随后启动集群服
务,通过命令systemctl start pcsd 和systemctl enable pcsd命令启动所有节点上的
pcsd服务并且使其开机启动。pcsd服务为客户端的个人通讯服务。接着进行客户端的
HAcluster账户密码修改,通过命令id hacluster && echo PASSWD | passwd ‑‑stdin 
HAcluster修改HAcluster账户密码。HAcluster账户密码为客户端作为从节点的高可用服
务器集群的账户密码。
[0110] 根据本发明的一个实施例,进行集群管理软件的安装可通过执行如下代码实现:
[0111] yum ‑y install pacemaker‑remote resource‑agents pcs
[0112] 进行启动集群服务可通过执行如下代码实现:
[0113] systemctl restart pcsd && systemctl enable pcsd
[0114] 进行客户端的HAcluster账户密码修改可通过执行如下代码实现:
[0115] id hacluster && echo PASSWD passwd ‑‑stdin hacluster
[0116] 其中,PASSWD|为HAcluster账户密码;
[0117] 随后进行服务器集群从节点的设置,执行步骤S330,根据客户端的网络端口设置客户端为从节点,并生成从节点信息。生成从节点信息时,根据客户端的主机名进行从节点
认证,认证通过后获取客户端的IP地址和主机名,根据IP地址和主机名生成从节点信息。进
行从节点的认证时,通过命令pcs host auth nodename对集群节点进行认证。其中pcs 
host auth nodename为从节点的主机名。
[0118] 根据本发明的一个实施例,进行服务器集群从节点的设置可通过执行如下代码实现:
[0119] pcs host auth HOSTNAME
[0120] 其中,HOSTNAME为从节点的主机名。
[0121] 随后,执行步骤S340,根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群。具体的构建服务器集群时,将服务器的主节点信息和客户端的
从节点信息在服务器中进行存储,根据所存储的主节点信息和从节点信息分别在服务器和
客户端设置所安装集群管理软件开机自动启动,以创建并启动服务器集群。创建服务器集
群时,通过命令pcs cluster setup nodename对集群进行创建。其中nodename为客户端作
为服务器集群从节点的名称。启动服务器集群时,通过命令pcs  cluster  start 
clustername启动集群服务。随后通过命令pcs cluster enable clustername使得集群管
理软件开机自动启动。其中clustername为服务器集群名称。
[0122] 根据本发明的一个实施例,创建服务器集群时可通过执行如下代码实现:
[0123] pcs cluster setup CLUSTERNAME HOSTNAME ‑‑force
[0124] 其中CLUSTERNAME为服务器集群的名称,HOSTNAME为客户端作为服务器集群从节点的名称。
[0125] 启动集群服务并设置集群管理软件开机自动启动可通过执行如下代码实现:
[0126] pcs cluster start ‑‑all && pcs cluster enable ‑‑all
[0127] 根据本发明的一个实施例,启动集群服务并设置集群管理软件开机自动启动后,还向用户提供默认安装和高级安装的安装选项。当用户选择默认安装选项时,服务器集群
创建成功后即完成整个创建流程。当用户选择高级安装时,在客户端的安装和配置虚拟机,
对客户端进行从节点设置。对客户端进行从节点管理时,生成节点配置列表,包括节点IP地
址、hostname名称、guest/remote选项。注销节点时,从节点配置列表中删除相关的节点信
息。生成节点时,配置节点信息并写入节点配置列表。对从节点进行设置时,可分情况进行
配置,包括从节点不存在虚拟机,已存在虚拟机和对从节点进行实体机设置。
[0128] 图7示出根据本发明一个示范性实施例的设置从节点的流程示意图。如图7所示,若从节点中不存在虚拟机,则需要新建虚拟机。新建虚拟机需要设置如下项目:
[0129] (1)宿主机 IP:搭建虚拟机的集群节点 IP
[0130] (2)宿主机 hostname:搭建虚拟机的集群节点在局域网内的名称;
[0131] (3)宿主机 root password:搭建虚拟机的集群节点 root 用户密码;
[0132] (4)虚拟机名称:虚拟机在虚拟机管理界面的名称;
[0133] (5)镜像存放路径:用来存放虚拟机磁盘文件的绝对路径;
[0134] (6)内存大小:分配给虚拟机的内存,最小为 1500M;
[0135] (7)CPU 个数:分配给虚拟机的 CPU 个数;
[0136] (8)网络模式:虚拟机与宿主机的通信方式,默认为桥接;
[0137] (9)网卡选择:虚拟机与宿主机的通信渠道;
[0138] (10)虚拟机 hostname:虚拟机在局域网内的名称;
[0139] (11)IP地址:虚拟机 IP 地址;
[0140] (12)子网掩码:虚拟机子网掩码,需填写为 32 位地址的形式,例如:
[0141] 255.255.225.0;
[0142] (13)网关:虚拟机的网关;
[0143] (14)DNS:虚拟机的域名解析;
[0144] (15)节点选择:选择节点类型(guest/remote);
[0145] (16)虚拟域资源名:虚拟机资源在集群中的名称;
[0146] 根据本发明的一个实施例,在从节点中新建虚拟机时,通过执行如下代码向用户呈现新建虚拟机的配置界面:
[0147] function saveAdvancedNode(){
[0148]         var host_ip = document.getElementById('host_ip'); //虚拟机宿主机IP地址配置。
[0149]         var host_hostname = document.getElementById('host_hostname'); //虚拟机宿主机hostname配置。
[0150]         var host_root_or_password = document.getElementById('host_root_or_password');//虚拟机宿主机root密码配置。
[0151]         var choose_node = document.getElementById('choose_node');//新建虚拟机是guest或者remote节点设置。
[0152]         var vd_resource_name = document.getElementById('vd_resource_name');//虚拟机虚拟域资源名称设置。
[0153]         var virtual_machine_name = document.getElementById('virtual_machine_name');//虚拟机在KVM列表里面的名字设置。
[0154]         var mirror_storage_path = document.getElementById('mirror_storage_path');//创建虚拟机所需镜像文件路径,文件为qcow2格式。
[0155]         var host_name = document.getElementById('host_name');//虚拟机hostname名称设置。
[0156]         var ip_address = document.getElementById('ip_address');//虚拟机IP地址设置。
[0157]         var subnet_mask = document.getElementById('subnet_mask');//虚拟机子网掩码设置。
[0158]         var gateway = document.getElementById('gateway');//虚拟机网关设置。
[0159]         var dns = document.getElementById('dns');//虚拟机dns设置。
[0160]         var memory_size = document.getElementById('memory_size');//虚拟机内存尺寸设置。
[0161]         var cpu_num = document.getElementById('cpu_num');//虚拟机cpu个数设置。
[0162]         var network_mode = document.getElementById('network_mode');//虚拟机网络模式设置(桥接)
[0163]        var nic_selection = document.getElementById('nic_selection');//虚拟机使用物理机网卡设置。
[0164]          $.ajax({
[0165]             url:"/advanced_install",
[0166]             type:"post",
[0167]             dataType:"JSON",
[0168]             data:{
[0169]                 host_ip: host_ip.value,
[0170]                 host_hostname: host_hostname.value,
[0171]                 host_root_or_password: host_root_or_password.value,
[0172]                 choose_node: choose_node.value,
[0173]                 vd_resource_name: vd_resource_name.value,
[0174]                 virtual_machine_name: virtual_machine_name.value,
[0175]                 mirror_storage_path: mirror_storage_path.value,
[0176]                 host_name: host_name.value,
[0177]                 ip_address: ip_address.value,
[0178]                 subnet_mask: subnet_mask.value,
[0179]                 gateway: gateway.value,
[0180]                 dns: dns.value,
[0181]                 memory_size: memory_size.value,
[0182]                 cpu_num: cpu_num.value,
[0183]                 network_mode: network_mode.value,
[0184]                 nic_selection: nic_selection.value,
[0185]             },
[0186]              ...... window.location.href="HA_advanced_installation valus="+ JSON.stringify(data.url);
[0187]                 }
[0188]             }
[0189]         });
[0190]     }
[0191] 执行如下代码通过advancedclusternode.txt文件,使用配置信息调用shell进行虚拟机创建:
[0192] virt‑install ‑‑connect qemu:///system  ‑‑virt‑type kvm ‑‑name KVMNAME ‑‑memory  MEMSIZE ‑‑vcpus=CPUNUM ‑‑disk path=FILEPATH/uos‑KVMNAME.qcow2,bus=
virtio,format=qcow2,sparse  ‑‑force ‑‑import &
[0193] 其中,KVMNAME为虚拟机在切换机(KVM)中的名称;
[0194] MEMSIZE为虚拟机内存尺寸;
[0195] CPUNUM为虚拟机cpu个数;
[0196] FILEPATH为虚拟机镜像文件存放路径;
[0197] uos‑KVMNAME.qcow2为虚拟机镜像文件名称,qcow2文件为KVM虚拟机磁盘拷贝文件,可用通过将KVM虚拟机安装系统分配的磁盘整体拷贝出来制作。
[0198] 虚拟机的镜像文件本地挂载可通过执行如下代码实现:
[0199] guestmount  ‑d KVMNAME ‑i MOUNTPATH
[0200] 其中,KVMNAME为虚拟机在KVM中的名称;
[0201] MOUNTPATH为镜像文件挂载路径。
[0202] 修改虚拟机IP地址可通过执行如下代码实现:
[0203] sed ‑i  's/BOOTPROTO=.*/BOOTPROTO=none/' $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0204]     sed ‑i  's/ONBOOT=.*/ONBOOT=yes/' $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0205]     sed ‑i  '/UUID=/d' $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0206]     sed ‑i  '/DEVICE=/d' $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0207]     sed ‑i  's/DEFROUTE=.*/DEFROUTE=no/' $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0208]     echo IPADDR=IPADDRVALUE >> $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0209]     echo NETMASK=PREFIXVALUE >> $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0210]     echo GATEWAY=GATEWAYVALUE >> $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0211]     echo DNS1=DNS1VALUE >> $MOUNTPATH/etc/sysconfig/network‑scripts/ifcfg‑enp1s0
[0212] 其中,IPADDRVALUE为IP地址值;
[0213] PREFIXVALUE为prefix值;
[0214] GATEWAYVALUE为网关值;
[0215] DNS1VALUE为DNS值。
[0216] 设置KVM虚拟机hostname可通过执行如下代码实现:
[0217] echo IPADDRVALUE HOSTNAMEVALUE >> MOUNTPATH/etc/hosts
[0218] 其中,IPADDRVALUE为IP地址值;
[0219] HOSTNAMEVALUE为设置的hostname值;
[0220] MOUNTPATH为镜像文件挂载路径。
[0221] 虚拟机镜像卸载可通过执行如下代码实现:
[0222] guestunmount MOUNTPATH
[0223] 其中,MOUNTPATH为挂载路径;
[0224] Guest为从节点注册过程:
[0225] 制作虚拟机资源代理文件可通过执行如下代码实现:
[0226] virsh dumpxml KVMNAME > /etc/pacemaker/KVMNAME.xml
[0227] 通过KVM虚拟机名称KVMNAME生成Pacemaker资源代理文件KVMNAME.xml,XML文件使用此名称主要目的是为了容易区分,也可以使用其他任意名称。
[0228] 制作虚拟域资源可通过执行如下代码实现:
[0229] pcs resource create VMDOMAINNAME VirtualDomain config=/etc/pacemaker/KVMNAME.xml migration_transport=ssh meta allow‑migrate=true
[0230] 其中,VMDOMAINNAME为虚拟域资源名称;
[0231] KVMNAME为资源文件名称。
[0232] 虚拟机资源代理文件和虚拟域资源用于设置guest节点和remote节点。
[0233] 将虚拟域资源转换成guest节点可通过执行如下代码实现:
[0234] pcs cluster node add‑guest HOSTNAMEVALUE VMDOMAINNAME
[0235] 其中,HOSTNAMEVALUE为虚拟机hostname值;
[0236] VMDOMAINNAME为虚拟域资源名称。
[0237] 高级安装模式节点rpm包安装可通过执行如下代码实现:
[0238] yum makecache ‑y
[0239] yum  ‑y install pacemaker‑remote resource‑agents pcs
[0240] 高级安装模式节点服务启动功能可通过执行如下代码实现:
[0241] systemctl restart pcsd && systemctl enable pcsd
[0242] 高级安装模式认证账户密码修改可通过执行如下代码实现:
[0243] id hacluster && echo PASSWD | passwd ‑‑stdin hacluster
[0244] 其中,PASSWD为hacluster认证账户的密码uos。
[0245] 高级安装模式guest节点认证可通过执行如下代码实现:
[0246] pcs host auth HOSTNAME ‑u hacluster ‑p PASSWD
[0247] 其中,HOSTNAME为高级模式配置的guest节点hostname名称。
[0248] 高级安装模式remote节点认证方法可通过执行如下代码实现:
[0249] pcs host auth HOSTNAME ‑u hacluster ‑p PASSWD
[0250] 其中,HOSTNAME为高级模式配置的guest节点hostname名称。
[0251] 高级安装模式remote节点创建功能可通过执行如下代码实现:
[0252] pcs cluster node add‑remote  HOSTNAME
[0253] 其中,HOSTNAME为高级安装模式remote节点配置的hostname值。
[0254] 当从节点中已经有虚拟机时,进行如下项目的配置:
[0255] (1)宿主机 IP:拥有虚拟机的实体机 IP 地址;
[0256] (2)宿主机 hostname:实体机在局域网内的名称;
[0257] (3)宿主机 root password :实体机 root 用户的登录密码;
[0258] (4)虚拟机名称:虚拟机在虚拟机管理界面的名称;
[0259] (5)虚拟机 hostname:搭建的虚拟机在局域网内的名称;
[0260] (6)IP 地址:虚拟机 IP 地址;
[0261] (7)root password:虚拟机 root 用户密码;
[0262] (8)节点选择:选择节点类型(guest/remote);
[0263] (9)虚拟域资源名:虚拟机在集群中的资源名;
[0264] 根据本发明的一个实施例,当从节点中已存在虚拟机时,向用户显示相应配置界面,界面相关代码如下:
[0265] function saveAdvancedNode(){
[0266]         var host_ip = document.getElementById('host_ip');//虚拟机宿主机IP地址配置。
[0267]        var  host_hostname  = document.getElementById('host_hostname');//虚拟机宿主机hostname配置。
[0268]         var host_root_or_password = document.getElementById('host_root_or_password');//虚拟机宿主机root 密码配置。
[0269]         var virtual_name = document.getElementById('virtual_name');//虚拟机在KVM列表里面的名字配置。
[0270]         var hostname = document.getElementById('hostname');//虚拟机hostname名称配置。
[0271]         var ip_adress = document.getElementById('ip_adress');//虚拟机IP地址配置。
[0272]         var root_passwd = document.getElementById('root_passwd');//虚拟机root密码配置。
[0273]         var choose_node = document.getElementById('choose_node');//虚拟机guest或者remote节点选择。
[0274]         var vd_resource_name = document.getElementById('vd_resource_name');//虚拟机虚拟域资源名称设置。
[0275]          $.ajax({
[0276]             url:"/advanced_install_existing",
[0277]             type:"post",
[0278]             dataType:"JSON",
[0279]             data:{
[0280]                 host_ip: host_ip.value,
[0281]                 host_hostname: host_hostname.value,
[0282]                 host_root_or_password: host_root_or_password.value,
[0283]                 virtual_name: virtual_name.value,
[0284]                 hostname: hostname.value,
[0285]                 ip_adress: ip_adress.value,
[0286]                 root_passwd: root_passwd.value,
[0287]                 choose_node: choose_node.value,
[0288]                 vd_resource_name: vd_resource_name.value,
[0289]             }
[0290]             .....
[0291]         });
[0292] }
[0293] 当对从节点直接进行实体机设置时,实体机仅能进行remote节点设置,进行如下项目的配置:
[0294] (1)IP 地址:添加进集群的实体机的 IP 地址;
[0295] (2)密码:实体机的 root 用户密码;
[0296] (3)主机名称:实体机在局域网中的名称;
[0297] 根据本发明的一个实施例,对从节点直接进行实体机设置时,可通过执行如下代码向用户呈现实体机设置页面:
[0298] function saveAdvancedNode(){
[0299]         var host_ip = document.getElementById('host_ip');//实体机IP地址配置。
[0300]         var password = document.getElementById('password');//实体机root密码配置。
[0301]         var host_name = document.getElementById('host_name');//实体机hostname配置。
[0302]          $.ajax({
[0303]             url:"/advanced_install_pm",
[0304]             type:"post",
[0305]             dataType:"JSON",
[0306]             data:{
[0307]                 host_ip: host_ip.value,
[0308]                 password: password.value,
[0309]                 host_name: host_name.value,
[0310]             }
[0311]             ......
[0312]         });
[0313]     }
[0314] 在配置从节点时,不能配置成功则会显示错误信息。
[0315] 根据本发明的一个实施例,在完成构建服务器集群后显示服务器集群信息。服务器集群信息包括过程日志信息,具体为虚拟机的创建、guest/remote节点的设置以及对应
节点安装的依赖文件。
[0316] 当服务器集群的所有设置都成功完成后跳转到结束界面,可以根据需求选择退出安装程序或者打开Web UI后再退出安装程序。
[0317] 本发明的方法300的各步骤可以通过程序,安装工具等媒介实现,图8示出了根据本发明一个示范性实施例的服务器集群部署装置的架构示意图。图8所示出的服务器集群
部署装置仅为示例性,本发明对实施方法300的服务器集群部署装置的具体架构及其模块
构成不做限制。服务器集群部署装置可驻留在服务器140中。如图8所示,服务器集群部署装
置包括前端模块和后端模块,以及耦接前端模块和后端模块的中间件模块。前端模块获取
服务器的配置信息,根据配置信息生成主节点信息,后端模块具体对服务器及其连接客户
端进行相关设置,中间件模块进行前端模块和后端模块之间的数据传输。
[0318] 根据本发明的一个实施例,服务器还存储有多种语言资源包,每种语言资源包对应一种语言,使用多种语言资源包便于服务器集群部署装置进行国际化,使装置与特定语
言及地区进行脱钩,方便使用不同语言的用户。前端模块包括语言选择单元,语言选择单元
向用户提供多种语言选项,根据用户选择的语言选项,加载相应语言对应的语言资源包进
行服务器集群部署。
[0319] 前端模块还包括协议许可单元,协议许可单元提示使用服务器集群构建装置的使用者需要遵守相关的使用协议,只有同意并遵守使用协议才能够继续使用服务器集群构建
装置。本发明对使用协议的数量及其具体内容不做限制。
[0320] 前端模块还包括第一跳转单元,中间件模块包括第二跳转单元。用户协议许可与语言选择可实现在不同的窗口界面,窗口界面中包括相关的选项,第二跳转单元将窗口界
面渲染并展示给用户。第二跳转单元绘制多个窗口界面,将每一次项配置信息的设置安排
在单独的窗口界面,进行下一项目的配置信息的设置时进行窗口界面的跳转。
[0321] 前端模块的第一跳转单元接收用户对当前页面的操作,操作包括对当前窗口界面中显示的选项进行选择,以及触发的窗口界面的跳转等。每个窗口界面还可设置窗口界面
的跳转按钮等,便于用户触发窗口界面的跳转。本发明对窗口界面的跳转按钮,以及用户触
发窗口界面的跳转方式不做限制。跳转按钮可实现为“下一步”的样式等。
[0322] 不同窗口界面之间设置有跳转规则,规定了跳转顺序,即从当前窗口页面可以跳转到哪个目标窗口界面。中间件的第二跳转单元存储窗口界面之间的跳转规则。前端模块
的第一跳转单元接受到对用户操作后,中间件的第二跳转单元对用户操作进行处理,根据
所存储的跳转规则确定目标窗口界面,随后对要跳转的目标窗口界面进行渲染并显示,实
现窗口界面的跳转。
[0323] 根据本发明的一个实施例,为了配置服务器集群,设置有窗口界面1和窗口界面2,可分别进行语言选择和用户协议许可。图4a示出了根据本发明一个示范性实施例的页面跳
转流程示意图。窗口界面1和窗口界面2可通过html或js编写得到,并且预先设置和存储有
窗口界面1和窗口界面2的跳转规则,窗口界面1的下一个窗口界面为窗口界面2。窗口界面1
中设置有“下一步”按钮,可由用户触发以跳转到窗口界面2。窗口界面2中设置有“上一步”
按钮,可以由用户触发以回退到窗口界面1。
[0324] 图4b示出了根据本发明一个示范性实施例的页面跳转架构示意图。在用户通过窗口界面1的“下一步”按钮窗口界面1要跳转到页面2时,第一跳转单元将窗口界面1的配置信
息传输到第二跳转单元。第二跳转单元对配置信息进行保存。所保存的配置信息用来配置
服务器集群。第二跳转单元包括中间件和界面框架。成功处理数据,设置完毕该窗口界面的
配置信息后,中间件向第一跳转单元所显示的窗口界面1发送处理成功的消息。中间件为负
责向窗口页面传递配置相关消息的对接模块,中间件可实现为python中间件。随后,窗口界
面1向界面框架发送跳转信号,界面框架根据接受到的跳转信号,以及预先存储的跳转规
则,渲染显示窗口界面2,实现窗口界面的跳转。
[0325] 前端模块还包括集群节点配置单元,集群节点配置单元获取服务器的配置信息,根据配置信息生成主节点信息,具体的获取服务器的IP地址,主机名和用户密码,根据IP地
址,主机名和用户密码生成主节点信息。获取配置信息时,可以从服务器的系统配置文件中
获取,也可以由用户输入的获得。
[0326] 中间件模块还包括配置数据处理单元,负责处理用户在前端模块输入的数据,将其转发到后端模块的各个单元进行处理,并接收候后端模块的数据,转发到前端模块进行
显示和处理。
[0327] 在生成主节点信息时,集群节点配置单元还向用户提供本机是否作为集群节点的选项。当用户选择本机作为集群节点时,正常继续对本机进行服务器集群的配置。当用户需
要将本机从服务器集群中注销,使其脱离服务器集群时,选择本机不作为集群节点的选项,
即可实现从服务器集群中注销本机。
[0328] 后端模块还包括连通性检查单元,连通性检查单元根据与客户端的通信连接,对与服务器连接的每一个客户端进行连通性检查,若检查通过,则对客户端进行网络设置。为
了正常对客户端进行网络设置,连通性检查单元预先对与每个客户端的连接进行测试,检
查与客户端通信连接是否正常。在进行连通性检查时,连通性检查单元对与服务器连接的
每个客户端使用ping命令进行连通性检查,检查与客户端是否可以连接。
[0329] 后端模块还包括免密登陆设置模块。免密登陆设置单元对与服务器连接的每一个客户端进行网络设置,构建客户端的网络端口。免密登陆设置单元进行免密登陆设置,防火
墙设置和selinux设置功能。具体的免密登陆设置单元从客户端获取公钥文件。公钥文件由
客户端根据与服务器的统信连接生成。随后根据公钥文件对客户端的防火墙进行设置,构
建客户端的网络端口。根据本发明的一个实施例,当客户端使用Linux操作系统时免密登陆
设置单元还进行客户端的SElinux检查,关闭客户端的SElinux工具。SELinux为安全增强型
Linux(Security‑Enhanced Linux)简称,是一个Linux内核模块,也是Linux的一个安全子
系统。关闭SElinux工具以便根据客户端的网络端口配置客户端。免密登陆设置模块在执行
每个步骤时,若执行成功直接则执行下一步,若执行失败,告知中间件模块显示错误信息提
示。
[0330] 中间件模块还包括调用shell单元。在免密登陆设置单元进行免密登陆设置时,通过中间件模块的调用shell单元调用shell执行如下代码实现:
[0331] Ansible_yml=ssh.yml
[0332] /usr/bin/ansible‑playbook ‑i /etc/ansible/hosts $Ansible_yml
[0333] 其中,ssh.yml文件为公钥文件,具体可实现为ansible的话本文件,ansible是基于Python开发的自动化运维工具。
[0334]    ‑ name: close   ssh  check  ##关闭公钥认证
[0335]     shell:  sed   ‑i   "s/^.*StrictHostKeyChecking.*$/ StrictHostKeyChecking  no/g"  /etc/ssh/ssh_config
[0336]    ‑ name: delete  rsa.pub   ##避免多次运行时冲突,删除之前的公钥
[0337]      file: path=/root/.ssh/  state=absent
[0338]    ‑ name: keygen     ##生成新的公钥
[0339]      shell: ssh‑keygen  ‑t rsa ‑b 2048 ‑N '' ‑f /root/.ssh/id_rsa
[0340]    ‑ name: delete /tmp/ssh/    ##删除临时公钥文件
[0341]      file: path=/tmp/ssh/ state=absent
[0342]    ‑ name: copy  id_rsa.pub  for  The  remote  for  localhost  ##远程主机中的公钥获取到本地
[0343]      fetch: src=/root/.ssh/id_rsa.pub   dest=/tmp/ssh/
[0344]    ‑ name: authorized_keys.log    ##/tmp/ssh/下本身是认证信息,复制到.ssh下面的密钥文件,其中mode是必须要加的权限,否则密钥文件将不起作用
[0345]      shell: find /tmp/ssh/* ‑type f ‑exec sh ‑c 'cat {}>>/tmp/ssh/authorized_keys.log' \;
[0346] 在免密登陆设置单元进行防火墙设置时,通过中间件模块的调用shell单元调用shell执行如下代码实现:
[0347] systemctl restart firewalld && firewall‑cmd ‑‑add‑port 3121/tcp ‑‑add‑port 2224/tcp ‑‑permanent && firewall‑cmd ‑‑reload
[0348] selinux关闭设置:
[0349] setenforce 0 && sed ‑ir "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
[0350] 前端模块还包括集群名称设置单元,集群名称设置单元设置服务器集群的集群名称,向用户提供键入服务器集群名称的页面,便于设置服务器集群的集群名称。
[0351] 后端模块还包括资源包安装包单元,资源包安装模块在所有的节点上安装预先设定RPM包列表中的软件。集群管理软件为服务器集群构建和工作所需要的必要的软件。RPM
为红帽软件包管理器,开发人员预先将需要安装的软件名称写入RPM包列表中。
[0352] 后端模块还包括服务启动单元,服务启动单元启动集群服务,通过命令systemctl start pcsd 和systemctl enable pcsd命令启动所有节点上的pcsd服务并且使其开机启
动。pcsd服务为客户端的个人通讯服务。
[0353] 后端模块还包括密码修改单元,密码修改单元进行客户端的HAcluster账户密码修改,通过命令id hacluster && echo PASSWD | passwd ‑‑stdin HAcluster修改
HAcluster账户密码。HAcluster账户密码为客户端作为从节点的高可用服务器集群的账户
密码。
[0354] 后端模块还包括节点认证单元。节点认证单元根据客户端的网络端口设置客户端为从节点,并生成从节点信息。节点认证单元生成从节点信息时,根据客户端的主机名进行
从节点认证,认证通过后获取客户端的IP地址和主机名,根据IP地址和主机名生成从节点
信息。节点认证单元进行从节点的认证时,通过命令pcs host auth nodename对集群节点
进行认证。其中pcs host auth nodename为从节点的主机名。
[0355] 后端模块还包括集群创建单元,集群创建单元根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服务器集群。具体的集群创建单元构建服务器集群
时,将服务器的主节点信息和客户端的从节点信息在服务器中进行存储,根据所存储的主
节点信息和从节点信息分别在服务器和客户端设置所安装集群管理软件开机自动启动,以
创建并启动服务器集群。集群创建单元创建服务器集群时,通过命令pcs cluster setup 
nodename对集群进行创建。其中nodename为客户端作为服务器集群从节点的名称。集群创
建单元启动服务器集群时,通过命令pcs cluster start clustername启动集群服务。随后
通过命令pcs cluster enable clustername使得集群管理软件开机自动启动。其中
clustername为服务器集群名称。
[0356] 前端模块还包括高级节点配置单元,高级节点配置单元向用户提供默认安装和高级安装的安装选项。当用户选择默认安装选项时,服务器集群创建成功后即完成整个创建
流程。当用户选择高级安装时,后端模块在客户端的安装和配置虚拟机,对客户端进行从节
点设置。
[0357] 后端模块还包括虚拟机安装单元,虚拟机安装单元在客户端的安装和配置虚拟机,对客户端进行从节点设置。虚拟机安装单元对客户端进行从节点管理时,生成节点配置
列表,包括节点IP地址、hostname名称、guest/remote选项。虚拟机安装单元注销节点时,从
节点配置列表中删除相关的节点信息。虚拟机安装单元生成节点时,配置节点信息并写入
节点配置列表。虚拟机安装单元对从节点进行设置时,可分情况进行配置,包括从节点不存
在虚拟机,已存在虚拟机和对从节点进行实体机设置。
[0358] 虚拟机安装单元使用配置信息调用shell进行虚拟机创建:
[0359] virt‑install ‑‑connect qemu:///system  ‑‑virt‑type kvm ‑‑name KVMNAME ‑‑memory  MEMSIZE ‑‑vcpus=CPUNUM ‑‑disk path=FILEPATH/uos‑KVMNAME.qcow2,bus=
virtio,format=qcow2,sparse  ‑‑force ‑‑import &
[0360] 其中,KVMNAME为虚拟机在切换机(KVM)中的名称;
[0361] MEMSIZE为虚拟机内存尺寸;
[0362] CPUNUM为虚拟机cpu个数;
[0363] FILEPATH为虚拟机镜像文件存放路径;
[0364] uos‑KVMNAME.qcow2为虚拟机镜像文件名称,qcow2文件为KVM虚拟机磁盘拷贝文件,可用通过将KVM虚拟机安装系统分配的磁盘整体拷贝出来制作。
[0365] 后端模块还包括虚拟资源创建单元,虚拟资源创建单元通过执行如下代码制作虚拟机资源代理文件:
[0366] virsh dumpxml KVMNAME > /etc/pacemaker/KVMNAME.xml
[0367] 通过KVM虚拟机名称KVMNAME生成Pacemaker资源代理文件KVMNAME.xml,XML文件使用此名称主要目的是为了容易区分,也可以使用其他任意名称。
[0368] 虚拟资源创建单元通过执行如下代码制作虚拟域资源:
[0369] pcs resource create VMDOMAINNAME VirtualDomain config=/etc/pacemaker/KVMNAME.xml migration_transport=ssh meta allow‑migrate=true
[0370] 其中,VMDOMAINNAME为虚拟域资源名称;
[0371] KVMNAME为资源文件名称。
[0372] 虚拟资源创建单元制作的虚拟机资源代理文件和虚拟域资源用于设置guest节点和remote节点。
[0373] 后端模块还包括guest节点制作单元,guest节点制作单元将虚拟域资源转换成guest节点,并可通过执行如下代码实现:
[0374] pcs cluster node add‑guest HOSTNAMEVALUE VMDOMAINNAME
[0375] 其中,HOSTNAMEVALUE为虚拟机hostname值;
[0376] VMDOMAINNAME为虚拟域资源名称。
[0377] 后端模块还包括remote节点制作单元,remote节点制作单元将虚拟域资源转换成remote节点。
[0378] 后端模块还包括log日志输出单元,log日志输出单元生成服务器集群信息。服务器集群信息包括过程日志信息,具体为虚拟机的创建、guest/remote节点的设置以及对应
节点需要安装的依赖文件。
[0379] 中间件模块还包括log信息获取单元,log信息获取单元从后端模块的log日志输出单元获取服务器集群信息,将服务器集群信息转发到前端模块。
[0380] 前端模块还包括log信息获取单元,log信息获取单元在完成构建服务器集群后显示从中间件模块获取的服务器集群信息。服务器集群信息包括过程日志信息,具体为虚拟
机的创建、guest/remote节点的设置以及对应节点需要安装的依赖文件。
[0381] 图9示出了根据本发明一个示范性实施例的服务器集群部署装置的技术架构示意图。如图9所示,服务器集群部署装置通过python webview作为窗口启动器,使用python 
flask框架支持的html、js、css语言设计的主体部分交互界面,由shell脚本通过配置参数
完成具体的实现过程。
[0382] 本发明中的服务器集群部署方法适于在服务器中执行,服务器与一台或多个客户端通信连接。首先获取服务器的配置信息,根据配置信息生成主节点信息;接着对与服务器
连接的每一个客户端进行网络设置,构建客户端的网络端口,从而通过网络接口对客户端
进行配置,方便构建服务器集群。接着根据客户端的网络端口设置客户端为从节点,并生成
从节点信息,根据主节点信息和从节点信息构建以服务器为主节点,客户端为从节点的服
务器集群。根据本发明的方法,可以快速构建服务器集群,实现快速部署,降低搭建集群环
境的复杂度,提高集群服务上线速度。
[0383] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结
构和技术,以便不模糊对本说明书的理解。
[0384] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施
例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保
护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如上面的
权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵
循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都
作为本发明的单独实施例。
[0385] 本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备
不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个
子模块。
[0386] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单
元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或
子组间。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何
组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任
何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代
替。
[0387] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的
范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任
意之一都可以以任意的组合方式来使用。
[0388] 此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法
元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在
此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行
的功能。
[0389] 这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软
盘、CD‑ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,
其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发
明的设备。
[0390] 在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至
少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器
中存储的所述程序代码中的指令,执行本发明的设备停机状态的判断方法。
[0391] 以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、
数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调
制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传
递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
[0392] 如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必
须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0393] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,
本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限
定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本
发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。