CN110149366B - 提高集群***可用性的方法、装置和计算机设备 - Google Patents
提高集群***可用性的方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN110149366B CN110149366B CN201910305188.3A CN201910305188A CN110149366B CN 110149366 B CN110149366 B CN 110149366B CN 201910305188 A CN201910305188 A CN 201910305188A CN 110149366 B CN110149366 B CN 110149366B
- Authority
- CN
- China
- Prior art keywords
- host
- service
- preset
- service area
- calling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供了一种提高集群***可用性的方法、装置、计算机设备和可读存储介质,涉及分布式部署技术领域,方法包括:各不同地区的服务区域的主机根据第一预设频率相互判断是否有出现故障主机,并在发现故障主机后,相互之间广播各主机的运行信息,从而筛选得到当前处于可调用状态的备用主机,然后随机由一台正常运行的主机发出指令,使得备用主机继续运行故障主机的***服务,在满足布置于各个不同地区的服务区域的集群***的高可用性的同时,避免大规模故障后***无法运行。
Description
技术领域
本申请涉及分布式部署技术领域,特别涉及一种提高集群***可用性的方法、装置和计算机设备。
背景技术
随着计算机技术和互联网的快速发展,集群***以其低廉的成本、强大的运算能力和健壮的容错机制逐渐成为了计算机行业的焦点。集群应用可以运行在上千台普通的服务器上,伴随业务增长动态扩大集群规模,但也要承受普通计算机较高的故障率,这要求***在发生软硬件故障的时候仍能保证高度的可用性。目前,在***发生故障时,仅能在本地的主机上进行***服务的转移,而没有考虑到其它服务区域的主机,从而使得基于Docker容器的集群***的可用性不高,无法应对大规模的***故障。
发明内容
本申请的主要目的为提供一种提高集群***可用性的方法、装置和计算机设备,旨在解决现有基于Docker容器的集群***的可用性低,无法应对大规模的***故障的弊端。
为实现上述目的,本申请提供了一种提高集群***可用性的方法,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述方法包括:
监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
若出现故障,则标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
使用所述备用主机运行所述故障主机的***服务。
进一步的,所述监控各第二主机当前是否出现故障的步骤,包括:
根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
若接收到所述第二主机发送的预设信号,则判定所述第二主机当前运行正常;
若没有接收到所述第二主机发送的预设信号,则将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
若接收到所述指定主机发送的所述预设信号,则判定所述指定主机运行正常;
若没有接收到所述指定主机发送的所述预设信号,则判定所述指定主机出现故障。
进一步的,所述从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机的步骤,包括:
获取各所述指定服务区域当前的分级信息,所述分级信息为各服务区域根据服务调用占比对应设置的等级信息;
根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
进一步的,所述获取各所述指定服务区域当前的分级信息的步骤之前,包括:
根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息的步骤之后,包括:
获取所述服务区域的当前***进程数量;
将所述当前***进程数量,与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
若所述当前***进程数量大于所述预设***进程数量,则减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
若所述当前***进程数量大于所述预设***进程数量,则增加所述服务区域中的主机的***进程数量至所述指定状态。
进一步的,所述增加所述服务区域中的主机的***进程数量至所述指定状态的步骤,包括:
计算所述当前***进程数量与所述预设***进程数量之间的差值;
下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括***进程的运行程序和运行环境;
在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
进一步的,所述使用所述备用主机运行所述故障主机的***服务的步骤,包括:
获取所述故障主机的服务进程信息,所述服务进程信息包括***服务的服务类型和故障前的服务进度;
根据所述服务进程信息,部署所述备用主机的***服务进程;
启动完成***服务进程部署后的备用主机,运行所述***服务。
本申请还提供了一种提高集群***可用性的装置,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述装置包括:
监控模块,用于监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
筛选模块,用于标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
运行模块,用于使用所述备用主机运行所述故障主机的***服务。
进一步的,所述监控模块包括:
监控单元,用于根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
第一判定单元,用于判定所述第二主机当前运行正常;
判断单元,用于将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
第二判定单元,用于判定所述指定主机运行正常;
第三判定判定单元,用于判定所述指定主机出现故障。
进一步的,所述筛选模块包括:
第一获取单元,用于获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
第一筛选单元,用于根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
第二获取单元,用于获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
第二筛选单元,用于从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
进一步的,所述装置还包括:
第一获取模块,用于根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
第一计算模块,用于根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
第二计算模块,用于根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
第一匹配模块,用于将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
第二匹配模块,用于根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述装置还包括:
第二获取模块,用于获取所述服务区域的当前***进程数量;
判断模块,用于将所述当前***进程数量,与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
减少模块,用于减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
增加模块,用于增加所述服务区域中的主机的***进程数量至所述指定状态。
进一步的,所述增加模块包括:
计算单元,用于计算所述当前***进程数量与所述预设***进程数量之间的差值;
下载单元,用于下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括所述***进程的运行程序和运行环境;
运行单元,用于在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
进一步的,所述运行模块,包括:
获取单元,用于获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
部署单元,用于根据所述服务进程信息,部署所述备用主机的***服务进程;
启动单元,用于启动完成***服务进程部署后的备用主机,运行所述***服务。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请中提供的一种提高集群***可用性的方法、装置和计算机设备,各不同地区的服务区域的主机根据第一预设频率相互判断是否有出现故障主机,并在发现故障主机后,相互之间广播各主机的运行信息,从而筛选得到当前处于可调用状态的备用主机,然后随机由一台正常运行的主机发出指令,使得备用主机继续运行故障主机的***服务,在满足布置于各个不同地区的服务区域的集群***的高可用性的同时,避免大规模故障后***无法运行。
附图说明
图1是本申请一实施例中提高集群***可用性的方法步骤示意图;
图2是本申请一实施例中提高集群***可用性的装置整体结构框图;
图3是本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中提供了一种提高集群***可用性的方法,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述方法包括:
S1:监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
S2:若出现故障,则标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
S3:使用所述备用主机运行所述故障主机的***服务。
本实施例中,开发人员在全球的不同地区部署多个服务区域,各服务区域分布于不同的地区,每个服务区域对应某个城市的机房群,由多个可用区组成,每个可用区中包括多台主机,并且每台主机上开发人员均部署有一个监控服务,用于监控和管理该主机中的各个***服务以及运行的进程。各主机之间根据第一预设频率,通过将预设信号发送到其余主机以及接受其余主机发送过来的预设信号,互相确认、交换彼此的工作状态。其中,工作状态包括主机当前是否运行正常、主机中各***服务的调用数量等工作信息。***服务是指执行指定***功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序;***进程是操作***中一系列的进程以及为这些进程所分配的内存块,是***进行资源分配和调度的单位。各服务区域的主机根据预设规则相互判断其余的主机当前是否出现故障。其中,预设规则具体为:各主机之间根据第一预设频率交换预设信号,如果主机中的***服务出现故障,其对外的服务端口就会连接不上,无法向外部主机发送预设信息。因此,正常运行的主机,即第一主机在监控其余的主机,即第二主机的工作状态时,如果接收不到另外的某台主机的预设信号,将该台无法发送预设信号的主机标记为指定主机,并开始监控该指定主机在当前时间之后的预设时间段内,是否能够发送出预设信号,即第一主机能否接收到指定主机发送的预设信号。若在当前时间之后的预设时间段内,第一主机可以接收到指定主机发送的预设信号,则判定指定主机没有出现故障;若第一主机无法接收到指定主机发送的预设信号,则判定指定主机出现故障。在第一主机判定第二主机中出现故障主机时,首先获取当前故障主机所属的服务区域之外的其它服务区域,即指定服务区域当前的分级信息。其中,分级信息为各服务区域根据服务进程的调用占比对应的等级信息,由各主机中的监控服务根据第二预设频率进行更新设置。监控服务在对各服务区域分级后,其中分级信息为4级的服务区域具有较高的重要性,因此开发人员设定其不能作为故障主机的调用主机。因此,当前第一主机将分级信息为4级的服务区域除外,选择其余的指定服务区域作为当前处于可调用状态的服务区域。然后,当前第一主机通过预先信号获取当前处于可调用状态的服务区域中各主机的运行信息。其中,运行信息包括主机的服务调用信息和负载信息。第一主机主机将运行信息与预先设置的筛选条件,即第一预设要求进行比对,从而从当前处于可调用状态的服务区域的各主机中筛选得到当前处于可调用状态的主机作为备用主机。并且,第一主机将当前处于故障状态的主机标记为故障主机。在筛选得到备用主机后,第一主机根据相互之间的预设信号得到故障主机在故障前的服务***的服务进程信息。其中,服务进程信息包括各主机负责的***服务的服务类型和故障前***服务的服务进度。第一主机根据故障主机的服务进程信息,对备用主机的***服务对应的***进程进行相应的部署,比如控制备用主机下载***进程相应的程序容器镜像,以实现***进程的运行。在备用主机完成***进程的部署后,第一主机控制启动备用主机运行***服务服务。
进一步的,所述监控各第二主机当前是否出现故障的步骤,包括:
S101:根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
S102:若接收到所述第二主机发送的预设信号,则判定所述第二主机当前运行正常;
S103:若没有接收到所述第二主机发送的预设信号,则将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
S104:若接收到所述指定主机发送的所述预设信号,则判定所述指定主机运行正常;
S105:若没有接收到所述指定主机发送的所述预设信号,则判定所述指定主机出现故障。
本实施例中,各服务区域中的每台主机上均安装有监控服务,监控服务会实时记录主机的工作状态,包括主机当前的负载、主机中各服务进程的调用数量等信息,然后根据第一预设频率,比如每5秒一次,通过预设信号广播给其它的主机,同时接收其它主机广播的预设信号。其中,预设信号携带有发送该预设信号的主机的标识信息,比如编号,以便其它主机确认该预设信号是来自对应的主机。第一主机可以根据是否接收到预设信号筛选得到指定主机。其中,指定主机为当前没有发送预设信号的主机。第一主机在筛选、识别到指定主机后,会根据第一预设频率发送的预设信号,在当前时间之后的预设时间段内对指定主机的工作状态进行监控。其中,预设时间段由开发人员进行设定,开发人员可以根据不同服务区域的主机的重要性设定有不同的预设时间段。预设时间段与各主机之间建立有映射关系表,存储在各主机的数据库中,第一主机可以根据映射关系表查询到各主机分别对应的预设时间段。在当前时间之后的预设时间段内,比如当前时间之后的5分钟内,如果第一主机仍然无法接收到指定主机发送的预设信号,则判定指定主机出现故障。若在当前时间之后的预设时间段内,第一主机可以接收到指定主机发送的预设信号,则判定指定主机没有出现故障。
进一步的,所述从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机的步骤,包括:
S201:获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
S202:根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
S203:获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
S204:从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
本实施例中,在第一主机判定第二主机中出现故障主机时,首先获取故障主机所属的服务区域之外的其它服务区域,即指定服务区域当前的分级信息。其中,分级信息为开发人员根据各服务区域根据***服务的调用占比对应设置的等级信息,由各主机中的监控服务根据第二预设频率进行更新设置,并在更新后广播给其它的主机。因此,各主机,包括第一主机可以直接查询到各指定服务区域当前的分级信息。监控服务在对各服务区域分级后,其中分级信息为4级的服务区域的服务调用占比根据开发人员的设定达到了70%以上,具有较高的重要性,并且不太可能有多余的主机来运行其它服务区域的***服务,因此开发人员设定4级服务区域中的主机不能作为故障主机的调用主机。第一主机将分级信息为4级的服务区域除外,选择其余的指定服务区域作为当前处于可调用状态的服务区域。然后,第一主机通过预先信号获取当前处于可调用状态的服务区域中各主机的运行信息。其中,运行信息包括主机的服务调用占比和运行负载。第一主机将运行信息与预先设置的筛选条件进行比对,从而从当前处于可调用状态的服务区域的各主机中筛选得到当前处于可调用状态的主机作为备用主机。其中,筛选条件由开发人员预先设定。比如,筛选条件设定为服务调用占比在1%以下,运作负载在10%以下的主机均能作为可调用的主机。如果,主机A当前的服务调用占比为0.1%,运行负载为5%,则主机A的运行信息满足筛选条件,可以作为备用主机。
进一步的,所述获取各所述指定服务区域当前的分级信息的步骤之前,包括:
S4:根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
S5:根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
S6:根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
S7:将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
S8:根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
本实施例中,各主机中均安装有监控服务,监控服务实时记录主机的工作状态,该工作状态包括各主机中的***服务的调用次数。监控服务根据第二预设频率,将第一主机的第一服务调用次数分别发送到其余的主机,并接收各第二主机发送过来的第二服务调用次数。其中,第一服务调用次数为第一主机的***服务在第二预设频率对应的时间段内的调用次数,第二服务调用次数为各第一主机的***服务在第二预设频率对应的时间段内的调用次数。比如,第二预设频率为每小时一次,前一次获取的第一服务调用次数为10点,则当前次获取的第一服务调用次数为第一主机在10点到11点之间的服务调用次数。第一主机中的监控服务首先根据第一服务调用次数和各第二服务调用次数计算得到所有的主机的服务进程的服务总调用次数,以及,计算各服务区域中所有主机的服务调用的总次数,得到各服务区域对应的服务调用子次数。然后根据各服务区域的服务调用子次数与服务总调用次数之间的比值,得到各服务区域的服务调用占比。比如,服务区域A中有3台主机A、B、C,主机A的服务调用次数为5次,主机B的服务调用次数为8次,主机C的服务调用次数为7次,即服务区域A的服务调用子次数为20次。当前根据第一服务调用次数和第二服务调用次数计算得到的服务总调用次数为200次,那么服务调用子次数与服务总调用次数之间的比值为0.1,则服务区域A的服务调用占比为10%。第一主机将各服务区域对应的服务调用占比输入预先构建的分级信息库中,根据分级信息库中服务调用占比与分级信息映射关系表,分别匹配得到各服务调用占比对应的分级信息。其中,分级信息包括服务区域的区域等级以及区域等级对应的预设***进程数量。第一主机再根据服务调用占比与服务区域之间的对应关系,以及服务调用占比与分级信息之间的对应关系,得到各服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息的步骤之后,包括:
S9:获取所述服务区域的当前***进程数量;
S10:将所述当前***进程数量,分别与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
S11:若所述当前***进程数量大于所述预设***进程数量,则减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
S12:若所述当前***进程数量大于所述预设***进程数量,则增加所述服务区域中的主机的***进程数量至所述指定状态。
本实施例中,第一主机中的监控服务在匹配得到各个服务区域对应的分级信息后,需要根据分级信息中的预设***进程数量对服务区域的服务进程进行相应的部署。其中,***进程是操作***中一系列的进程以及为这些进程所分配的内存块,是***进行资源分配和调度的单位。第一主机中的监控服务通过与各第二主机中的监控服务之间相互交换信息,得到各服务区域的当前***进程数量。然后将各当前***进程数量分别与当前次的分级信息对应的预设***进程数量进行比对,判断当前***进程数量与预设***进程数量之间的大小关系。如果当前***进程数量大于预设***进程数量,则减少服务区域中的主机的***进程数量至指定状态。其中,指定状态为服务区域的当前***进程数量与预设***进程数量相等。比如,服务区域A当前次的区域等级为3级,对应的预设***进程数量为50个,服务区域A的当前***进程数量为60个,则需要减少服务区域A中的***进程,关闭部署有对应***服务的主机,直至服务区域A中的当前***进程数量为50个,与预设***进程数量一致,以节省资源。若当前***进程数量大于预设***进程数量,则监控服务需要计算当前***进程数量与预设***进程数量之间的差值;然后从docker的中央仓库中下载差值对应数量的程序容器镜像到服务区域的主机。其中,程序容器镜像包括服务进程的运行程序和运行环境,由开发人员预先存储在docker的中央仓库,便于使用时直接下载后启动。监控服务发出启动指令,使得服务区域的主机运行各程序容器镜像,完成增加服务区域中的***进程数量。
进一步的,所述增加所述服务区域中的主机的***进程数量至所述指定状态的步骤,包括:
S1001:计算所述当前***进程数量与所述预设***进程数量之间的差值;
S1002:下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括所述***进程的运行程序和运行环境;
S1003:在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
本实施例中,第一主机中的监控服务计算当前***进程数量与预设***进程数量之间的差值,并将该差值作为服务区域需要增加的***进程的数量。然后从docker的中央仓库下述该差值对应数量的程序容器镜像到服务区域的主机中进行安装。其中,程序容器镜像包括***进程的运行程序和运行环境,由开发人员预先存储在docker容器的中央仓库,便于使用时直接下载后启动。监控服务发出启动指令到服务区域对应的主机中,使得服务区域的主机运行各程序容器镜像,完成增加服务区域中的***进程数量。
进一步的,所述使用所述备用主机运行所述故障主机的***服务的步骤,包括:
S301:获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
S302:根据所述服务进程信息,部署所述备用主机的***服务进程;
S303:启动完成***服务进程部署后的备用主机,运行所述***服务。
本实施例中,第一主机在筛选得到备用主机后,根据与各第二主机相互之间广播的预设信号得到故障主机在故障前的***服务的服务进程信息。其中,服务进程信息包括各主机负责的***服务的服务类型和故障前***服务的服务进度,比如主机A负责的***服务的服务类型为计算保费,主机B处理图片,主机C理赔结算等。第一主机首先根据服务进程信息中的服务类型,将服务类型对应过的程序容器镜像下载到备用主机中进行安装,然后控制备用主机中安装完成后的***服务调整至服务进度,从而完成对备用主机中***服务进程的部署。其中,部署的***服务对应的程序容器镜像存放在docker的中央仓库中,需要使用时直接下载启动就可以了。程序容器镜像,不仅包含了程序,还包含了运行环境。最后,启动备用主机运行完成部署后的***服务。
本实施例提供的一种提高集群***可用性的方法,各不同地区的服务区域的主机根据第一预设频率相互判断是否有出现故障主机,并在发现故障主机后,相互之间广播各主机的运行信息,从而筛选得到当前处于可调用状态的备用主机,然后随机由一台正常运行的主机发出指令,使得备用主机继续运行故障主机的***服务,在满足布置于各个不同地区的服务区域的集群***的高可用性的同时,避免大规模故障后***无法运行。
参照图2,本申请一实施例中还提供了一种提高集群***可用性的装置,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述装置包括:
监控模块1,用于监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
筛选模块2,用于标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
运行模块3,用于使用所述备用主机运行所述故障主机的***服务。
本实施例中,开发人员在全球的不同地区部署多个服务区域,各服务区域分布于不同的地区,每个服务区域对应某个城市的机房群,由多个可用区组成,每个可用区中包括多台主机,并且每台主机上开发人员均部署有一个监控服务,用于监控和管理该主机中的各个***服务以及运行的进程。各主机之间根据第一预设频率,通过将预设信号发送到其余主机以及接受其余主机发送过来的预设信号,互相确认、交换彼此的工作状态。其中,工作状态包括主机当前是否运行正常、主机中各***服务的调用数量等工作信息。***服务是指执行指定***功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序;***进程是操作***中一系列的进程以及为这些进程所分配的内存块,是***进行资源分配和调度的单位。各服务区域的主机根据预设规则相互判断其余的主机当前是否出现故障。其中,预设规则具体为:各主机之间根据第一预设频率交换预设信号,如果主机中的***服务出现故障,其对外的服务端口就会连接不上,无法向外部主机发送预设信息。因此,正常运行的主机,即第一主机在监控其余的主机,即第二主机的工作状态时,如果接收不到另外的某台主机的预设信号,将该台无法发送预设信号的主机标记为指定主机,并开始监控该指定主机在当前时间之后的预设时间段内,是否能够发送出预设信号,即第一主机能否接收到指定主机发送的预设信号。若在当前时间之后的预设时间段内,第一主机可以接收到指定主机发送的预设信号,则判定指定主机没有出现故障;若第一主机无法接收到指定主机发送的预设信号,则判定指定主机出现故障。在第一主机判定第二主机中出现故障主机时,首先获取当前故障主机所属的服务区域之外的其它服务区域,即指定服务区域当前的分级信息。其中,分级信息为各服务区域根据服务进程的调用占比对应的等级信息,由各主机中的监控服务根据第二预设频率进行更新设置。监控服务在对各服务区域分级后,其中分级信息为4级的服务区域具有较高的重要性,因此开发人员设定其不能作为故障主机的调用主机。因此,当前第一主机将分级信息为4级的服务区域除外,选择其余的指定服务区域作为当前处于可调用状态的服务区域。然后,当前第一主机通过预先信号获取当前处于可调用状态的服务区域中各主机的运行信息。其中,运行信息包括主机的服务调用信息和负载信息。第一主机主机将运行信息与预先设置的筛选条件,即第一预设要求进行比对,从而从当前处于可调用状态的服务区域的各主机中筛选得到当前处于可调用状态的主机作为备用主机。并且,第一主机将当前处于故障状态的主机标记为故障主机。在筛选得到备用主机后,第一主机根据相互之间的预设信号得到故障主机在故障前的服务***的服务进程信息。其中,服务进程信息包括各主机负责的***服务的服务类型和故障前***服务的服务进度。第一主机根据故障主机的服务进程信息,对备用主机的***服务对应的***进程进行相应的部署,比如控制备用主机下载***进程相应的程序容器镜像,以实现***进程的运行。在备用主机完成***进程的部署后,第一主机控制启动备用主机运行***服务服务。
进一步的,所述监控模块1包括:
监控单元,用于根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
第一判定单元,用于判定所述第二主机当前运行正常;
判断单元,用于将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
第二判定单元,用于判定所述指定主机运行正常;
第三判定判定单元,用于判定所述指定主机出现故障。
本实施例中,各服务区域中的每台主机上均安装有监控服务,监控服务会实时记录主机的工作状态,包括主机当前的负载、主机中各服务进程的调用数量等信息,然后根据第一预设频率,比如每5秒一次,通过预设信号广播给其它的主机,同时接收其它主机广播的预设信号。其中,预设信号携带有发送该预设信号的主机的标识信息,比如编号,以便其它主机确认该预设信号是来自对应的主机。第一主机可以根据是否接收到预设信号筛选得到指定主机。其中,指定主机为当前没有发送预设信号的主机。第一主机在筛选、识别到指定主机后,会根据第一预设频率发送的预设信号,在当前时间之后的预设时间段内对指定主机的工作状态进行监控。其中,预设时间段由开发人员进行设定,开发人员可以根据不同服务区域的主机的重要性设定有不同的预设时间段。预设时间段与各主机之间建立有映射关系表,存储在各主机的数据库中,第一主机可以根据映射关系表查询到各主机分别对应的预设时间段。在当前时间之后的预设时间段内,比如当前时间之后的5分钟内,如果第一主机仍然无法接收到指定主机发送的预设信号,则判定指定主机出现故障。若在当前时间之后的预设时间段内,第一主机可以接收到指定主机发送的预设信号,则判定指定主机没有出现故障。
进一步的,所述筛选模块2包括:
第一获取单元,用于获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
第一筛选单元,用于根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
第二获取单元,用于获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
第二筛选单元,用于从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
本实施例中,在第一主机判定第二主机中出现故障主机时,首先获取故障主机所属的服务区域之外的其它服务区域,即指定服务区域当前的分级信息。其中,分级信息为开发人员根据各服务区域根据***服务的调用占比对应设置的等级信息,由各主机中的监控服务根据第二预设频率进行更新设置,并在更新后广播给其它的主机。因此,各主机,包括第一主机可以直接查询到各指定服务区域当前的分级信息。监控服务在对各服务区域分级后,其中分级信息为4级的服务区域的服务调用占比根据开发人员的设定达到了70%以上,具有较高的重要性,并且不太可能有多余的主机来运行其它服务区域的***服务,因此开发人员设定4级服务区域中的主机不能作为故障主机的调用主机。第一主机将分级信息为4级的服务区域除外,选择其余的指定服务区域作为当前处于可调用状态的服务区域。然后,第一主机通过预先信号获取当前处于可调用状态的服务区域中各主机的运行信息。其中,运行信息包括主机的服务调用占比和运行负载。第一主机将运行信息与预先设置的筛选条件进行比对,从而从当前处于可调用状态的服务区域的各主机中筛选得到当前处于可调用状态的主机作为备用主机。其中,筛选条件由开发人员预先设定。比如,筛选条件设定为服务调用占比在1%以下,运作负载在10%以下的主机均能作为可调用的主机。如果,主机A当前的服务调用占比为0.1%,运行负载为5%,则主机A的运行信息满足筛选条件,可以作为备用主机。
进一步的,所述装置还包括:
第一获取模块4,用于根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
第一计算模块5,用于根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
第二计算模块6,用于根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
第一匹配模块7,用于将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
第二匹配模块8,用于根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
本实施例中,各主机中均安装有监控服务,监控服务实时记录主机的工作状态,该工作状态包括各主机中的***服务的调用次数。监控服务根据第二预设频率,将第一主机的第一服务调用次数分别发送到其余的主机,并接收各第二主机发送过来的第二服务调用次数。其中,第一服务调用次数为第一主机的***服务在第二预设频率对应的时间段内的调用次数,第二服务调用次数为各第一主机的***服务在第二预设频率对应的时间段内的调用次数。比如,第二预设频率为每小时一次,前一次获取的第一服务调用次数为10点,则当前次获取的第一服务调用次数为第一主机在10点到11点之间的服务调用次数。第一主机中的监控服务首先根据第一服务调用次数和各第二服务调用次数计算得到所有的主机的服务进程的服务总调用次数,以及,计算各服务区域中所有主机的服务调用的总次数,得到各服务区域对应的服务调用子次数。然后根据各服务区域的服务调用子次数与服务总调用次数之间的比值,得到各服务区域的服务调用占比。比如,服务区域A中有3台主机A、B、C,主机A的服务调用次数为5次,主机B的服务调用次数为8次,主机C的服务调用次数为7次,即服务区域A的服务调用子次数为20次。当前根据第一服务调用次数和第二服务调用次数计算得到的服务总调用次数为200次,那么服务调用子次数与服务总调用次数之间的比值为0.1,则服务区域A的服务调用占比为10%。第一主机将各服务区域对应的服务调用占比输入预先构建的分级信息库中,根据分级信息库中服务调用占比与分级信息映射关系表,分别匹配得到各服务调用占比对应的分级信息。其中,分级信息包括服务区域的区域等级以及区域等级对应的预设***进程数量。第一主机再根据服务调用占比与服务区域之间的对应关系,以及服务调用占比与分级信息之间的对应关系,得到各服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述装置还包括:
第二获取模块9,用于获取所述服务区域的当前***进程数量;
判断模块10,用于将所述当前***进程数量,与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
减少模块11,用于减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
增加模块12,用于增加所述服务区域中的主机的***进程数量至所述指定状态。
本实施例中,第一主机中的监控服务在匹配得到各个服务区域对应的分级信息后,需要根据分级信息中的预设***进程数量对服务区域的服务进程进行相应的部署。其中,***进程是操作***中一系列的进程以及为这些进程所分配的内存块,是***进行资源分配和调度的单位。第一主机中的监控服务通过与各第二主机中的监控服务之间相互交换信息,得到各服务区域的当前***进程数量。然后将各当前***进程数量分别与当前次的分级信息对应的预设***进程数量进行比对,判断当前***进程数量与预设***进程数量之间的大小关系。如果当前***进程数量大于预设***进程数量,则减少服务区域中的主机的***进程数量至指定状态。其中,指定状态为服务区域的当前***进程数量与预设***进程数量相等。比如,服务区域A当前次的区域等级为3级,对应的预设***进程数量为50个,服务区域A的当前***进程数量为60个,则需要减少服务区域A中的***进程,关闭部署有对应***服务的主机,直至服务区域A中的当前***进程数量为50个,与预设***进程数量一致,以节省资源。若当前***进程数量大于预设***进程数量,则监控服务需要计算当前***进程数量与预设***进程数量之间的差值;然后从docker的中央仓库中下载差值对应数量的程序容器镜像到服务区域的主机。其中,程序容器镜像包括服务进程的运行程序和运行环境,由开发人员预先存储在docker的中央仓库,便于使用时直接下载后启动。监控服务发出启动指令,使得服务区域的主机运行各程序容器镜像,完成增加服务区域中的***进程数量。
进一步的,所述增加模块3包括:
计算单元,用于计算所述当前***进程数量与所述预设***进程数量之间的差值;
下载单元,用于下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括所述***进程的运行程序和运行环境;
运行单元,用于在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
本实施例中,第一主机中的监控服务计算当前***进程数量与预设***进程数量之间的差值,并将该差值作为服务区域需要增加的***进程的数量。然后从docker的中央仓库下述该差值对应数量的程序容器镜像到服务区域的主机中进行安装。其中,程序容器镜像包括***进程的运行程序和运行环境,由开发人员预先存储在docker容器的中央仓库,便于使用时直接下载后启动。监控服务发出启动指令到服务区域对应的主机中,使得服务区域的主机运行各程序容器镜像,完成增加服务区域中的***进程数量。
进一步的,所述运行模块3,包括:
获取单元,用于获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
部署单元,用于根据所述服务进程信息,部署所述备用主机的***服务进程;
启动单元,用于启动完成***服务进程部署后的备用主机,运行所述***服务。
本实施例中,第一主机在筛选得到备用主机后,根据与各第二主机相互之间广播的预设信号得到故障主机在故障前的***服务的服务进程信息。其中,服务进程信息包括各主机负责的***服务的服务类型和故障前***服务的服务进度,比如主机A负责的***服务的服务类型为计算保费,主机B处理图片,主机C理赔结算等。第一主机首先根据服务进程信息中的服务类型,将服务类型对应过的程序容器镜像下载到备用主机中进行安装,然后控制备用主机中安装完成后的***服务调整至服务进度,从而完成对备用主机中***服务进程的部署。其中,部署的***服务对应的程序容器镜像存放在docker的中央仓库中,需要使用时直接下载启动就可以了。程序容器镜像,不仅包含了程序,还包含了运行环境。最后,启动备用主机运行完成部署后的***服务。
本实施例提供的一种提高集群***可用性的装置,各不同地区的服务区域的主机根据第一预设频率相互判断是否有出现故障主机,并在发现故障主机后,相互之间广播各主机的运行信息,从而筛选得到当前处于可调用状态的备用主机,然后随机由一台正常运行的主机发出指令,使得备用主机继续运行故障主机的***服务,在满足布置于各个不同地区的服务区域的集群***的高可用性的同时,避免大规模故障后***无法运行。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储程序容器镜像等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种提高集群***可用性的方法。
上述处理器执行上述提高集群***可用性的方法,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述方法包括:
S1:监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
S2:若出现故障,则标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
S3:使用所述备用主机运行所述故障主机的***服务。
进一步的,所述监控各第二主机当前是否出现故障的步骤,包括:
S101:根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
S102:若接收到所述第二主机发送的预设信号,则判定所述第二主机当前运行正常;
S103:若没有接收到所述第二主机发送的预设信号,则将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
S104:若接收到所述指定主机发送的所述预设信号,则判定所述指定主机运行正常;
S105:若没有接收到所述指定主机发送的所述预设信号,则判定所述指定主机出现故障。
进一步的,所述从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机的步骤,包括:
S201:获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
S202:根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
S203:获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
S204:从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
进一步的,所述获取各所述指定服务区域当前的分级信息的步骤之前,包括:
S4:根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
S5:根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
S6:根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
S7:将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
S8:根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息的步骤之后,包括:
S9:获取所述服务区域的当前***进程数量;
S10:将所述当前***进程数量,分别与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
S11:若所述当前***进程数量大于所述预设***进程数量,则减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
S12:若所述当前***进程数量大于所述预设***进程数量,则增加所述服务区域中的主机的***进程数量至所述指定状态。
进一步的,所述增加所述服务区域中的主机的***进程数量至所述指定状态的步骤,包括:
S1001:计算所述当前***进程数量与所述预设***进程数量之间的差值;
S1002:下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括所述***进程的运行程序和运行环境;
S1003:在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
进一步的,所述使用所述备用主机运行所述故障主机的***服务的步骤,包括:
S301:获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
S302:根据所述服务进程信息,部署所述备用主机的***服务进程;
S303:启动完成***服务进程部署后的备用主机,运行所述***服务。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种提高集群***可用性的方法,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述方法包括:
S1:监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
S2:若出现故障,则标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
S3:使用所述备用主机运行所述故障主机的***服务。
进一步的,所述监控各第二主机当前是否出现故障的步骤,包括:
S101:根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
S102:若接收到所述第二主机发送的预设信号,则判定所述第二主机当前运行正常;
S103:若没有接收到所述第二主机发送的预设信号,则将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
S104:若接收到所述指定主机发送的所述预设信号,则判定所述指定主机运行正常;
S105:若没有接收到所述指定主机发送的所述预设信号,则判定所述指定主机出现故障。
进一步的,所述从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机的步骤,包括:
S201:获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
S202:根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
S203:获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
S204:从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
进一步的,所述获取各所述指定服务区域当前的分级信息的步骤之前,包括:
S4:根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
S5:根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
S6:根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
S7:将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
S8:根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
进一步的,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息的步骤之后,包括:
S9:获取所述服务区域的当前***进程数量;
S10:将所述当前***进程数量,分别与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
S11:若所述当前***进程数量大于所述预设***进程数量,则减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
S12:若所述当前***进程数量大于所述预设***进程数量,则增加所述服务区域中的主机的***进程数量至所述指定状态。
进一步的,所述增加所述服务区域中的主机的***进程数量至所述指定状态的步骤,包括:
S1001:计算所述当前***进程数量与所述预设***进程数量之间的差值;
S1002:下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括所述***进程的运行程序和运行环境;
S1003:在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
进一步的,所述使用所述备用主机运行所述故障主机的***服务的步骤,包括:
S301:获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
S302:根据所述服务进程信息,部署所述备用主机的***服务进程;
S303:启动完成***服务进程部署后的备用主机,运行所述***服务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种提高集群***可用性的方法,其特征在于,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述方法包括:
监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
若出现故障,则标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
使用所述备用主机运行所述故障主机的***服务;
所述从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机的步骤,包括:
获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
2.根据权利要求1所述的提高集群***可用性的方法,其特征在于,所述监控各第二主机当前是否出现故障的步骤,包括:
根据第一预设频率接收各所述第二主机发送的预设信号,以实现对各所述第二主机的工作状态的监控;
若接收到所述第二主机发送的预设信号,则判定所述第二主机当前运行正常;
若没有接收到所述第二主机发送的预设信号,则将没有发送所述预设信号的主机标记为指定主机,并在当前时间之后的预设时间段内,判断是否接收到所述指定主机发送的所述预设信号;
若接收到所述指定主机发送的所述预设信号,则判定所述指定主机运行正常;
若没有接收到所述指定主机发送的所述预设信号,则判定所述指定主机出现故障。
3.根据权利要求1所述的提高集群***可用性的方法,其特征在于,所述获取各所述指定服务区域当前的分级信息的步骤之前,包括:
根据第二预设频率,获取所述第二预设频率对应的时间段内的第一服务调用次数以及各所述第二主机分别对应的第二服务调用次数,其中,所述第一服务调用次数为所述第一主机的***服务的调用次数,所述第二服务调用次数为所述第二主机的***服务的调用次数;
根据所述第一服务调用次数和各所述第二服务调用次数,分别计算得到服务调用总次数,以及各所述服务区域的服务调用子次数;
根据各所述服务调用子次数和所述服务调用总次数,分别计算得到各所述服务区域对应的服务调用占比;
将各所述服务调用占比输入预先构建的分级信息库中,分别匹配得到各服务调用占比对应的分级信息,其中,所述分级信息库包括服务调用占比与分级信息映射关系表;
根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息。
4.根据权利要求3所述的提高集群***可用性的方法,其特征在于,所述分级信息包括区域等级和所述区域等级对应的预设***进程数量,所述根据所述服务调用占比与所述服务区域之间的对应关系,以及所述服务调用占比与所述分级信息之间的对应关系,得到各所述服务区域对应的分级信息的步骤之后,包括:
获取所述服务区域的当前***进程数量;
将所述当前***进程数量,与所述服务区域的分级信息对应的预设***进程数量进行比对,判断两者之间的大小;
若所述当前***进程数量大于所述预设***进程数量,则减少所述服务区域中的主机的***进程数量至指定状态,所述指定状态为所述服务区域的当前***进程数量等于对应的预设***进程数量;
若所述当前***进程数量大于所述预设***进程数量,则增加所述服务区域中的主机的***进程数量至所述指定状态。
5.根据权利要求4所述的提高集群***可用性的方法,其特征在于,所述增加所述服务区域中的主机的***进程数量至所述指定状态的步骤,包括:
计算所述当前***进程数量与所述预设***进程数量之间的差值;
下载所述差值对应数量的程序容器镜像到所述服务区域的主机,所述程序容器镜像包括***进程的运行程序和运行环境;
在所述服务区域的主机中运行各所述程序容器镜像,以完成所述***进程的部署。
6.根据权利要求1所述的提高集群***可用性的方法,其特征在于,所述使用所述备用主机运行所述故障主机的***服务的步骤,包括:
获取所述故障主机的服务进程信息,所述服务进程信息包括所述***服务的服务类型和故障前的服务进度;
根据所述服务进程信息,部署所述备用主机的***服务进程;
启动完成***服务进程部署后的备用主机,运行所述***服务。
7.一种提高集群***可用性的装置,其特征在于,应用于所述集群***中的任意一台主机,所述集群***包括多个服务区域,所述服务区域分布于不同地区,当前执行所述方法的主机为第一主机,所述装置包括:
监控模块,用于监控各第二主机当前是否出现故障,其中,所述第二主机为所述第一主机之外的其它主机;
筛选模块,用于标记当前处于故障状态的第二主机为故障主机,并从各指定服务区域中筛选当前处于可调用状态的主机作为备用主机,其中,所述指定服务区域为所述故障主机所属的服务区域之外的其它服务区域,所述可调用状态的主机为服务调用占比和运行负载符合第一预设要求的主机;
运行模块,用于使用所述备用主机运行所述故障主机的***服务;
所述筛选模块包括:
第一获取单元,用于获取各所述指定服务区域当前的分级信息,所述分级信息为根据各服务区域的服务调用占比对应设置的等级信息;
第一筛选单元,用于根据所述分级信息筛选当前处于可调用状态的服务区域,其中,所述可调用状态的服务区域为所述分级信息符合第二预设要求的服务区域;
第二获取单元,用于获取所述当前处于可调用状态的服务区域中各主机的运行信息,所述运行信息包括主机的服务调用占比和运行负载;
第二筛选单元,用于从所述当前处于可调用状态的服务区域中,筛选所述运行信息符合第三预设要求的主机作为所述备用主机。
8.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910305188.3A CN110149366B (zh) | 2019-04-16 | 2019-04-16 | 提高集群***可用性的方法、装置和计算机设备 |
PCT/CN2019/118163 WO2020211362A1 (zh) | 2019-04-16 | 2019-11-13 | 提高集群***可用性的方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910305188.3A CN110149366B (zh) | 2019-04-16 | 2019-04-16 | 提高集群***可用性的方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110149366A CN110149366A (zh) | 2019-08-20 |
CN110149366B true CN110149366B (zh) | 2022-03-18 |
Family
ID=67589761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910305188.3A Active CN110149366B (zh) | 2019-04-16 | 2019-04-16 | 提高集群***可用性的方法、装置和计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110149366B (zh) |
WO (1) | WO2020211362A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110149366B (zh) * | 2019-04-16 | 2022-03-18 | 平安科技(深圳)有限公司 | 提高集群***可用性的方法、装置和计算机设备 |
CN111338858B (zh) * | 2020-02-18 | 2023-07-14 | 中国工商银行股份有限公司 | 一种双机房的容灾方法及装置 |
CN112787855B (zh) * | 2020-12-29 | 2022-07-26 | 中国电力科学研究院有限公司 | 一种面向广域分布式服务的主备管理***及管理方法 |
CN113742173A (zh) * | 2021-08-30 | 2021-12-03 | 浙江大华技术股份有限公司 | 多设备集群的控制方法、设备主控装置及可读存储介质 |
CN117544762B (zh) * | 2023-11-17 | 2024-04-19 | 广东信佰工程监理有限公司 | 一种基于大数据分析的项目监理方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656624A (zh) * | 2008-08-18 | 2010-02-24 | 中兴通讯股份有限公司 | 一种多节点应用级容灾***及容灾方法 |
CN103931139A (zh) * | 2013-03-19 | 2014-07-16 | 华为技术有限公司 | 一种冗余保护方法、装置、设备及*** |
CN106487486A (zh) * | 2016-10-18 | 2017-03-08 | 泰康保险集团股份有限公司 | 业务处理方法和数据中心*** |
CN106557543A (zh) * | 2016-10-14 | 2017-04-05 | 深圳前海微众银行股份有限公司 | 节点切换方法及*** |
CN107707393A (zh) * | 2017-09-26 | 2018-02-16 | 赛尔网络有限公司 | 基于Openstack O版特性的多活*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526540B2 (en) * | 2003-04-22 | 2009-04-28 | International Business Machines Corporation | System and method for assigning data collection agents to storage area network nodes in a storage area network resource management system |
KR101558047B1 (ko) * | 2013-09-09 | 2015-10-06 | 삼성에스디에스 주식회사 | 클러스터 시스템 및 클러스터 시스템에서 서비스 가용성을 제공하기 위한 방법 |
CN103647668A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种高可用集群内主机群体决策***及切换方法 |
CN105991325B (zh) * | 2015-02-10 | 2019-06-21 | 华为技术有限公司 | 处理至少一个分布式集群中的故障的方法、设备和*** |
US20170293540A1 (en) * | 2016-04-08 | 2017-10-12 | Facebook, Inc. | Failover of application services |
CN106982259A (zh) * | 2017-04-19 | 2017-07-25 | 聚好看科技股份有限公司 | 服务器集群的故障解决方法 |
CN110149366B (zh) * | 2019-04-16 | 2022-03-18 | 平安科技(深圳)有限公司 | 提高集群***可用性的方法、装置和计算机设备 |
-
2019
- 2019-04-16 CN CN201910305188.3A patent/CN110149366B/zh active Active
- 2019-11-13 WO PCT/CN2019/118163 patent/WO2020211362A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656624A (zh) * | 2008-08-18 | 2010-02-24 | 中兴通讯股份有限公司 | 一种多节点应用级容灾***及容灾方法 |
CN103931139A (zh) * | 2013-03-19 | 2014-07-16 | 华为技术有限公司 | 一种冗余保护方法、装置、设备及*** |
CN106557543A (zh) * | 2016-10-14 | 2017-04-05 | 深圳前海微众银行股份有限公司 | 节点切换方法及*** |
CN106487486A (zh) * | 2016-10-18 | 2017-03-08 | 泰康保险集团股份有限公司 | 业务处理方法和数据中心*** |
CN107707393A (zh) * | 2017-09-26 | 2018-02-16 | 赛尔网络有限公司 | 基于Openstack O版特性的多活*** |
Also Published As
Publication number | Publication date |
---|---|
CN110149366A (zh) | 2019-08-20 |
WO2020211362A1 (zh) | 2020-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110149366B (zh) | 提高集群***可用性的方法、装置和计算机设备 | |
CN110609732B (zh) | 应用程序部署方法、装置、计算机设备和存储介质 | |
CN109302483B (zh) | 一种应用程序的管理方法及*** | |
CN112769924B (zh) | RocketMQ的分布式部署方法、装置、设备及介质 | |
CN112506659A (zh) | 一种边缘设备的管理方法以及相关装置 | |
WO2022105138A1 (zh) | 去中心化的任务调度方法、装置、设备及介质 | |
CN110532025B (zh) | 基于微服务架构的数据处理方法、装置、设备及存储介质 | |
CN112698992B (zh) | 一种云集群的容灾管理方法以及相关装置 | |
CN109697078B (zh) | 非高可用性组件的修复方法、大数据集群和容器服务平台 | |
CN110932914B (zh) | 部署方法、部署装置、混合云***架构及计算机存储介质 | |
CN112965817B (zh) | 资源管理方法、装置和电子设备 | |
CN111628886A (zh) | 私有云环境下组建区块链网络的方法、装置、计算机设备 | |
CN112910937A (zh) | 容器集群中的对象调度方法、装置、服务器和容器集群 | |
CN111143023A (zh) | 一种资源变更的方法及装置、设备、存储介质 | |
CN113419818B (zh) | 基础组件部署方法、装置、服务器及存储介质 | |
CN112416559B (zh) | 调度策略更新方法、服务调度方法、存储介质及相关装置 | |
CN112035579B (zh) | 图管理、数据存储、数据查询方法、装置及存储介质 | |
CN107645396B (zh) | 一种集群扩容方法及装置 | |
CN109547253B (zh) | 文件下载方法、装置、计算机设备和存储介质 | |
CN116743762A (zh) | 服务注册集群流量切换方法、流量切换装置及存储介质 | |
CN115421891A (zh) | 一种任务分发方法、装置、设备及介质 | |
CN115438021A (zh) | 一种数据库服务器的资源配置方法及装置 | |
CN110650059B (zh) | 故障群集检测方法、装置、计算机设备和存储介质 | |
CN113326052A (zh) | 业务组件的升级方法、装置、计算机设备和存储介质 | |
CN109525675B (zh) | 北向服务器文件下载方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |