CN113973130A - 一种基于haproxy的服务平滑发布方法及相关装置 - Google Patents

一种基于haproxy的服务平滑发布方法及相关装置 Download PDF

Info

Publication number
CN113973130A
CN113973130A CN202111400978.3A CN202111400978A CN113973130A CN 113973130 A CN113973130 A CN 113973130A CN 202111400978 A CN202111400978 A CN 202111400978A CN 113973130 A CN113973130 A CN 113973130A
Authority
CN
China
Prior art keywords
service
new
haproxy
current
mapping request
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.)
Pending
Application number
CN202111400978.3A
Other languages
English (en)
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.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity 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 DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202111400978.3A priority Critical patent/CN113973130A/zh
Publication of CN113973130A publication Critical patent/CN113973130A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种基于haproxy的服务平滑发布方法、装置、设备及计算机可读存储介质,该方法包括通过haproxy将当前服务节点上的服务设置为耗尽状态,使当前服务节点上的服务仅处理已接收的映射请求;来自haproxy的新映射请求由其他服务节点上的服务接收并处理;判断当前服务节点上的服务是否处理完成已接收的映射请求;若处理完成已接收的映射请求,则杀死当前服务节点上的服务的进程,并在当前服务节点上启动新服务;判断当前服务节点上的新服务是否通过健康检查;若通过健康检查,则将新服务设置为就绪状态。该方法能够在服务发布阶段不影响用户的使用,同时能够简化发布操作,实现半自动化平滑发布。

Description

