CN111913719B - 高可用软件的部署方法、设备、装置和计算机存储介质 - Google Patents

高可用软件的部署方法、设备、装置和计算机存储介质 Download PDF

Info

Publication number
CN111913719B
CN111913719B CN201910377052.3A CN201910377052A CN111913719B CN 111913719 B CN111913719 B CN 111913719B CN 201910377052 A CN201910377052 A CN 201910377052A CN 111913719 B CN111913719 B CN 111913719B
Authority
CN
China
Prior art keywords
software
configuration information
mirror image
availability
image
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
Application number
CN201910377052.3A
Other languages
English (en)
Other versions
CN111913719A (zh
Inventor
濮志平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201910377052.3A priority Critical patent/CN111913719B/zh
Publication of CN111913719A publication Critical patent/CN111913719A/zh
Application granted granted Critical
Publication of CN111913719B publication Critical patent/CN111913719B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种高可用软件的部署方法、设备、装置和计算机可读存储介质,该方法包括:生成高可用软件的通用配置信息;根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;根据所述高可用软件的镜像,部署所述高可用软件。如此,采用本发明实施例的技术方案,在每次安装部署高可用软件时,都可以根据通用配置信息得出高可用软件的镜像,并不需要修改通用配置信息;在每次安装部署高可用软件时,都可以根据统一的高可用软件的镜像实现,也就是说,针对高可用软件,实现了统一化、标准化的安装。

Description

高可用软件的部署方法、设备、装置和计算机存储介质
技术领域
本发明涉及高可用软件领域,特别涉及一种高可用软件的部署方法、设备、装置和计算机存储介质。
背景技术
目前,常见的开源高可用软件包括Keepalived,Heartbeat及红帽集群套件(RedHat Cluster Suite,RHCS)等;然而,相关技术中,对于高可用软件,无法实现统一化、标准化的安装。
发明内容
本发明实施例期望提供一种高可用软件的部署方法、设备、装置和计算机存储介质。
本发明的技术方案是这样实现的:
本发明实施例提供了一种高可用软件的部署方法,所述方法包括:
生成高可用软件的通用配置信息;
根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;
根据所述高可用软件的镜像,部署所述高可用软件。
上述方案中,所述通用配置信息包括以下至少一项:所述高可用软件的配置文件的模板、所述高可用软件的健康检查脚本的模板。
上述方案中,所述高可用软件的健康检查脚本的模板包括端口检查命令,所述端口检查命令表示检查主节点进程端口是否存在的命令。
上述方案中,所述通用配置信息包括变量,所述高可用软件的镜像包括所述通用配置信息;
相应地,所述根据所述高可用软件的镜像,部署所述高可用软件,包括:
获取所述应用容器引擎的启动命令,所述启动命令携带有所述通用配置信息的变量取值;
根据所述通用配置信息的变量取值,对所述高可用软件的镜像中所述通用配置信息的变量进行赋值,得到变量赋值后的镜像;
根据所述变量赋值后的镜像,部署所述高可用软件。
上述方案中,所述通用配置信息中的变量包括以下至少一项:工作模式、需要检查的主节点进程端口、浮动互联网协议(Internet Protocol,IP)地址。
上述方案中,所述根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像,包括:
获取第一镜像,所述第一镜像为基础镜像;通过执行所述应用容器引擎,至少将所述通用配置信息添加到所述第一镜像中,得到第二镜像;根据所述第二镜像,得到所述高可用软件的镜像。
上述方案中,所述根据所述第二镜像,得到所述高可用软件的镜像,包括:
在所述第二镜像中,通过源码编译安装所述高可用软件,得到所述高可用软件的镜像。
本发明实施例还提出了一种高可用软件的部署设备,所述设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,所述处理器用于运行所述计算机程序时,执行上述任意一种高可用软件的部署方法。
本发明实施例还提出了一种高可用软件的部署装置,所述装置包括:第一生成模块、第二生成模块和部署模块;其中,
第一生成模块,用于生成高可用软件的通用配置信息;
第二生成模块,用于根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;
部署模块,用于根据所述高可用软件的镜像,部署所述高可用软件。
本发明实施例还提出了一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任意一种高可用软件的部署方法。
本发明实施例中,首先,生成高可用软件的通用配置信息;然后,根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;最后,根据所述高可用软件的镜像,部署所述高可用软件。如此,采用本发明实施例的技术方案,在每次安装部署高可用软件时,都可以根据通用配置信息得出高可用软件的镜像,并不需要修改通用配置信息;进而,可以在每次安装部署高可用软件时,都可以根据统一的高可用软件的镜像实现,也就是说,针对高可用软件,实现了统一化、标准化的安装。
附图说明
图1为本发明实施例的高可用软件的部署方法的流程图一;
图2为本发明实施例的高可用软件的部署方法的流程图二;
图3为本发明实施例的高可用软件的部署方法的流程图三;
图4为本发明实施例中vrrp_instance区域的代码示意图;
图5为本发明实施例的高可用软件的部署设备的结构示意图;
图6为本发明实施例的高可用软件的部署装置的结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本发明实施例提供的高可用软件的部署方法包含了一系列的步骤,但是本发明实施例提供的高可用软件的部署方法不限于所记载的步骤,同样地,本发明实施例提供的高可用软件的部署装置包括了一系列模块,但是本发明实施例提供的装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
需要说明的是,以上仅仅是对本发明实施例的应用场景进行举例说明场景,本发明实施例的应用场景并不限定于上述记载的应用场景。
在相关技术中,高可用软件的安装部署都较繁琐,例如,需要完成安装(包管理工具或者源码包编译)、配置(高可用配置)、运行等工作;在高可用软件的安装配置过程中,常常遇到各种各样问题,例如,网络不允许按照,无法通过软件包管理工具yum(Yellow dogUpdater,Modified)实现安装;源码编译存在依赖包问题;配置项较多时,容易导致配置出错等问题。同时,对于多节点集群架构的软件系统,高可用软件的安装配置常常是件繁琐且重复的工作。因此,对高可用软件安装及配置方式进行优化,实现高可用软件的快速部署,将极大的减少实际项目上的时间成本及人力成本。
在相关技术中,对于高可用软件,无法提供统一化、标准化的安装方法;目前,高可用软件的安装方式包括yum安装、红帽软件包管理器(redhat package manager,rpm)安装、源码安装等,采用不同的安装方式时,软件安装目录、启动方式、支持功能等都不同,因而,无法做到统一化和标准化,不利于高可用软件前期的顺利安装及后期的维护管理。
在相关技术中,对于高可用软件,无法提供简单快速的配置方法;如针对Keepalived软件配置时,每次都需要手动修改配置文件和编写健康检查脚本;繁琐复杂的配置方式,不利于实现高可用软件的快速部署以及快速使用。
针对上述技术问题,本发明实施例提出了一种高可用软件的部署方法,可以用于实现Keepalived、Heartbeat、RHCS等高可用软件的安装部署。
基于上述记载的内容,提出以下各实施例
第一实施例
本发明实施例提出了一种高可用软件的部署方法,适用于在软件系统中实现主备切换,防止单点故障;本发明实施例的高可用软件的部署方法可以应用于高可用系统;在高可用系统中可以设置主节点和备节点,其中,主节点为当前工作的节点;当主节点出现故障或者检测不到主节点时,可以调用备节点继续工作。
图1为本发明实施例的高可用软件的部署方法的流程图一,如图1所示,该流程可以包括:
步骤101:生成高可用软件的通用配置信息。
本发明实施例中,并不对高可用软件的种类进行限定,例如,高可用软件可以是以下任意一项:Keepalived、Heartbeat、RHCS。
这里,高可用软件的通用配置信息可以包括以下至少一项:高可用软件的配置文件的模板、高可用软件的健康检查脚本的模板;高可用软件的配置文件可以表示高可用软件的配置信息,高可用软件的健康检查脚本可以用于实现主节点进程端口的检查。
实际实施时,可以将高可用软件的配置文件和健康检查脚本改写成通用模板文件,以得到高可用软件的配置文件的模板和高可用软件的健康检查脚本的模板。
步骤102:根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像。
本发明实施例中,应用容器引擎用于实现高可用软件的镜像制作;这里,并不对应用容器引擎的种类进行限定,在一个具体的示例中,应用容器引擎可以是docker容器或其他应用容器引擎。
实际应用中,可以根据应用容器引擎的相应指令,实现对通用配置信息的处理,这里,应用容器引擎的相应指令包括但不限于镜像拉取指令、镜像拷贝指令、脚本启动指令、编译安装指令等。
步骤103:根据所述高可用软件的镜像,部署所述高可用软件。
可以看出,本发明实施例中,在每次安装部署高可用软件时,都可以根据通用配置信息得出高可用软件的镜像,并不需要修改通用配置信息;进而,可以在每次安装部署高可用软件时,都可以根据统一的高可用软件的镜像实现,即,可以将高可用软件容器化,来制作标准镜像,进而可以优化高可用软件的安装方法;如此,针对高可用软件,实现了统一化、标准化的安装。
作为一种实现方式,高可用软件的健康检查脚本的模板可以包括端口检查命令,端口检查命令表示检查主节点进程端口是否存在的命令;在一个具体的示例中,端口检查命令可以是nc命令或其它可以实现主节点进程端口检查的命令。
在传统的健康检查脚本中,由于应用容器引擎与主节点环境隔离,在应用容器引擎中执行ps或netstat命令,仅可以查询到应用容器引擎内部的进程,而无法获取到主节点进程信息,也就无法得知主节点进程的存活状态;而应用容器引擎与主节点仅在网络上处于连通状态,基于此,在本发明实施例中,通过健康检查脚本的模板中的端口检查命令可以实现主节点进程端口的检查。
作为一种实现方式,对于根据应用容器引擎,对通用配置信息进行处理,得到高可用软件的镜像的实现方式,示例性地,首先,可以获取第一镜像,第一镜像为基础镜像;然后,通过执行应用容器引擎,至少将通用配置信息添加到所述第一镜像中,得到第二镜像;最后,根据第二镜像,得到高可用软件的镜像。
可以看出,本发明实施例中,可以通过执行应用容器引擎,对通用配置信息进行处理,以得到高可用软件的镜像;利用应用容器引擎隔离、抽象、可移植性等特点,可以为每次安装高可用软件的过程,预先制备统一的高可用软件的镜像,进而可以针对高可用软件,实现了统一化、标准化的安装。
本发明实施例中,第一镜像可以是操作系统镜像,这里,并不对操作系统镜像的种类进行限定,例如,操作系统镜像可以是Linux系统的各种镜像。
进一步地,还可以通过执行应用容器引擎,将通用配置信息、高可用软件的源码包等拷贝到第一镜像中,得到第二镜像;进而,可以在第二镜像中,通过源码编译安装高可用软件,得到高可用软件的镜像。
本发明实施例中,高可用软件的源码包与用户每次安装部署高可用软件时按照实际应用需求配置的信息无关,因而,根据高可用软件的源码包得到高可用软件的镜像的方式,便于后续在高可用软件的镜像的基础上,灵活地根据实际应用需求,配置变量的值,也就是说,高可用软件的安装部署方式更加灵活,可以按需配置变量的值,即,可以按需实现高可用软件的部署。
作为一种实现方式,高可用软件的通用配置信息可以包括变量,具体实施时,可以在高可用软件的配置文件的模板或健康检查脚本的模板中设置变量;变量的取值可以在高可用软件的安装部署的后续过程(如步骤103中)进行指定或赋值,如此,可以避免每次安装高可用软件时,都对高可用软件的配置文件或健康检查脚本进行修改,有利于快速部署和使用高可用软件;与相关技术中手动修改高可用软件的配置文件的方案相比,本发明实施例的变量确定方案,由于不需要更改通用配置信息,只需要统一的高可用软件的镜像的基础上,通过变量指定或赋值,便可以实现高可用软件的灵活部署,因而,实现更为方便、简单和快捷。
作为一种实现方式,高可用软件的镜像包括所述通用配置信息;相应地,对于根据所述高可用软件的镜像,部署所述高可用软件的实现方式,示例性地,可以获取应用容器引擎的启动命令,启动命令携带有通用配置信息的变量取值;根据通用配置信息的变量取值,对所述高可用软件的镜像中所述通用配置信息的变量进行赋值,得到变量赋值后的镜像;根据所述变量赋值后的镜像,部署所述高可用软件。
实际实施时,上述通用配置信息中的变量包括以下至少一项:工作模式、需要检查的主节点进程端口、IP地址。
可以看出,本发明实施例中,在应用容器引擎的启动命令中指定通用配置信息的变量,即,可以在容器启动时,实现变量指定,从而,可以实现高可用软件的灵活部署。
实际应用中,步骤101至步骤103可以由处理器等实现,上述处理器可以为特定用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal ProcessingDevice,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。
第二实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
本发明第二实施例中,高可用软件为Keepalived软件,应用容器引擎为docker容器;在部署高可用软件时,通过对Keepalived软件进行docker容器化,利用docker容器具有隔离、抽象、可移植性等特点,可以实现统一化、标准化的安装及简单快速的配置;也就是说,本发明实施例中,提出了一种基于docker容器与Keepalived软件实现系统高可用的方法,可以将Keeplived容器化来实现软件的快速部署及高可用的快速配置。
图2为本发明实施例的高可用软件的部署方法的流程图二,如图2所示,首选根据预先编写的dockerfile文件制作Keepalived镜像(Images);采用docker启动(run)命令启动Keepalived容器(Containers),并在docker run命令中指定变量来完成高可用配置,变量可以包括:工作模式(work_mode)、需要监听的服务端口(port)、vip(用于指定浮动IP地址)等;其中,work_mode的值为master或slave,用于指定工作节点为主节点或者备节点;图2中,需要监听的服务端口为主节点上的服务端口1、服务端口2和服务端口3,主节点和备节点的Keepalived容器可以基于虚拟路由冗余协议(Virtual Router RedundancyProtocol,VRRP)实现通信。
参照图2,高可用的实现主要是通过track_script健康检查脚本实现服务端口监听,若主节点上监听端口不存在则降低主节点的priority值,使其低于备节点的priority值,这里,priority值表示优先级,实际实施时,可以比较主节点和备节点的priority值,然后选取priority值较高的节点作为工作节点;因此,当主节点的priority值低于备节点的priority值时,可以使主节点变为备节点,备节点变为主节点。
本发明实施例中,Keepalived的容器化不仅可以提供标准化的容器安装使用方法,而且可以通过容器启动时的变量来进行快速配置,从而省去了手动修改配置的工作,实现快速配置。
图3为本发明实施例的高可用软件的部署方法的流程图三,如图3所示,高可用软件的部署方法可以包括模板文件编写、镜像制作、安装部署这三部分,下面分别对这三部分的具体实现方式进行示例性说明。
1、模板文件编写
采用Keepalived软件实现系统高可用,主要在于手动修改配置文件及编写健康检查脚本;在实际实施时,可以将配置文件及健康检查脚本改写成通用模板文件,在模板文件中采用变量来进行配置,变量值由后续容器启动时来指定,以避免每次都需手动修改配置。
配置文件的模板中主要包括以下两块配置区域:vrrp_script区域,vrrp_instance区域。
1)vrrp_script区域:用于做健康检查(可以检查主节点进程端口是否存在)的配置信息,当检查失败时会将vrrp_instance区域的priority值减少相应的值。
2)vrrp_instance区域:用来定义对外提供服务的vip区域,并采用变量进行配置;图4为本发明实施例中vrrp_instance区域的代码示意图,需要说明的是,图4仅仅是示例性地说明了vrrp_instance区域的内容,本发明实施例中,vrrp_instance区域的内容并不局限于图4所示的内容。
下面对图4中的相应变量进行说明。
{{INTERFACE}}:用于指定虚拟IP绑定的网卡,如eth0,eth1等。
{{VIRTUAL_ROUTER_ID}}:用于虚拟路由器的标识,范围:0-225,互为主备的节点,身份标识(ID)是相同的。
{VIRTUAL_IPADDRESS}}:用于指定虚拟IP地址。
{{MASTER_IP}}:用于指定主节点IP地址。
{{SLAVE_IP}}:用于指定备节点IP地址。
健康检查脚本的模板中,可以采用nc命令来检查宿主机(即主节点)上进程端口是否存在;考虑到docker容器与宿主机环境隔离,在容器中执行ps或netstat命令,仅能查询到容器内部的进程,无法获取到宿主机进程信息。而容器和宿主机只在网络上连通,因而,通过nc命令可以实现端口检查。一个示例性的nc命令为:nc-vz 127.0.0.1$PORT;其中{{PORT}}:用于指定需要检测的主节点进程端口号。
2、镜像制作
结合图2,镜像制作主要包括dockerfile文件及启动脚本编写,在编写dockerfile文件和启动脚本后,可以通过执行docker建立(build)命令即可完成镜像制作。
dockerfile文件包含一组指令(例如FROM,ADD,RUN等),用于指示docker容器如何制作镜像;具体镜像制作步骤可以包括:
步骤一,拉取基础镜像,在具体实现时,FROM指令指定了使用的基础镜像;在一个示例中,可以选用Alpine作为基础镜像,Alpine是一个面向安全应用的轻量级Linux发行版镜像,特点是轻巧(几十兆)且有完整的包管理工具(APK)。
步骤二,将本地文件拷贝至镜像中;在具体实现时,ADD指令将Keepalived软件源码包、配置文件的模板、健康检查脚本的模板、启动脚本等拷贝至基础镜像中。
步骤三,采用源码编译安装Keepalived软件;在具体实现时,RUN指令用来在镜像中执行命令安装Keepalived软件。
步骤四,完成镜像制作;在具体实现时,ENTRYPOINT指令用来容器启动时执行启动脚本,CMD指令设置启动脚本的参数。
在本发明的一些实施例中,基于ENTRYPOINT指令执行启动脚本,可以实现Keepalived配置的配置及启动工作;执行启动脚本时,首先,接收docker run命令中指定的变量值,并通过sed命令替换掉配置文件的模板及健康检查脚本的模板中的变量;然后,启动Keepalived容器,读取到变量替换后的配置文件和健康检查脚本。
进一步地,在读取到变量替换后的配置文件和健康检查脚本后,还可以通过执行循环语句,以确保启动脚本始终在执行中(若启动脚本执行完毕的话,容器会自动关闭)。
在一个具体的示例中,制作镜像使用的docker build命令的格式可以为:dockerbuild[OPTIONS]<PATH|URL|->;例如,一个具体的docker build命令为:docker build-tKeepalived。
结合图2,对于制作好的镜像,可以使用docker推送(push)命令将镜像推送至私有或公有的docker仓库;图2中,docker registry用于搭建docker仓库。
3、安装部署
Keepalived软件的安装部署可以分为拉取镜像和启动容器两部分,下面分别进行示例说明。
1)拉取镜像;
在具体实现时,结合图2,可以通过执行docker拉取(pull)命令从镜像仓库(即上述私有或公有的docker仓库)中拉取或更新指定镜像,以得到Keepalived软件的镜像。
在一个具体的示例中,docker pull命令的格式为:
docker pull仓库地址/项目名称/镜像名称:镜像版本号
2)启动容器;
在具体实现时,结合图2,可以通过执行docker run命令利用拉取的镜像创建并启动Keepalived容器。
docker run命令的一个具体的示例为:
docker run-d--net=host
--ulimit nofile=65535:65535
--privileged=true
-e"WORK_MODE=$WORK_MODE"
-e"PORT=$PORT"
-e"VIRTUAL_ROUTER_ID=$VIRTUAL_ROUTER_ID"
-e"VIRTUAL_IPADDRESS=$VIRTUAL_IPADDRESS"
-e"INTERFACE=$INTERFACE"
-e"MASTER_IP=$MASTER_IP"
-e"SLAVE_IP=$SLAVE_IP"
--name$CONTAINER_NAME$IMAGE_ID
在上述docker run命令的具体示例中,-net选项来指定Keepalived容器使用host模式启动,--privileged=true选项来使容器用户获取宿主机的所有权限,这样容器将不会生成自己的虚拟网卡,而是和宿主机共用一个网络命名空间(Network Namespace),同时容器中Keepalived也具有了操作宿主机权限的操作,用于实现浮动IP的漂移。
-e选项用于设置变量值;如WORK_MODE可设置为master或slave;当Keepalived工作在主节点时,设置WORK_MODE=master;当Keepalived工作在备节点时,设置WORK_MODE=slave。
本发明实施例中,首先,通过制作Keepalived软件的镜像,将Keepalived软件的安装部署方法进行了统一化和标准化,后续在高可用实施中,只需要拉取镜像,无需重新安装,解决了无法统一化安装的问题;然后,通过启动容器时指定变量值来进行快速配置。利用容器的特点优势将传统高可用软件的部署方式(编译安装-〉配置-〉运行)简化成了获取镜像和启动容器两步,很好的实现高可用软件的安装及快速配置问题。
第三实施例
基于前述实施例提出的高可用软件的部署方法的基础上,本发明第三实施例提出了一种高可用软件的部署设备。
图5为本发明实施例的高可用软件的部署设备的结构示意图,如图5所示,该设备包括处理器501和用于存储能够在处理器上运行的计算机程序的存储器502,处理器501用于运行所述计算机程序时,执行上述任意一种高可用软件的部署方法。
在实际应用中,上述存储器502可以是易失性存储器(volatile memory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(non-volatilememory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器501提供指令和数据。
上述处理器501可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
第四实施例
基于前述实施例提出的一种高可用软件的部署方法,本发明第四实施例提出了一种高可用软件的部署装置。
图6为本发明实施例的高可用软件的部署装置的结构示意图,如图6所示,该装置包括:第一生成模块601、第二生成模块602和部署模块603;其中,
第一生成模块601,用于生成高可用软件的通用配置信息;
第二生成模块602,用于根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;
部署模块603,用于根据所述高可用软件的镜像,部署所述高可用软件。
示例性地,所述通用配置信息包括以下至少一项:所述高可用软件的配置文件的模板、所述高可用软件的健康检查脚本的模板。
示例性地,所述高可用软件的健康检查脚本的模板包括端口检查命令,所述端口检查命令表示检查主节点进程端口是否存在的命令。
示例性地,所述通用配置信息包括变量,所述高可用软件的镜像包括所述通用配置信息;
相应地,所述部署模块603,具体用于获取所述应用容器引擎的启动命令,所述启动命令携带有所述通用配置信息的变量取值;
根据所述通用配置信息的变量取值,对所述高可用软件的镜像中所述通用配置信息的变量进行赋值,得到变量赋值后的镜像;
根据所述变量赋值后的镜像,部署所述高可用软件。
示例性地,所述通用配置信息中的变量包括以下至少一项:工作模式、需要检查的主节点进程端口、浮动IP地址。
示例性地,所述第二生成模块602,具体用于获取第一镜像,所述第一镜像为基础镜像;通过执行所述应用容器引擎,至少将所述通用配置信息添加到所述第一镜像中,得到第二镜像;根据所述第二镜像,得到所述高可用软件的镜像。
示例性地,所述第二生成模块602,具体用于在所述第二镜像中,通过源码编译安装所述高可用软件,得到所述高可用软件的镜像。
在实际应用中,所述第一生成模块601、第二生成模块602和部署模块603均可由位于高可用软件的部署装置中的处理器实现;上述处理器可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
第五实施例
本发明第五实施例提出了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现本发明前述实施例中任意一种高可用软件的部署方法。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (9)

1.一种高可用软件的部署方法,其特征在于,所述方法包括:
生成高可用软件的通用配置信息;
根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;所述通用配置信息包括变量,所述高可用软件的镜像包括所述通用配置信息;
获取所述应用容器引擎的启动命令,所述启动命令携带有所述通用配置信息的变量取值;
根据所述通用配置信息的变量取值,对所述高可用软件的镜像中所述通用配置信息的变量进行赋值,得到变量赋值后的镜像;
根据所述变量赋值后的镜像,部署所述高可用软件。
2.根据权利要求1所述的方法,其特征在于,所述通用配置信息包括以下至少一项:所述高可用软件的配置文件的模板、所述高可用软件的健康检查脚本的模板。
3.根据权利要求2所述的方法,其特征在于,所述高可用软件的健康检查脚本的模板包括端口检查命令,所述端口检查命令表示检查主节点进程端口是否存在的命令。
4.根据权利要求1所述的方法,其特征在于,所述通用配置信息中的变量包括以下至少一项:工作模式、需要检查的主节点进程端口、浮动互联网协议IP地址。
5.根据权利要求1或2所述的方法,其特征在于,所述根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像,包括:
获取第一镜像,所述第一镜像为基础镜像;通过执行所述应用容器引擎,至少将所述通用配置信息添加到所述第一镜像中,得到第二镜像;根据所述第二镜像,得到所述高可用软件的镜像。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第二镜像,得到所述高可用软件的镜像,包括:
在所述第二镜像中,通过源码编译安装所述高可用软件,得到所述高可用软件的镜像。
7.一种高可用软件的部署设备,其特征在于,所述设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,所述处理器用于运行所述计算机程序时,执行上述权利要求1至6任一项所述的方法。
8.一种高可用软件的部署装置,其特征在于,所述装置包括:第一生成模块、第二生成模块和部署模块;其中,
第一生成模块,用于生成高可用软件的通用配置信息;
第二生成模块,用于根据应用容器引擎,对所述通用配置信息进行处理,得到所述高可用软件的镜像;所述通用配置信息包括变量,所述高可用软件的镜像包括所述通用配置信息;
部署模块,用于获取所述应用容器引擎的启动命令,所述启动命令携带有所述通用配置信息的变量取值;
根据所述通用配置信息的变量取值,对所述高可用软件的镜像中所述通用配置信息的变量进行赋值,得到变量赋值后的镜像;
根据所述变量赋值后的镜像,部署所述高可用软件。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的方法。
CN201910377052.3A 2019-05-07 2019-05-07 高可用软件的部署方法、设备、装置和计算机存储介质 Active CN111913719B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910377052.3A CN111913719B (zh) 2019-05-07 2019-05-07 高可用软件的部署方法、设备、装置和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910377052.3A CN111913719B (zh) 2019-05-07 2019-05-07 高可用软件的部署方法、设备、装置和计算机存储介质

Publications (2)

Publication Number Publication Date
CN111913719A CN111913719A (zh) 2020-11-10
CN111913719B true CN111913719B (zh) 2022-12-13

Family

ID=73242490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910377052.3A Active CN111913719B (zh) 2019-05-07 2019-05-07 高可用软件的部署方法、设备、装置和计算机存储介质

Country Status (1)

Country Link
CN (1) CN111913719B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988462A (zh) * 2021-02-08 2021-06-18 同盾科技有限公司 容器镜像中心和容器镜像中心运行方法
CN112929265A (zh) * 2021-02-08 2021-06-08 上海弘积信息科技有限公司 一种任何节点将vrrp任意节点实时置主的方法
CN114416109B (zh) * 2021-12-15 2023-01-10 广州市玄武无线科技股份有限公司 程序部署方法及其装置、计算机设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
CN108228201A (zh) * 2017-12-28 2018-06-29 广州亦云信息技术股份有限公司 基于软件仓库的软件管理方法、电子设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
CN108228201A (zh) * 2017-12-28 2018-06-29 广州亦云信息技术股份有限公司 基于软件仓库的软件管理方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN111913719A (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
US11212286B2 (en) Automatically deployed information technology (IT) system and method
US7330967B1 (en) System and method for injecting drivers and setup information into pre-created images for image-based provisioning
WO2021217871A1 (zh) 微服务集群部署方法、装置、计算机设备及存储介质
RU2417415C2 (ru) Способ и система развертывания программного обеспечения, сервер развертывания программного обеспечения и пользовательский сервер
CN111913719B (zh) 高可用软件的部署方法、设备、装置和计算机存储介质
US9465625B2 (en) Provisioning of operating environments on a server in a networked environment
US8935216B2 (en) Automated computing appliance cloning or migration
US20100306337A1 (en) Systems and methods for cloning target machines in a software provisioning environment
US20140129819A1 (en) Cloud cluster system and boot deployment method for the same
US20080005344A1 (en) Method and system for configuring a network device using a template
US20040088397A1 (en) System and method for management of software applications
JP2009122963A (ja) デプロイ方法およびシステム
CN111538625B (zh) 基于Docker技术的Ambari集群部署、数据备份方法及电子设备
MX2010012247A (es) Ambiente de recuperacion reutilizable.
CN112631614B (zh) 应用部署方法、装置、计算机设备和存储介质
CN111949276B (zh) 一种基于容器方式自动部署应用程序的系统及方法
US20210392039A1 (en) Automated Initialization Of Bare Metal Servers
US11567672B2 (en) Data and configuration integrity checking post-rollback using backups in virtualized computing environments
US20230025529A1 (en) Apparatus and method for managing a distributed system with container image manifest content
van der Burg et al. A self-adaptive deployment framework for service-oriented systems
Khalel et al. Enhanced load balancing in kubernetes cluster by minikube
CN115344273A (zh) 一种基于货架系统来运行应用软件的方法及系统
CN116339926B (zh) 一种ats软件的容器化部署方法
CN117112144B (zh) 一种在android系统上部署k3s的方法及系统、存储介质
US11645158B2 (en) Automated rollback in virtualized computing environments

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