一种虚拟机隔离方法及装置、电子设备及存储介质与流程



1.本技术涉及微服务技术领域,尤其涉及一种虚拟机隔离方法及装置、电子设备及存储介质。


背景技术:



2.中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接不同的应用系统或者应用系统的各个部分,能够达到资源共享、功能共享的目的。
3.中间件主要通过集方式提供服务,通过多个集节点的冗余部署实现高可用。对于虚拟机集中部署的中间件服务来说,当集中的个别节点所在的物理机存在故障隐患时,通过将这个物理机上部署的虚拟机节点所提供的中间件服务进行“隔离”,可以最大程度上确保中间件服务所在的虚拟机集对外提供的中间件服务不受影响。
4.然而发明人发现,现有的隔离方式存在着人工操作容易失误的风险,也可能因未及时发现故障隐患而导致业务面临较高风险。


技术实现要素:



5.本技术实施例提供了一种虚拟机隔离方法及装置、电子设备及存储介质,以降低人工进行虚拟机隔离操作容易失误的风险。
6.本技术实施例采用下述技术方案:
7.第一方面,本技术实施例提供一种虚拟机隔离方法,由中间件平台服务器执行,其中,所述方法包括:
8.通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;
9.根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务;
10.根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;
11.根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。
12.可选地,所述根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务包括:
13.根据所述虚拟机ip地址,在配置管理数据库中查询所述目标虚拟机上部署的中间件服务及所述中间件服务的类型。
14.可选地,在根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务之后,所述方法还包括:
15.对所述目标虚拟机上部署的中间件服务进行隔离前检查;
16.根据隔离前检查的结果确定是否执行根据中间件服务的类型,确定与所述中间件
服务相对应的隔离策略的步骤。
17.可选地,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查包括:
18.确定所述中间件服务所在的可用虚拟机节点的数量;
19.若所述可用虚拟机节点的数量大于预设阈值,则确定所述隔离前检查的结果为隔离前检查通过;
20.若所述可用虚拟机节点的数量不大于预设阈值,则确定所述隔离前检查的结果为隔离前检查未通过,并触发告警。
21.可选地,所述虚拟机隔离结果包括隔离成功结果或隔离失败结果,所述隔离失败结果包括隔离前检查未通过或操作超时,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查之后,所述方法还包括:
22.确定是否可以在预设时间内得到所述隔离成功结果或者隔离前检查未通过的结果;
23.若不可以,则确定所述隔离失败结果为操作超时。
24.可选地,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:
25.确定所述中间件服务是否是在supervisor进程管理程序中托管的中间件服务;
26.若是,则确定所述隔离策略为调用supervisor接口,以通过所述supervisor接口对所述中间件服务进行隔离。
27.可选地,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:
28.若所述中间件服务的类型为redis中间件服务,则确定所述redis中间件服务所在的虚拟机是否为主节点;
29.若是,则确定所述隔离策略为向所述redis中间件服务所在的虚拟机发送隔离指令,以将主节点切换为从节点并停止所述redis中间件服务。
30.可选地,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:
31.确定所述中间件服务是否是在dubbo框架中注册的服务;
32.若是,则确定所述隔离策略为降低所述中间件服务所在的虚拟机的权重并下线所述中间件服务。
33.可选地,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:
34.若所述中间件服务不是在supervisor进程管理程序中托管的中间件服务,且不是redis中间件服务和在dubbo框架中注册的服务,则确定所述隔离策略为通过脚本运行平台远程执行隔离操作。
35.可选地,在根据所述隔离策略对所述目标虚拟机上部署的中间件服务进行隔离之后,所述方法还包括:
36.根据所述中间件服务的类型对所述虚拟机隔离结果进行检查;
37.根据检查结果确定对所述虚拟机上的中间件服务是否隔离成功。
38.第二方面,本技术实施例还提供一种虚拟机隔离装置,应用于中间件平台服务器,
其中,所述装置用于实现前述之任一所述方法。
39.第三方面,本技术实施例还提供一种电子设备,包括:
40.处理器;以及
41.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行前述之任一所述方法。
42.第四方面,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行前述之任一所述方法。
43.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:本技术实施例的虚拟机隔离方法可以由单独部署的中间件平台服务器执行。在进行虚拟机隔离时,可以先通过统一的虚拟机隔离接口接收虚拟机隔离请求,这里的虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求,然后根据虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及目标虚拟机上部署的中间件服务,之后再根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略,最后根据隔离策略对目标虚拟机上部署的中间件服务进行隔离,得到虚拟机隔离结果。本技术实施例的虚拟机隔离方法能够通过统一的虚拟机隔离接口对相应的虚拟机上部署的中间件服务按照不同的隔离策略进行隔离,不需要人工手动登录虚拟机进行运维处理,降低了人工操作失误的风险,进而提高了虚拟机运维效率。
附图说明
44.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
45.图1为本技术实施例中一种虚拟机隔离方法的流程示意图;
46.图2为本技术实施例中一种物理机运维系统架构示意图;
47.图3为本技术实施例中一种虚拟机隔离流程示意图;
48.图4为本技术实施例中一种虚拟机隔离装置的结构示意图;
49.图5为本技术实施例中一种电子设备的结构示意图。
具体实施方式
50.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.以下结合附图,详细说明本技术各实施例提供的技术方案。
52.现有的虚拟机隔离流程通常是巡检人员对虚拟机进行巡检,当发现存在故障隐患的虚拟机时,比如集节点将要不可用或者服务水平得不到保证时,就会触发告警,由运维人员进行运维处理,具体的运维操作一般有以下两种:
53.1)运维人员手动登录存在故障隐患的虚拟机,将虚拟机节点从集中下线;
54.2)不做处置,虚拟机节点故障时,通过集自愈机制恢复虚拟机上的服务。
55.然而这两种操作存在着如下问题:
56.1)人工手动登录存在故障隐患的虚拟机进行运维,运维工作量大,虚拟机上部署的不同类型的中间件对运维人员的能力要求不同,存在培训和知识传递成本,且人工手动操作存在操作失误的风险;
57.2)如不对存在故障隐患的虚拟机进行处置,部分中间件的自愈机制存在节点探测等成本会导致服务短时间内不可用,且无法人为干预避开业务高峰,进而对实际业务造成不可控风险。
58.基于此,本技术实施例提供了一种虚拟机隔离方法,由中间件平台服务器执行,如图1所示,提供了本技术实施例一种虚拟机隔离方法的流程示意图,所述方法至少包括如下的步骤s110至步骤s140:
59.步骤s110,通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求。
60.本技术实施例的虚拟机隔离方法可以理解为是针对虚拟机上部署的中间服务进行隔离的方法,因此可以由单独部署的中间件平台服务器来执行。
61.实际应用场景下,虚拟机通常以集的方式分布在多台物理机上,每一个虚拟机上可以部署有不同的中间件服务,而对于同一种中间件服务来说,其可以分布在不同的虚拟机上,形成中间件服务集。多台物理机的多个虚拟机集统一部署在同一云环境下,进而可以通过虚拟机集中部署的中间件服务对外提供服务。基于此,当基础设施运维平台监控到物理机出现故障隐患时,需要将该物理机上部署的所有虚拟机进行隔离,而为了保证这些虚拟机上部署的中间件服务不会对其所在的整个中间件服务集造成影响,需要进一步对这些虚拟机上部署的中间件服务进行隔离。如图2所示,提供了本技术实施例中一种物理机运维系统架构示意图。
62.在对虚拟机上部署的中间件服务进行隔离时,通过事先设置好的虚拟机隔离接口可以接收到虚拟机隔离请求,该虚拟机隔离请求就可以理解为是对虚拟机上部署的中间件服务进行隔离的请求,当基础设施运维平台监控到物理机出现故障隐患时,就可以向中间件平台发送对该物理机上部署的虚拟机进行隔离的请求,当然也可以由人工手动在中间件平台提供的前端页面上输入信息来触发虚拟机隔离请求。具体如何接收虚拟机隔离请求,本领域技术人员可根据实际情况灵活设置,在此不作具体限定。
63.本技术实施例事先在中间件平台服务器上设置了统一对外的虚拟机隔离接口,具体可以包括接口路径、接口参数及返回值的设置等,接口路径例如可以是“/api/tower/beoffline”的形式,其中tower代表模块项目代号,接口参数例如可以包括虚拟机ip地址等信息,当有多个虚拟机ip地址时,可以用逗号分隔,如“10.0.0.1,10.0.0.2”,还可以设置一次虚拟机隔离请求最多可以传输的虚拟机ip地址的数量,例如可以是10个。返回值主要用于表征对虚拟机的隔离状态或者隔离结果,具体形式也可以根据实际情况灵活设置,在此不作具体限定。
64.步骤s120,根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务。
65.如前所述,通过设置好的虚拟机隔离接口接收到的虚拟机隔离请求中会携带有虚拟机ip地址,因此根据虚拟机ip地址可以确定出存在故障隐患的虚拟机即目标虚拟机,以
及这些目标虚拟机上部署的中间件服务。
66.步骤s130,根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略。
67.实际应用场景下,虚拟机上部署的中间件服务的类型一般有很多,不同类型的中间件服务的隔离策略也不同,因此本技术实施例需要根据目标虚拟机上部署的中间件服务的类型,确定与所述中间件服务相对应的隔离策略,这里的隔离策略可以理解为是对中间件服务所采取的具体的隔离操作。
68.步骤s140,根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。
69.在确定了隔离策略后,则可以根据隔离策略对目标虚拟机上部署的相应的中间件服务进行隔离操作,进而可以得到虚拟机隔离结果。
70.本技术实施例的虚拟机隔离方法能够通过统一的虚拟机隔离接口对相应的虚拟机上部署的中间件服务按照不同的隔离策略进行隔离,不需要人工手动登录虚拟机进行运维处理,降低了人工操作失误的风险,进而提高了虚拟机运维效率。
71.在本技术的一个实施例中,所述根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务包括:根据所述虚拟机ip地址,在配置管理数据库中查询所述目标虚拟机上部署的中间件服务及所述中间件服务的类型。
72.本技术实施例的中间件平台服务器在确定目标虚拟机及目标虚拟机上部署的中间件服务时,可以通过查询配置管理数据库(configuration management database,简称cmdb)来实现。cmdb中通常存储有与企业it架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
73.具体地,本技术实施例在确定第一目标物理机上部署的虚拟机时,可以根据虚拟机ip地址在上述cmdb中查询目标虚拟机上部署了哪些中间件服务及这些中间件服务的类型。cmdb中具体存储的数据内容例如可以包括物理机ip地址、虚拟机ip地址、中间件服务名称及中间件服务类型等。当然,具体还包括哪些信息,本领域技术人员可根据实际需求灵活设置,在此不做具体限定。
74.在本技术的一个实施例中,在根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务之后,所述方法还包括:对所述目标虚拟机上部署的中间件服务进行隔离前检查;根据隔离前检查的结果确定是否执行根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略的步骤。
75.如前所述,现有技术中提供的部分中间件服务的自愈机制存在节点探测等成本会导致服务短时间内不可用,且无法人为干预避开业务高峰,进而容易对实际业务造成不可控风险。
76.基于此,本技术实施例在对目标虚拟机上部署的中间件服务进行隔离之前,可以先对目标虚拟机上部署的中间件服务进行隔离前检查,隔离前检查可理解为是对中间件服务的业务连续性进行检查,保证对目标虚拟机上部署的中间件服务进行隔离后,整个虚拟机集仍然能够提供连续、稳定的中间件服务,避免对实际业务造成不可控的风险。
77.在本技术的一个实施例中,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查包括:确定所述中间件服务所在的可用虚拟机节点的数量;若所述可用虚拟机节点
的数量大于预设阈值,则确定所述隔离前检查的结果为隔离前检查通过;若所述可用虚拟机节点的数量不大于预设阈值,则确定所述隔离前检查的结果为隔离前检查未通过,并触发告警。
78.本技术实施例在对目标虚拟机上部署的中间件服务进行隔离前检查时,可以先确定该中间件服务当前所在的可用虚拟机节点的数量,即存活节点数量,如果可用虚拟机节点的数量大于预设阈值,则通过了隔离前检查,说明即使现在对目标虚拟机上部署的中间件服务进行隔离,也不会对整个虚拟机集所提供的中间件服务造成影响,因此可以进行后续的隔离操作。如果可用虚拟机节点的数量不大于预设阈值,则没有通过隔离前检查,说明如果现在要对目标虚拟机上部署的中间件服务进行隔离,会影响整个虚拟机集所提供的中间件服务的能力,进而会对业务连续性和稳定性造成影响,因此暂时不能进行后续的隔离操作,这时可以触发告警,由人工介入进行处理。
79.上述“预设阈值”可以理解为是确保满足sla(service level agreement,服务水平协议)的最低要求,是对外承诺的一系列性能指标,比如对外承诺平均响应时间50s,这就要求至少有n个节点是同时能提供服务的。当然,不同类型的中间件服务设置的具体参数不同,因此上述“预设阈值”可以根据不同类型的中间件服务分别设置。
80.本技术实施例的“预设阈值”是在假设对目标虚拟机隔离之后,当前所剩余的存活的虚拟机节点的数量仍然能够提供足够的服务能力的基础上所设置的。为了便于对上述实施例的理解,这里进一步举例说明,假设实际应用环境中部署有10个虚拟机节点,阈值要求是至少同时保持有6个虚拟机节点是正常运行,如果现在已经4个虚拟机节点发生了故障,当巡检时又发现了第5个存在故障隐患的虚拟机节点时,如果继续隔离,将导致现有的虚拟机集无法提供足够的服务能力,进而会对业务连续性和稳定性造成影响。此时可以人工介入,人工介入的处理方式比如可以是增加新的虚拟机节点,保证至少有6个虚拟机节点在正常运转。
81.在本技术的一个实施例中,所述虚拟机隔离结果包括隔离成功结果或隔离失败结果,所述隔离失败结果包括隔离前检查未通过或操作超时,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查之后,所述方法还包括:确定是否可以在预设时间内得到所述隔离成功结果或者隔离前检查未通过的结果;若不可以,则确定所述隔离失败结果为操作超时。
82.本技术实施例得到的虚拟机隔离结果可能是隔离成功结果,也可能是隔离失败结果,隔离失败结果具体又可以分为是隔离前检查未通过和操作超时的结果,具体得到的虚拟机隔离结果的形式可以在本技术实施例的虚拟机隔离接口中事先定义好,例如可以在虚拟机隔离接口中定义如下形式的返回值:
[0083][0084]
如果返回值为“ok”,说明相应的虚拟机隔离成功,如果返回值为“not_allowed”,说明相应的虚拟机隔离失败,具体失败原因是由于隔离前检查未通过导致的,如果返回值为“timeout”,说明相应的虚拟机隔离失败,具体失败原因则是由于操作超时导致的,这里的操作超时可以理解是在预设时间内既没有返回隔离成功结果,也没有返回隔离前检查未通过的结果,预设时间的大小可根据实际情况灵活设置,例如可以设置为5分钟。除了上述两种隔离失败原因,可能还会有其他的失败原因,可以用“other_fail_reason”来表示。
[0085]
上述得到的各种返回值可以在中间件平台服务器提供的前端页面上进行展示,如果虚拟机隔离请求是由基础设施运维平台发送过来的,还可以将返回值发送给基础设施运维平台,以便于相关人员及时了解到虚拟机的隔离情况。
[0086]
在本技术的一个实施例中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:确定所述中间件服务是否是在supervisor进程管理程序中托管的中间件服务;若是,则确定所述隔离策略为调用supervisor接口,以通过所述supervisor接口对所述中间件服务进行隔离。
[0087]
supervisor可以用来托管需要后台持续运行的应用程序,可以根据设定好的规则来自动启动或者重启,supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
[0088]
实际应用场景下,大部分的中间件服务都是在supervisor进程管理程序中托管的中间件服务,少部分的中间件服务是没有在supervisor中托管的其他类型的中间件服务。因此本技术实施例可以根据中间件服务的类型确定需要隔离的中间件服务中是否有在supervisor中托管的中间件服务,如果有,则采用的隔离策略可以是调用supervisor接口,然后通过supervisor接口对中间件服务进行隔离,该supervisor接口中传递的参数可以包括中间件服务名称和中间件服务所在的虚拟机的ip地址等参数。
[0089]
在本技术的一个实施例中,所述根据中间件服务的类型,确定与所述中间件服务
相对应的隔离策略包括:若所述中间件服务的类型为redis中间件服务,则确定所述redis中间件服务所在的虚拟机是否为主节点;若是,则确定所述隔离策略为向所述redis中间件服务所在的虚拟机发送隔离指令,以将主节点切换为从节点并停止所述redis中间件服务。
[0090]
本技术实施例的中间件服务类型可以是redis(remote dictionary service)中间件服务,redis中间件服务是基于内存的存储中间件,通常用于数据库、缓存、消息队列。
[0091]
在分布式系统架构中,redis中间件一般采用主从模式来提供服务,在对redis中间件服务进行隔离时,可以先判断当前redis中间件服务所在的节点是否为主节点,如果是主节点,则采用的服务隔离策略可以是向redis中间件服务所在的虚拟机发送隔离指令,以将主节点切换为从节点后再进行隔离,避免直接隔离主节点造成其他从节点无法正常提供服务。
[0092]
上述发送隔离指令的方式可以是通过jedis调用来实现,jedis是redis官方推荐的面向java的操作redis的客户端,提供了建立连接和发送命令等功能。除了通过jedis调用来实现,也可以自定义编码建立socket连接发送redis隔离指令,或者还可以在虚拟机隔离接口所在服务器的本地安装redis-cli命令行工具,虚拟机隔离接口调用本地redis-cli也可以达到发送隔离指令目的。具体如何实现redis隔离指令的发送,本领域技术人员可根据实际情况灵活设置,在此不做具体限定。
[0093]
具体地,对redis中间件服务进行隔离可以采用如下方式:
[0094]
(1)隔离前检查:获取redis节点信息,如果当前分片少于3个节点,则禁止继续操作;
[0095]
(2)如果当前节点是从节点,则执行shutdown操作;
[0096]
(3)如果当前节点是主节点:
[0097]
1)设置cluster-migration-barrier参数的值为2,确认设置成功;
[0098]
2)执行cluster failover命令,如果执行失败,设置当前分片主节点的hz参数的值为10,重试至成功;
[0099]
3)检查确认新的主节点完成切换;
[0100]
4)设置新的主节点的appendonly为no。
[0101]
5)恢复cluster-migration-barrier和hz参数设置。
[0102]
(4)检查集状态。
[0103]
在本技术的一个实施例中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:确定所述中间件服务是否是在dubbo框架中注册的服务;若是,则确定所述隔离策略为降低所述中间件服务所在的虚拟机的权重并下线所述中间件服务。
[0104]
本技术实施例的中间件服务的类型可以是指在dubbo框架中注册的服务,dubbo是阿里巴巴开源的基于java的高性能rpc(remote procedure call protocol,远程过程调用)分布式服务框架,能够实现服务的自动注册与发现,并能够对服务提供者进行权重配置和动态调整,以提供高性能和透明化的rpc远程服务调用方案。
[0105]
本技术实施例可以根据中间件服务的类型确定需要隔离的中间件服务中是否有在dubbo框架中注册的服务,如果有,则可以采用的服务隔离策略为先通过dubbo降低当前虚拟机作为服务提供者的权重,然后等待若干分钟后,再下线该虚拟机上部署的中间件服务,“下线”可以理解为是在dubbo的注册中心中将该虚拟机节点的状态调整为不可用,并切
断所有的长连接。
[0106]
上述的“权重”可以理解为是虚拟机在作为服务提供者时能够处理的业务请求的数量,权重越大,则能够处理的业务请求越多,提供的服务能力越强。当需要对虚拟机作为服务提供者提供的中间件服务进行隔离时,可以在dubbo中将该虚拟机作为服务提供者的权重降低为0,这样可以避免其再处理新的业务请求。
[0107]
需要说明的是,由于业务请求发送的延迟性以及处理的过程耗时,在将该虚拟机作为服务提供者的权重降低为0后,虽然不会再有新的业务请求发送到该虚拟机,但是仍然有一些已经发出但还没有达到该虚拟机的请求或者还有一些正在处理中的请求。为了避免对这些请求所对应的实际业务的处理造成影响,本技术实施例在降低虚拟机的权重后,可以在等待一段时间后再将该虚拟机提供的中间件服务下线。这里的一段时间可以是若干分钟,具体时间长短本领域技术人员也可根据实际情况灵活调整,在此不做具体限定。
[0108]
在本技术的一个实施例中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:若所述中间件服务不是在supervisor进程管理程序中托管的中间件服务,且不是redis中间件服务和在dubbo框架中注册的服务,则确定所述隔离策略为通过脚本运行平台远程执行隔离操作。
[0109]
如果目标虚拟机上部署的中间件服务既不是在supervisor进程管理程序中托管的中间件服务,也不是redis中间件服务和在dubbo框架中注册的服务,此时可以借助脚本运行平台来远程执行隔离操作。
[0110]
上述实施例通过根据中间件服务是否是在supervisor进程管理程序中托管的中间件服务,可以采取不同的隔离策略,对于在supervisor进程管理程序中托管的中间件服务,通过调用supervisor接口来对中间件服务进行隔离,可以大大提高中间件服务的隔离效率,而对于没有在supervisor中托管的其他类型的中间件服务,如redis中间件服务和dubbo框架中注册的服务等,则可以分别根据redis和dubbo框架的相关要求采取相对应的隔离策略,使得本技术的隔离方法覆盖的场景更加全面。
[0111]
在本技术的一个实施例中,在根据所述隔离策略对所述目标虚拟机上部署的中间件服务进行隔离之后,所述方法还包括:根据所述中间件服务的类型对所述虚拟机隔离结果进行检查;根据检查结果确定对所述虚拟机上的中间件服务是否隔离成功。
[0112]
在利用上述实施例的服务隔离策略分别对不同类型的中间件服务进行隔离后,为了验证隔离操作是否执行成功,这里可以根据不同类型的中间件服务,采用不同的检查策略对虚拟机隔离结果进行检查,进而可以根据检查结果确定虚拟机上的中间件服务是否隔离成功。
[0113]
本技术实施例针对上述实施例提及的四种类型的中间件服务,可以分别采用以下四种不同的检查策略:
[0114]
(1)对于在supervisor中托管的中间件服务,可以调用supervisor接口查中间件服务的状态,如果状态是stop停止状态,则认为是隔离成功;
[0115]
(2)对于redis中间件服务,可以查询redis节点的连接数量,如果连接数量为0,则认为是隔离成功;
[0116]
(3)对于在dubbo中注册的中间件服务,可以在dubbo中查询中间件服务的状态,如果状态是不可用状态,则认为是隔离成功;
[0117]
(4)对于借助脚本运行平台来执行隔离操作的中间件服务,可以执行一个脚本命令,如果无法执行,则认为是隔离成功。
[0118]
如图2所示,提供了本技术实施例的虚拟机隔离流程示意图。首先通过虚拟机隔离接口接收虚拟机隔离请求,如果虚拟机隔离请求中携带的虚拟机ip地址有多个,则按照虚拟机ip地址分别异步执行隔离操作。对于每个虚拟机,可以先在cmdb中查询其上部署的中间件服务及中间件服务的类型,然后对该虚拟机上部署的中间件服务进行隔离前检查,检查通过后则根据不同类型的中间件服务,分别调用不同的服务隔离策略,最后利用不同的服务隔离策略分别对相应的中间件服务执行隔离操作,隔离完成后利用相应的检查策略检查隔离效果,由此完成虚拟机隔离流程。
[0119]
本技术实施例还提供了一种虚拟机隔离装置400,应用于中间件平台服务器,如图4所示,提供了一种虚拟机隔离装置的结构示意图,所述装置400包括:接收单元410、第一确定单元420、第二确定单元430和隔离单元440,其中:
[0120]
接收单元410,用于通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;
[0121]
第一确定单元420,用于根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务;
[0122]
第二确定单元430,用于根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;
[0123]
隔离单元440,用于根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。
[0124]
在本技术的一个实施例中,所述第一确定单元420具体用于:根据所述虚拟机ip地址,在配置管理数据库中查询所述目标虚拟机上部署的中间件服务及所述中间件服务的类型。
[0125]
在本技术的一个实施例中,所述装置还包括:隔离前检查单元,用于对所述目标虚拟机上部署的中间件服务进行隔离前检查;第三确定单元,用于根据隔离前检查的结果确定是否执行根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略的步骤。
[0126]
在本技术的一个实施例中,所述隔离前检查单元具体用于:确定所述中间件服务所在的可用虚拟机节点的数量;若所述可用虚拟机节点的数量大于预设阈值,则确定所述隔离前检查的结果为隔离前检查通过;若所述可用虚拟机节点的数量不大于预设阈值,则确定所述隔离前检查的结果为隔离前检查未通过,并触发告警。
[0127]
在本技术的一个实施例中,所述虚拟机隔离结果包括隔离成功结果或隔离失败结果,所述隔离失败结果包括隔离前检查未通过或操作超时,所述装置还包括:第四确定单元,用于确定是否可以在预设时间内得到所述隔离成功结果或者隔离前检查未通过的结果;第五确定单元,用于若不可以,则确定所述隔离失败结果为操作超时。
[0128]
在本技术的一个实施例中,所述第二确定单元430具体用于:确定所述中间件服务是否是在supervisor进程管理程序中托管的中间件服务;若是,则确定所述隔离策略为调用supervisor接口,以通过所述supervisor接口对所述中间件服务进行隔离。
[0129]
在本技术的一个实施例中,所述第二确定单元430具体用于:若所述中间件服务的类型为redis中间件服务,则确定所述redis中间件服务所在的虚拟机是否为主节点;若是,
则确定所述隔离策略为向所述redis中间件服务所在的虚拟机发送隔离指令,以将主节点切换为从节点并停止所述redis中间件服务。
[0130]
在本技术的一个实施例中,所述第二确定单元430具体用于:确定所述中间件服务是否是在dubbo框架中注册的服务;若是,则确定所述隔离策略为降低所述中间件服务所在的虚拟机的权重并下线所述中间件服务。
[0131]
在本技术的一个实施例中,所述第二确定单元430具体用于:若所述中间件服务不是在supervisor进程管理程序中托管的中间件服务,且不是redis中间件服务和在dubbo框架中注册的服务,则确定所述隔离策略为通过脚本运行平台远程执行隔离操作。
[0132]
在本技术的一个实施例中,所述装置还包括:检查单元,用于根据所述中间件服务的类型对所述虚拟机隔离结果进行检查;第六确定单元,用于根据检查结果确定对所述虚拟机上的中间件服务是否隔离成功。
[0133]
能够理解,上述虚拟机隔离装置,能够实现前述实施例中提供的由中间件平台服务器执行的虚拟机隔离方法的各个步骤,关于虚拟机隔离方法的相关阐释均适用于虚拟机隔离装置,此处不再赘述。
[0134]
图5是本技术的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0135]
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0136]
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0137]
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成虚拟机隔离装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
[0138]
通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;
[0139]
根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务;
[0140]
根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;
[0141]
根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。
[0142]
上述如本技术图4所示实施例揭示的虚拟机隔离装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令
完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0143]
该电子设备还可执行图4中虚拟机隔离装置执行的方法,并实现虚拟机隔离装置在图4所示实施例的功能,本技术实施例在此不再赘述。
[0144]
本技术实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图3所示实施例中虚拟机隔离装置执行的方法,并具体用于执行:
[0145]
通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;
[0146]
根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务;
[0147]
根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;
[0148]
根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。
[0149]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0150]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0151]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0152]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0153]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0154]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0155]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0156]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0157]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0158]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。