一种基于haproxy的服务平滑发布方法及相关装置
技术领域
本申请涉及服务研发技术领域,特别涉及一种基于haproxy的服务平滑发布方法;还涉及一种基于haproxy的服务平滑发布装置、设备以及计算机可读存储介质。
背景技术
对于应用来说,面对市场不断变化的需求,系统也需要不断的进行迭代上线,传统的上线方式是暂停服务后更新上线,对于小版本迭代或者线上bug的修复而言,这无疑不是最好的解决方案。为了在服务发布时仍然可以正常对外提供服务,以实现用户无感知的服务发布与升级。目前提供了一些解决方案及思路,例如:基于nginx的健康检查与动态负载均衡实现,其基本逻辑是通过修改nginx的配置,把要发布的服务从upstream剔除,然后重新构建部署重启服务,启动成功之后,再将该服务重新加入upstream。该方案涉及到配置文件的修改,及配置的重新加载操作,需要手动执行reload命令,相对来说还比较笨重,在高负载的情况下对nginx重启会导致性能降低并进一步增加系统的负载。
有鉴于此,如何在服务发布阶段不影响用户的使用,同时能够简化发布操作,实现半自动化平滑发布已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种基于haproxy的服务平滑发布方法,能够在服务发布阶段不影响用户的使用,实现服务平滑发布的同时能够简化发布操作。本申请的另一个目的是提供一种基于haproxy的服务平滑发布装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种基于haproxy的服务平滑发布方法,包括:
通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;
判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
判断所述当前服务节点上的所述新服务是否通过健康检查;
若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
可选的,所述判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求包括:
获取所述当前服务节点中的所述服务的会话数;
若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
可选的,所述判断所述当前服务节点上的所述新服务是否通过健康检查包括:
获取所述新服务的状态值;
若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
可选的,还包括:
将所述新服务设置为就绪状态后,通过所述haproxy根据负载均衡策略发送映射请求到所述服务节点。
可选的,还包括:
从所述haproxy获取所述新服务。
为解决上述技术问题,本申请还提供了一种基于haproxy的服务平滑发布装置,包括:
第一设置模块,用于通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;
第一判断模块,用于判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
启动模块,用于若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
第二判断模块,用于判断所述当前服务节点上的所述新服务是否通过健康检查;
第二设置模块,用于若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
可选的,所述第一判断模块包括:
第一获取单元,用于获取所述当前服务节点中的所述服务的会话数;
第一判定单元,用于若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
可选的,所述第二判断模块包括:
第二获取单元,用于获取所述新服务的状态值;
第二判定单元,用于若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
为解决上述技术问题,本申请还提供了一种基于haproxy的服务平滑发布设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的基于haproxy的服务平滑发布方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的基于haproxy的服务平滑发布方法的步骤。
本申请所提供的基于haproxy的服务平滑发布方法,包括:通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;判断所述当前服务节点上的所述新服务是否通过健康检查;若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
可见,本申请所提供的基于haproxy的服务平滑发布方法,当服务节点进行服务发布时,首先通过haproxy将该服务节点上的服务设置为耗尽状态,使其仅处理已接收的映射请求,而不再接收新映射请求,新映射请求则由其他服务节点接收并处理,由此可以确保在服务发布阶段不会影响用户使用,实现用户无感知的服务发布与升级。当服务节点处理完成已接收的映射请求之后才杀死旧的服务的进程,并启动新服务,可以保证服务下线时流量已处理完成。当服务节点上的新服务通过健康检查后才将其设置为就绪状态,此后能够接收流量进行处理,可以保证服务上线时服务启动完全才接收流量进行处理。由此,可以实现服务的平滑发布。同时,haproxy的配置简单,拥有良好的健康检查与状态监控功能,本申请借助haproxy实现服务平滑发布,可以有效的简化服务发布操作。
本申请所提供的基于haproxy的服务平滑发布装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种基于haproxy的服务平滑发布方法的流程示意图;
图2为本申请实施例所提供的另一种基于haproxy的服务平滑发布方法的流程示意图;
图3为本申请实施例所提供的一种基于haproxy的服务平滑发布装置的示意图;
图4为本申请实施例所提供的一种基于haproxy的服务平滑发布设备的示意图。
具体实施方式
本申请的核心是提供一种基于haproxy的服务平滑发布方法,能够在服务发布阶段不影响用户的使用,实现服务平滑发布的同时能够简化发布操作。本申请的另一个核心是提供一种基于haproxy服务平滑发布装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种基于haproxy的服务平滑发布方法的流程示意图,参考图1所示,该方法主要包括:
S101:通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;
具体的,本申请所提供的服务平滑发布方法基于haproxy实现。在nginx和服务之间引入一层haproxy。流量通过nginx转发到haproxy,然后经由haproxy负载均衡至各个服务。
例如,upstream中配置可以如下:
Figure BDA0003364857610000051
haproxy的haproxy.conf中需要对负载的服务进行配置,同时服务需要提供一个健康检查的接口。因为需要支持socat命令,以及需要在服务节点登录haproxy以获取监控信息,因此需要在haproxy所在的服务器上安装socat(yum install socat),服务节点和haproxy所在服务器配置好免密登录。
服务平滑发布需要服务至少在两个服务节点上部署。各服务节点依次进行服务发布。本申请中当前服务节点是指当前进行服务发布的服务节点,其他服务节点是指后续进行服务发布或者已经完成服务发布的服务节点。本申请针对当前服务节点的服务发布过程进行阐述,整个过程同样适用于其他服务节点。
在完成相关的组件配置的基础上,当在当前服务节点上发布服务时,首先通过socat命令与haproxy交互,通过haproxy将当前服务节点上的服务设置为耗尽状态。所谓耗尽状态是指将服务器从负载均衡中移除,但服务仍允许被检查并接受新的服务器连接。在耗尽状态下,当前服务节点上的服务不再接收来自haproxy的新映射请求,但是当前服务节点上的该服务仍处于运行状态,正常处理已经接收的映射请求。
在当前服务节点处于耗尽状态,不再接收新映射请求的同时,其他服务节点上的服务正常接收来自haproxy的新映射请求,并对新映射请求进行处理。
在当前服务节点发布服务的过程中,其他服务节点上的服务正常接收并处理映射请求,可以确保在服务发布阶段不会影响用户使用。
S102:判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
具体的,服务平滑发布需要确保服务下线时,服务已接收的流量处理完成。因此,在将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自haproxy的新映射请求而继续处理已接收的映射请求之后,进一步判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求。
其中,在一种具体的实施方式中,所述判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求包括:
获取所述当前服务节点中的所述服务的会话数;
若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
具体而言,通过socat命令获取当前服务节点中的服务的cur sessions即服务的会话数。如果服务的会话数为零,表明当前服务节点中的服务处理完成已接收的映射请求。相反,如果服务的会话数不为零,表明当前服务节点中的服务还未处理完成已接收的映射请求。
S103:若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
具体的,当判断出当前服务节点上的服务处理完成已接收的映射请求时,将当前服务节点上的该服务的进程杀死,并进一步在当前服务节点上启动新服务。
S104:判断所述新服务是否通过健康检查;
S105:若所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
具体的,在当前服务节点上启动新服务后,对新服务进行健康检查。新服务通过健康检查后,新服务才能正常接收映射请求。因此,在将新服务设置为就绪状态,使其正常接收映射请求之前,判断新服务是否通过了健康检查。如果通过,则将新服务设置为就绪状态,使新服务后续能够正常接收并处理映射请求。
其中,在一种具体的实施方式中,所述判断所述当前服务节点上的所述新服务是否通过健康检查包括:
获取所述新服务的状态值;
若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
具体而言,可通过socat命令获取新服务的状态值。如果所获取的状态值为表征服务完全启动的值,则新服务通过健康检查,反之,则新服务没有通过健康检查。
例如,状态值为0,表征服务停止;状态值为1表征服务热启动中;状态值为2表征服务完成启动;状态值为3表征服务软下线。如果获取的新服务的状态值为2,表示新服务通过健康检查,此时进一步将新服务设置为就绪状态。
完成在当前服务节点上发布服务之后,对于其他等待进行服务发布的服务节点,可采取同样的方式进行服务发布。此时可由当前服务节点接收并处理来自haproxy的新映射请求。
具体而言,将其他服务节点上的服务设置为耗尽状态,使所述其他服务节点上的服务不再接收来自haproxy的新映射请求而继续处理已接收的映射请求;haproxy的新映射请求由当前服务节点上的服务接收并处理。判断其他服务节点上的所述服务是否处理完成所述已接收的映射请求。如果所述其他服务节点上的所述服务处理完成所述已接收的映射请求,则将所述其他服务节点上的所述服务的进程杀死,并在所述其他服务节点上启动新服务;判断其他服务节点上的所述新服务是否通过健康检查;若其他服务节点上的所述新服务通过所述健康检查,则将其他服务节点上的所述新服务设置为就绪状态。
进一步,在上述实施例的基础上,还包括:
将所述新服务设置为就绪状态后,通过所述haproxy根据负载均衡策略发送映射请求到所述服务节点。
进一步,在上述实施例的基础上,还包括:
从所述haproxy获取所述新服务。
具体的,从haproxy获取可用服务列表,haproxy返回包括新服务的健康的服务列表。在获取新服务的基础上,进一步可判断当前服务节点是否可以发布新服务。如果当前服务节点正常,且存在宕机的服务节点,此时当前服务节点暂不发布新服务,使宕机的服务节点优先进行服务发布。如果当前服务节点宕机,此时当前服务节点可以发布新服务。如果当前服务节点与其他服务节点都正常,则此时当前服务节点可以发布新服务。可以发布新服务则进入上述实施例所述的服务发布流程。
参考图2所示,图2为本申请提供的一种服务平滑发布的具体实施流程:
Jenkins打包/scp jar至服务器目标位置即服务节点的目的位置。服务节点从haproxy服务即上文所述的haproxy获取当前可用服务实例信息列表。获取成功时,haproxy返回健康的服务列表。服务节点判断是否可以发布服务。如果可以发布,则进一步通过haproxy将当前节点的服务状态设置为drain,即耗尽状态,使当前节点不再接收流量映射即映射请求。Haproxy监控当前节点的状态,等待当前节点完成流程处理即处理完全已接收的映射请求。当cur=0时,即当服务的会话数为零时,表明处理完成。进一步,当前节点杀掉旧服务的进程并启动新服务。当新服务的状态值为表征服务完全启动的值,如state=2时,通过健康检查,将新服务的服务状态设置为就绪。
整个流程基于jenkins与haproxy实现,通过编写可运行的脚本,利用jenkins的自动化部署功能,在任务配置中配置好脚本,执行如上所述的发布流程,完成服务的半自动化平滑发布。
综上所述,本申请所提供的基于haproxy的服务平滑发布方法,当服务节点进行服务发布时,首先通过haproxy将该服务节点上的服务设置为耗尽状态,使其仅处理已接收的映射请求,而不再接收新映射请求,新映射请求则由其他服务节点接收并处理,由此可以确保在服务发布阶段不会影响用户使用,实现用户无感知的服务发布与升级。当服务节点处理完成已接收的映射请求之后才杀死旧的服务的进程,并启动新服务,可以保证服务下线时流量已处理完成。当服务节点上的新服务通过健康检查后才将其设置为就绪状态,此后能够接收流量进行处理,可以保证服务上线时服务启动完全才接收流量进行处理。由此,可以实现服务的平滑发布。同时,haproxy的配置简单,拥有良好的健康检查与状态监控功能,本申请借助haproxy实现服务平滑发布,可以有效的简化服务发布操作。
本申请还提供了一种基于haproxy的服务平滑发布装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图3,图3为本申请实施例所提供的一种基于haproxy的服务平滑发布装置的示意图,结合图3所示,该装置包括:
第一设置模块10,用于通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;
第一判断模块20,用于判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
启动模块30,用于若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
第二判断模块40,用于判断所述当前服务节点上的所述新服务是否通过健康检查;
第二设置模块50,用于若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
在上述实施例的基础上,作为一种具体的实施方式,所述第一判断模块20包括:
第一获取单元,用于获取所述当前服务节点中的所述服务的会话数;
第一判定单元,用于若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
在上述实施例的基础上,作为一种具体的实施方式,所述第二判断模块40包括:
第二获取单元,用于获取所述新服务的状态值;
第二判定单元,用于若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
发送模块,用于将所述新服务设置为就绪状态后,通过所述haproxy根据负载均衡策略发送映射请求到所述服务节点。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
获取模块,用于从所述haproxy获取所述新服务。
本申请所提供的基于haproxy的服务平滑发布装置,当服务节点进行服务发布时,首先通过haproxy将该服务节点上的服务设置为耗尽状态,使其仅处理已接收的映射请求,而不再接收新映射请求,新映射请求则由其他服务节点接收并处理,由此可以确保在服务发布阶段不会影响用户使用,实现用户无感知的服务发布与升级。当服务节点处理完成已接收的映射请求之后才杀死旧的服务的进程,并启动新服务,可以保证服务下线时流量已处理完成。当服务节点上的新服务通过健康检查后才将其设置为就绪状态,此后能够接收流量进行处理,可以保证服务上线时服务启动完全才接收流量进行处理。由此,可以实现服务的平滑发布。同时,haproxy的配置简单,拥有良好的健康检查与状态监控功能,本申请借助haproxy实现服务平滑发布,可以有效的简化服务发布操作。
本申请还提供了一种基于haproxy的服务平滑发布设备,参考图4所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;判断所述当前服务节点上的所述新服务是否通过健康检查;若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;判断所述当前服务节点上的所述新服务是否通过健康检查;若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的基于haproxy的服务平滑发布方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

