本发明涉及计算机集群技术领域,特别是涉及一种基于云管理平台实现业务高可用的方法、装置、设备以及计算机可读存储介质。
背景技术:
随着云计算及大数据快速发展,新的技术框架层出不穷,kubernetes(k8s)应运而生。它是一个全新的基于容器技术的分布式架构,建立在docker技术之上,为容器化的应用提供了资源调度、部署运行、服务发现和扩容缩容等丰富多样的功能。同时k8s是一个开放的平台,供社区用户直接参与应用和开发的框架。k8s的重要的特点是自动化,自动化是指能够实现自动部署,自动重启,自动复制,自动伸缩/扩展。
icm(incloudmanager)是基于k8s开发的云管理平台,具有与k8s一致的特征,能够实现自动部署、自动重启、自动复制、自动伸缩或扩展,因此为icm平台应用的部署提供了极大的方便。平台的高可用是非常重要的,一旦因为某些应用pod或某些部署节点挂掉,服务无法访问将带来严重的后果。
以3个节点为例,现有k8s部署集群中1个节点设置为master,2个节点设置为node,从而实现k8s的高可用性。一旦master节点挂掉后整个集群将崩溃,运行的每个应用pod将无法正常提供服务。icm是基于k8s的云管平台运行着很多业务应用的pod,一旦节点master挂掉后整个集群将无法提供服务。
综上所述可以看出,如何在k8s集群master节点故障时保证icm业务的稳定性是目前有待解决的问题。
技术实现要素:
本发明的目的是提供一种基于云管理平台实现业务高可用的方法、装置、设备以及计算机可读存储介质,以解决现有技术中master节点的宕机会导致整个k8s集群崩溃,运行的每个应用pod无法正常提供服务的问题。
为解决上述技术问题,本发明提供一种基于云管理平台实现业务高可用的方法,包括:将k8s集群中的多个部署节点同时配置为master节点和node节点,并将k8s集群的虚拟ip配置在安装部署文件中;在每个部署节点上运行apiserver、controllermanager、scheduler三个组件,以便所述controllermanager通过所述apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,利用所述scheduler将所述异常部署节点的资源调度至目标部署节点上;当检测到所述异常部署节点时,利用keepalive及负载均衡机制,通过所述虚拟ip对所述部异常署节点的资源进行调度。
优选地,所述将k8s集群中的多个部署节点同时配置为master节点和node节点包括:
通过修改inventory配置文件,将所述k8s集群中的多个部署节点同时配置为master节点和node节点。
优选地,还包括:将所述各个部署节点中redis任务pod创建为多副本运行。
优选地,所述将所述各个部署节点中redis任务pod创建为多副本运行包括:
通过k8s反亲和配置将所述redis任务pod的多个副本部署至不同的部署节点上。
优选地,所述将所述各个部署节点中redis任务pod创建为多副本运行后包括:
在所述各个部署节点中创建deployment,通过所述deployment管理所述各个部署节点中redis任务pod的多个副本。
优选地,所述当检测到所述异常部署节点时,利用keepalive及负载均衡机制,通过所述虚拟ip对所述部异常署节点的资源进行调度包括:
当所述虚拟ip落在所述异常部署节点时,在所述keppalive组件通过vrrp算法在其他部署节点中决策备用主节点,以便所述虚拟ip漂移至所述备用主节点上;
通过所述负载均衡机制对所述异常部署节点的资源进行调度。
本发明还提供了一种基于云管理平台实现业务高可用的装置,包括:
配置模块,用于将k8s集群中的多个部署节点同时配置为master节点和node节点,并将k8s集群的虚拟ip配置在安装部署文件中;
运行模块,用于在每个部署节点上运行apiserver、controllermanager、scheduler三个组件,以便所述controllermanager通过所述apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,利用所述scheduler将所述异常部署节点的资源调度至目标部署节点上;
资源调度模块,用于当检测到所述异常部署节点时,利用keepalive及负载均衡机制,通过所述虚拟ip对所述部异常署节点的资源进行调度。
优选地,还包括:
创建单元,用于将所述各个部署节点中redis任务pod创建为多副本运行。
本发明还提供了一种基于云管理平台实现业务高可用的设备,包括:
存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于云管理平台实现业务高可用的方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于云管理平台实现业务高可用的方法的步骤。
本发明所提供的基于云管理平台实现业务高可用的方法,将k8s集群中的多个部署节点同时配置为master节点和node节点;将k8s集群的虚拟ip配置在安装部署文件中。并且apiserver、controllermanager、scheduler会分别在所述多个部署节点上各自运行一个任务。在每个部署节点中,controllermanager通过apiserver提供的接口对其他部署节点的状态进行监控;当controllermanager检测到状态为notready的异常部署节点时,利用scheduler将所述异常部署节点的资源调度至其他部署节点上。现有的k8s集中仅有master节点中运行有apiserver、controllermanager、scheduler三个组件,现有k8s集群中master节点故障后,无法再对正常控制、调度和提供接口。而本发明将多个部署节点全部设置为master节点,同时又全部设置为node节点,这样其中任何一个部署节点机器挂掉,可以利用备用主节点进行正常控制、调度和提供接口,通过调度后资源被调度到状态为ready的部署节点上,pod可以正常提供服务,大大提高了icm业务的稳定性,实现了业务高可用。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的基于云管理平台实现业务高可用的方法的第一种具体实施例的流程图;
图2为本发明所提供的基于云管理平台实现业务高可用的方法的第二种具体实施例的流程图;
图3为本发明实施例提供的一种基于云管理平台实现业务高可用的装置的结构框图。
具体实施方式
本发明的核心是提供一种基于云管理平台实现业务高可用的方法、装置、设备以及计算机可读存储介质,通过将k8s集群节点同时部署为master与node,实现了icm业务的高可用,大大提高了icm业务的稳定性。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的基于云管理平台实现业务高可用的方法的第一种具体实施例的流程图;具体操作步骤如下:
步骤s101:将k8s集群中的多个部署节点同时配置为master节点和node节点,并将k8s集群的虚拟ip配置在安装部署文件中;
在本实施例中,通过inventroy.ini配置节点,从而使所述k8s集群中的多个部署节点既是master节点又是node节点。
当部署节点关闭或挂掉时,该部署节点的运行状态由ready变为notready,运行在部署该节点上的pod状态变为terminating。
步骤s102:在每个部署节点上运行apiserver、controllermanager、scheduler三个组件,以便所述controllermanager通过所述apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,利用所述scheduler将所述异常部署节点的资源调度至目标部署节点上;
在每个部署节点中部署pod,apiserver、controllermanager、scheduler会分别在各个部署节点上各自运行一个任务,负责对本部署节点上的pod的生命周期进行管理与服务代理的功能。
所述apiserver提供了集群管理的restapi接口,包括认证授权、数据校验以及集群状态变更;提供其他模块之间的数据交互和通信的枢纽,其他模块通过apiserver查询或修改数据,只有apiserver才直接操作etcd。所述apiserver是资源配额控制的入口,拥有完备的集群安全机制。
所述controllermanager作为集群内部的管理控制中心,负责集群内的node、pod副本、服务端点(endpoint)、命名空间(namespace)、服务账号(serviceaccount)、资源定额(resourcequota)的管理,当某个node意外宕机时,controllermanager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
所述scheduler(调度器)负责接收controllermanager创建新的pod,为其安排一个落脚的目标node;安置工作完成后,目标node上的kubelet服务进程接管后继工作。
需要说明的是,在本发明所提供的其他实施例中,可根据实际需求在所述各个部署节点运行kubelet、proxy、kubernetesdockerdaemon等组件;
步骤s103:当检测到所述异常部署节点时,利用keepalive及负载均衡机制,通过所述虚拟ip对所述部异常署节点的资源进行调度。
若所述虚拟ip未落在所述异常部署节点上,则通过keepalive和负载均衡机制,并通过虚拟ip对所述异常部署节点上的资源进行调度。若所述虚拟ip落在所述异常部署节点上,则所述虚拟ip会飘移至其他的部署节点上(备用主节点),之后再利用所述keepalive和所述负载均衡机制,并通过虚拟ip所在的部署节点对所述异常部署节点上的资源进行调度。在本实施例中,由于所述多个部署节点既是master节点,又是node节点,因此每个部署节点中的controllermanager均会通过apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,通过scheduler将所述异常部署节点中资源调度至运行状态为ready的部署节点中,从而提高了业务稳定性。
基于上述实施例,在本实施例中,通过集群配置文件将k8s集群中多个部署节点同时设置为master与node之后,将所述部署节点中重要应用业务pod创建为多副本,不仅可以有效防止集群节点故障导致业务中断的情况,也可以有效防止某些服务pod挂掉导致业务出现中断的情况。
请参考图2,图2为本发明所提供的基于云管理平台实现业务高可用的方法的第二种具体实施例的流程图;具体操作步骤如下:
步骤s201:通过修改inventory配置文件,将k8s集群中的多个部署节点同时配置为master节点和node节点,并将k8s集群的虚拟ip配置在安装部署文件中;
通过修改inventory.ini文件master节点和node节点的双重身份,即部署节点既要作为控制节点,也要作为工作节点,这样可以实现部署节点某台宕机后业务能够正常运行。
步骤s202:在每个部署节点上运行apiserver、controllermanager、scheduler三个组件,以便所述controllermanager通过所述apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,利用所述scheduler将所述异常部署节点的资源调度至目标部署节点上;
步骤s203:当所述虚拟ip落在所述异常部署节点时,在keepalive组件通vrrp算法在其他部署节点中决策备用主节点,以便所述虚拟ip漂移至所述备用主节点,通过负载均衡机制对所述异常部署节点中的资源进行调度;
所述keepalive组件为所述k8s集群中的一个组件,vrrp(优先级选举)算法为所述keepalive组件中的一种算法;虚拟ip漂移是通过所述keepalive组件的vrrp算法实现的。
步骤s204:通过k8s反亲和配置将所述各个部署节点中redis任务pod的多个副本部署至不同的部署节点上;
现有技术中正常情况下任务副本数默认为1,如果将该任务删除掉或者意外情况重启后,服务状态出现0/1。而在本实施例中,将redis任务创建为多副本,其默认副本数量可以通过实际情况设置,系统会自动创建多个相同的redis任务,如果任务出现异常关闭或删除操作后,其余副本继续执行,不会影响业务。
通过修改某些重要业务pod的副本数,实现重要业务模块的多副本运行,从而实现某些pod删除或者重启后都不会影响业务的正常执行。
为了避免同一redis业务pod的多个副本同时部署在一个集群节点中,而该节点挂掉后,导致该redis业务无法继续提供服务,本实施例通过k8s的反亲和配置将同一redis业务pod的副本部署在多个不同的集群节点上,无论是节点宕机还是业务pod删除或重启均不会影响到该业务运行。
步骤s205:在所述各个部署节点中创建deployment,通过所述deployment管理所述各个部署节点中redis任务pod的多个副本。
本实施为了风险降到最低,将集群节点同时配置为master与node的高可用方法与提高redis任务副本数的方法进行合并。高可用方法扩大了集群“大脑”的主体,无论哪台机器故障宕机其他大脑均可以正常运行,提高redis任务副本数的方法扩大了业务pod的备份,无论哪个pod删除或者重启业务均可以正常运行,综上无论是节点宕机还是业务pod删除或重启均不会影响到业务,极大提高了icm业务的稳定性,为故障的恢复增加了可操作时间。
请参考图3,图3为本发明实施例提供的一种基于云管理平台实现业务高可用的装置的结构框图;具体装置可以包括:
配置模块100,用于将k8s集群中的多个部署节点同时配置为master节点和node节点,并将k8s集群的虚拟ip配置在安装部署文件中;
运行模块200,用于在每个部署节点上运行apiserver、controllermanager、scheduler三个组件,以便所述controllermanager通过所述apiserver提供的接口对其他部署节点的状态进行监控,并在检测到状态为notready的异常部署节点时,利用所述scheduler将所述异常部署节点的资源调度至目标部署节点上;
资源调度模块,用于当检测到所述异常部署节点时,利用keepalive及负载均衡机制,通过所述虚拟ip对所述部异常署节点的资源进行调度。
本实施例的基于云管理平台实现业务高可用的装置用于实现前述的基于云管理平台实现业务高可用的方法,因此基于云管理平台实现业务高可用的装置中的具体实施方式可见前文中的基于云管理平台实现业务高可用的方法的实施例部分,例如,配置模块100,运行模块200,资源调度模块300,分别用于实现上述基于云管理平台实现业务高可用的方法中步骤s101,s102和s103,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
本发明具体实施例还提供了一种基于云管理平台实现业务高可用的设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于云管理平台实现业务高可用的方法的步骤。
本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于云管理平台实现业务高可用的方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于云管理平台实现业务高可用的方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。