技术特征:


1.一种虚拟机隔离方法,由中间件平台服务器执行,其中,所述方法包括:通过虚拟机隔离接口接收虚拟机隔离请求,其中所述虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务;根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;根据所述隔离策略对所述目标虚拟机上部署的所述中间件服务进行隔离,得到虚拟机隔离结果。2.如权利要求1所述方法,其中,所述根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务包括:根据所述虚拟机ip地址,在配置管理数据库中查询所述目标虚拟机上部署的中间件服务及所述中间件服务的类型。3.如权利要求1所述方法,其中,在根据所述虚拟机隔离请求中携带的虚拟机ip地址,确定目标虚拟机及所述目标虚拟机上部署的中间件服务之后,所述方法还包括:对所述目标虚拟机上部署的中间件服务进行隔离前检查;根据隔离前检查的结果确定是否执行根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略的步骤。4.如权利要求3所述方法,其中,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查包括:确定所述中间件服务所在的可用虚拟机节点的数量;若所述可用虚拟机节点的数量大于预设阈值,则确定所述隔离前检查的结果为隔离前检查通过;若所述可用虚拟机节点的数量不大于预设阈值,则确定所述隔离前检查的结果为隔离前检查未通过,并触发告警。5.如权利要求3所述方法,其中,所述虚拟机隔离结果包括隔离成功结果或隔离失败结果,所述隔离失败结果包括隔离前检查未通过或操作超时,所述对所述目标虚拟机上部署的中间件服务进行隔离前检查之后,所述方法还包括:确定是否可以在预设时间内得到所述隔离成功结果或者隔离前检查未通过的结果;若不可以,则确定所述隔离失败结果为操作超时。6.如权利要求1所述方法,其中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:确定所述中间件服务是否是在supervisor进程管理程序中托管的中间件服务;若是,则确定所述隔离策略为调用supervisor接口,以通过所述supervisor接口对所述中间件服务进行隔离。7.如权利要求1所述方法,其中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:若所述中间件服务的类型为redis中间件服务,则确定所述redis中间件服务所在的虚拟机是否为主节点;若是,则确定所述隔离策略为向所述redis中间件服务所在的虚拟机发送隔离指令,以
将主节点切换为从节点并停止所述redis中间件服务。8.如权利要求1所述方法,其中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:确定所述中间件服务是否是在dubbo框架中注册的服务;若是,则确定所述隔离策略为降低所述中间件服务所在的虚拟机的权重并下线所述中间件服务。9.如权利要求1所述方法,其中,所述根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略包括:若所述中间件服务不是在supervisor进程管理程序中托管的中间件服务,且不是redis中间件服务和在dubbo框架中注册的服务,则确定所述隔离策略为通过脚本运行平台远程执行隔离操作。10.如权利要求1所述方法,其中,在根据所述隔离策略对所述目标虚拟机上部署的中间件服务进行隔离之后,所述方法还包括:根据所述中间件服务的类型对所述虚拟机隔离结果进行检查;根据检查结果确定对所述虚拟机上的中间件服务是否隔离成功。11.一种虚拟机隔离装置,应用于中间件平台服务器,其中,所述装置用于实现权利要求1~10之任一所述方法。12.一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行所述权利要求1~10之任一所述方法。13.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述权利要求1~10之任一所述方法。

技术总结


本申请公开了一种虚拟机隔离方法及装置、电子设备及存储介质,由中间件平台服务器执行,该方法包括:通过虚拟机隔离接口接收虚拟机隔离请求,其中虚拟机隔离请求是指对虚拟机上部署的中间件服务进行隔离的请求;根据虚拟机隔离请求中携带的虚拟机IP地址,确定目标虚拟机及目标虚拟机上部署的中间件服务;根据中间件服务的类型,确定与所述中间件服务相对应的隔离策略;根据隔离策略对目标虚拟机上部署的中间件服务进行隔离,得到虚拟机隔离结果。本申请能够通过统一的虚拟机隔离接口对相应的虚拟机上部署的中间件服务按照不同的隔离策略进行隔离,不需要人工手动登录虚拟机进行运维处理,降低了人工操作失误的风险,提高了虚拟机运维效率。虚拟机运维效率。虚拟机运维效率。


技术研发人员:

刘海龙 赵彤 沈村敬 刘超千 强力 董俊峰

受保护的技术使用者:

网联清算有限公司

技术研发日:

2021.06.24

技术公布日:

2022/12/26

本文发布于:2024-09-21 17:26:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/48608.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   中间件   虚拟机   机上
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议