Claims (10)

1.一种基于haproxy的服务平滑发布方法,其特征在于,包括:
通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;
判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
判断所述当前服务节点上的所述新服务是否通过健康检查;
若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
2.根据权利要求1所述的服务平滑发布方法,其特征在于,所述判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求包括:
获取所述当前服务节点中的所述服务的会话数;
若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
3.根据权利要求1所述的服务平滑发布方法,其特征在于,所述判断所述当前服务节点上的所述新服务是否通过健康检查包括:
获取所述新服务的状态值;
若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
4.根据权利要求3所述的服务平滑发布方法,其特征在于,还包括:
将所述新服务设置为就绪状态后,通过所述haproxy根据负载均衡策略发送映射请求到所述服务节点。
5.根据权利要求4所述的服务平滑发布方法,其特征在于,还包括:
从所述haproxy获取所述新服务。
6.一种基于haproxy的服务平滑发布装置,其特征在于,包括:
第一设置模块,用于通过haproxy将当前服务节点上的服务设置为耗尽状态,使所述当前服务节点上的所述服务不再接收来自所述haproxy的新映射请求而继续处理已接收的映射请求;来自所述haproxy的新映射请求由其他服务节点上的所述服务接收并处理;
第一判断模块,用于判断所述当前服务节点上的所述服务是否处理完成所述已接收的映射请求;
启动模块,用于若所述当前服务节点上的所述服务处理完成所述已接收的映射请求,则杀死所述当前服务节点上的所述服务的进程,并在所述当前服务节点上启动新服务;
第二判断模块,用于判断所述当前服务节点上的所述新服务是否通过健康检查;
第二设置模块,用于若所述当前服务节点上的所述新服务通过所述健康检查,则将所述新服务设置为就绪状态。
7.根据权利要求6所述的服务平滑发布装置,其特征在于,所述第一判断模块包括:
第一获取单元,用于获取所述当前服务节点中的所述服务的会话数;
第一判定单元,用于若所述会话数为零,则所述当前服务节点中的所述服务处理完成所述已接收的映射请求。
8.根据权利要求6所述的服务平滑发布装置,其特征在于,所述第二判断模块包括:
第二获取单元,用于获取所述新服务的状态值;
第二判定单元,用于若所述新服务的状态值为表征服务完全启动的数值,则所述新服务通过健康检查。
9.一种基于haproxy的服务平滑发布设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的基于haproxy的服务平滑发布方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的基于haproxy的服务平滑发布方法的步骤。
CN202111400978.3A 2021-11-19 2021-11-19 一种基于haproxy的服务平滑发布方法及相关装置 Pending CN113973130A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111400978.3A CN113973130A (zh) 2021-11-19 2021-11-19 一种基于haproxy的服务平滑发布方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111400978.3A CN113973130A (zh) 2021-11-19 2021-11-19 一种基于haproxy的服务平滑发布方法及相关装置

Publications (1)

Publication Number Publication Date
CN113973130A true CN113973130A (zh) 2022-01-25

Family

ID=79590060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111400978.3A Pending CN113973130A (zh) 2021-11-19 2021-11-19 一种基于haproxy的服务平滑发布方法及相关装置

Country Status (1)

Country Link
CN (1) CN113973130A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850746A (zh) * 2016-12-23 2017-06-13 微梦创科网络科技(中国)有限公司 服务平滑升级的方法及装置
CN109101337A (zh) * 2018-07-23 2018-12-28 赛尔网络有限公司 一种基于HAProxy的服务器节点升级方法及电子设备
CN110381042A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种平滑重启服务的方法、装置、介质和电子设备
US20190369980A1 (en) * 2018-06-04 2019-12-05 Palantir Technologies Inc. Constraint-based upgrade and deployment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850746A (zh) * 2016-12-23 2017-06-13 微梦创科网络科技(中国)有限公司 服务平滑升级的方法及装置
US20190369980A1 (en) * 2018-06-04 2019-12-05 Palantir Technologies Inc. Constraint-based upgrade and deployment
CN109101337A (zh) * 2018-07-23 2018-12-28 赛尔网络有限公司 一种基于HAProxy的服务器节点升级方法及电子设备
CN110381042A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种平滑重启服务的方法、装置、介质和电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ERIC_1234567: "服务如何做到平滑升级", pages 1, Retrieved from the Internet <URL:https://blog.csdn.net/fabeulous/article/details/105219833> *

Similar Documents

Publication Publication Date Title
CN105099988B (zh) 用于支持灰度发布的方法、访问方法以及装置和系统
CN105656646A (zh) 一种虚拟网元的部署方法及装置
CN108170448B (zh) 一种自动化高效进行软件更新版本发布的系统
CN104866307B (zh) 一种应用程序的修复方法和装置
CN108874437B (zh) 一种android应用程序的在线云更新方法
CN109905256A (zh) 一种固件更新方法和装置
CN110224860A (zh) 负载均衡应用创建方法、装置、计算机设备及存储介质
CN112333096A (zh) 一种微服务流量调度方法及相关组件
CN111901142B (zh) 一种用于嵌入式设备集群的固件静默升级方法及装置
CN110691127B (zh) 数据获取控制系统、数据获取控制方法及相关装置
JP3612043B2 (ja) 執行中のプログラムファイルをアップデートすることができるシステムおよびその方法
CN108536464A (zh) 一种应用程序的热修复方法及装置
CN112383908A (zh) 一种蓝牙设备的升级方法及系统
CN113238791A (zh) 一种主从架构的ota差分升级方法及系统
WO2020199543A1 (zh) 适用于混合模式应用的发布升级的方法及装置、智能设备
CN106708539B (zh) 一种客户端更新方法及装置
CN113973130A (zh) 一种基于haproxy的服务平滑发布方法及相关装置
CN108282517A (zh) 一种web服务升级的方法及终端
WO2024041283A1 (zh) 一种客户端升级方法、装置、终端设备及存储介质
CN108512682B (zh) 一种确定虚假终端标识的方法和装置
CN106708494B (zh) Jar升级方法及装置
CN111857975A (zh) 一种服务更新方法、装置、设备及介质
CN106445601A (zh) 一种插件升级的方法及装置
CN110764809A (zh) Ota升级apn方法、装置、设备和介质
CN106162345A (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