CN112769922B - 一种微服务集群自启动的装置及方法 - Google Patents

一种微服务集群自启动的装置及方法 Download PDF

Info

Publication number
CN112769922B
CN112769922B CN202011628905.5A CN202011628905A CN112769922B CN 112769922 B CN112769922 B CN 112769922B CN 202011628905 A CN202011628905 A CN 202011628905A CN 112769922 B CN112769922 B CN 112769922B
Authority
CN
China
Prior art keywords
service
starting
self
micro
command
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
CN202011628905.5A
Other languages
English (en)
Other versions
CN112769922A (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.)
Nanjing Inspector Intelligent Technology Co ltd
Original Assignee
Nanjing Inspector Intelligent 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 Nanjing Inspector Intelligent Technology Co ltd filed Critical Nanjing Inspector Intelligent Technology Co ltd
Priority to CN202011628905.5A priority Critical patent/CN112769922B/zh
Publication of CN112769922A publication Critical patent/CN112769922A/zh
Application granted granted Critical
Publication of CN112769922B publication Critical patent/CN112769922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/06Management of faults, events, alarms or notifications
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Environmental & Geological Engineering (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种微服务集群自启动的装置及方法,该方法包括:从微服务集群中选取一台服务器作为主服务器,将微服务自启动装置安装到主服务器中,微服务集群断电或宕机重启时,主服务器上的自启动装置自动启动,配置模块加载配置文件并解析配置文件,并生成每个服务的自启动优先级,然后进一步为每个服务生成一条自启动指令,然后控制模块从指令栈依次取出栈顶指令,然后利用ssh技术执行远程命令启动服务,远程命令执行失败会有重试机制,报警模块会记录并为此次自启动失败生成报警报告,并立即将报警报告以短信和邮件的方式通知到运维人员。实现了启动服务过程的完全自动化,减少了运维成本,提高了稳定性。

Description

一种微服务集群自启动的装置及方法
技术领域
本发明涉及计算机技术和微服务研究领域,具体涉及一种微服务集群自启动的装置及方法。
背景技术
随着科学技术的发展,计算机应用技术被广泛的应用到各个领域,随着业务需求的与日俱增,传统的单体应用架构已经无法满足当前互联网产品的技术需求,于是越来越多的企业都采用微服务架构来实现自己的产品。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于微服务架构的方式会导致应用服务的数量越来越庞大,单独的服务器无法运行所有的服务,因此越来越多的企业采用集群的方式来部署。当服务器在工作过程中遇到断电或者宕机时服务器重启时,服务器上部署的服务也同样需要重新启动,传统的重启服务的方式有两种,一种是运维人员手动远程登录到服务器重启服务,在当服务器和服务数量非常多的情况下需要大量的人力和时间来完成重启,不仅效率低下而且易出错。另一种是利用linux开机自启动脚本技术预先在/etc/init.d目录下存放自启动服务的脚本;当服务器数量多并且服务器与服务器之间的服务存在依赖关系时,很容易导致某些服务无法成功自启动。比如服务器A上有个用户服务,服务器B上有个订单服务,但订单服务依赖用户服务,而A和B断电重启的时间无法控制,若服务器A重启在B之后完成,则订单服务自启动会失败。这两种方式维护成本都很高,而且在微服务的架构下自启动失败率比较高,不稳定。
发明内容
为了克服现有技术的不足,本公开实施例提供了一种微服务集群自启动的装置及方法,实现了启动服务过程的完全自动化,减少了运维成本,提高了稳定性。
技术方案如下:
第一方面,提供了一种微服务集群自启动的方法,该方法具体包括如下步骤:
步骤1,选取主服务器用来部署微服务集群自启动装置;
步骤2,部署装置;
将自启动装置安装到主服务器上,并将装置启动脚本autoStartupd存放在制定目录下;
步骤3,配置自启动服务配置信息,
步骤4,微服务集群断电或宕机重启后,主服务器会自动启动微服务集群自启动装置,装置的配置模块开始读取上一步预先配好的配置文件,并按照上一步的规则来解析配置信息,得到根服务的配置信息以及普通自启动服务的配置信息,其中根服务的自启动优先级设置为0;
步骤5,根据自启动服务的配置信息为每个服务生成启动指令,指令内容包括服务名称,服务所在服务器IP地址,服务远程启动shell命令;
将所有启动指令按照服务自启动优先级数字从大到小排序,然后依次将指令存储到指令栈中,指令栈按照栈的数据结构来存储指令。
步骤6,控制模块从指令栈中取出栈顶指令并按照步骤5的规则解析指令,通过linuxssh远程登录技术然后服务所在IP地址登录到远程服务器上执行服务远程启动命令并获取命令执行结果。
步骤7,判断远程命令是否执行成功,若成功则进入步骤10从指令栈移除当前指令,若失败则重新执行远程启动命令,再次判断命令是否执行成功,若超过指定次数,重试命令依旧执行失败,则进入步骤8。
步骤8,报警模块采集远程命令执行结果以及执行时间进行分析得到启动失败的原因,将本次微服务集群自启动失败的记录以及原因生成报告,然后通过短信和邮件的方式将报告立刻发送给运维人员,运维人员收到报警报告后再人工定位问题并手动来完成微服务集群的启动。
步骤9,监控模块每间隔数分钟对微服务集群进行一次健康检查,包括判断服务的进程是否存在,判断服务的端口是否正常。
步骤10,根据步骤9健康检查的结果,监控模块会统计运行异常的每个服务,对于进程不存在的服务,重复步骤5到8,对于端口异常的服务,报警模块会分析端口异常的原因,然后生成报警报告发送给运维人员,让运维来修复运行异常的服务。
优选的,步骤1选取主服务器方法如下:从所有服务器筛选硬件配置排名前20%的服务器,进一步筛选服务器上应用服务数量最少并且服务功能最简单的服务器,若存在多台这种服务器,挑选其中硬件配置最好的一台服务器作为主服务器。
优选的,步骤3配置自启动服务配置信息,在配置文件中按照如下方法进行配置:
第一行配置根服务信息,根服务为所有服务中最优先启动的服务,配置信息包含根服务的服务名称,多个名称之间用逗号分隔,根服务所在服务器的IP地址以及根服务监听的端口号,从第二行开始配置普通自启动服务,每一行配置一个自启动服务信息。
优选的,步骤4根服务的自启动优先级设置为0;
找到依赖服务包含根服务的普通服务,设置该普通服务自启动优先级为level,level=1;
找到依赖服务包含上一步普通服务的服务,设置该普通服务启动优先级为level+1;
重复上一步骤,直到所有服务启动优先级都设置完毕。
优选的,步骤5指令栈按照栈的数据结构来存储指令,只能通过栈顶来获取指令,保证每次取到的指令都是对应启动优先级最高的服务。
优选的,步骤9判断服务的进程是否存在,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务名称作为应用服务的进程关键字,然后通过linux操作系统的ps和grep命令根据进程关键字查找到进程的信息,然后根据awk命令对进程信息进行提取得到服务对应的进程ID,若进程ID为空,表示服务进程不存在,即服务没有启动,反之表示服务的进程存在,服务正常启动。
优选的,步骤9判断服务的端口是否正常,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务的IP地址和端口号作为参数,然后通过linux操作系统的wget命令对应用服务的监听端口进行访问,然后将字符串connected作为关键字,用grep命令对wget命令的执行结果查找关键字,若能查找到关键字,表示服务端口能正常访问,服务运行正常;否则代表服务端口无法访问,服务运行异常。
第二方面,提供了一种微服务集群自启动的装置,该装置采用所有可能的实现方式中任一项所述的一种微服务集群自启动方法,该装置包括:主服务器、控制模块、配置模块、监控模块;
所述主服务器,用来安装和运行该装置;
所述控制模块,用来从指令栈取出启动指令,通过ssh远程登录服务器来执行服务启动命令;
所述配置模块,用来加载并解析配置文件,并存储自启动服务的配置信息;
所述监控模块,用来定时对所有服务进行健康检测,包括服务的进程是否存在,服务端口是否正常。
优选的,该装置还包括报警模块,报警模块根据自启动失败结果和启动时间生成报警报告,并通过短信和邮件发送给运维人员。
与现有技术相比,上述技术方案中的一个技术方案具有如下有益效果:通过服务依赖关系生成服务启动优先级,能正确得按照服务依赖关系来顺序启动服务;启动服务的过程完全自动化,减少了运维成本;通过配置模块根据服务的配置信息自动生成远程启动命令,省去了人工为每个服务部署自启动脚本的成本;通过监控模块定期检查所有服务运行状态,并且针对启动失败的服务有重试机制,极大的保证了微服务集群自启动的成功率和集群运行的稳定性;通过报警模块及时通知相关人员服务自启动失败的信息,极大的提高了容错率,同时提供了运维人员解决问题的效率。并具有如下优点:
1、解决了自启动服务之间的依赖关系;
2、微服务集群的自启动过程完全自动化,不仅节省了大量的人力成本,而且极大的缩短了整个集群的启动耗时。
3、可灵活配置集群中服务的自启动优先级。
4、报警模块能及时通知相关人员自启动的异常信息,减少了人工排查自启动失败问题的成本,同时保证了微服务集群自启动的稳定性。
5、有完善的健康检查机制,监控系统会定时检查所有服务的运行状态,并针对运行异常的服务做出报警。
附图说明
图1为本公开实施例提供的一种微服务集群自启动的方法流程图。
具体实施方式
为了阐明本发明的技术方案和工作原理,下面将结合附图对本公开实施方式做进一步的详细描述。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请的说明书和权利要求书及上述附图中的术语“步骤1”、“步骤2”、“步骤3”等类似描述是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里描述的那些以外的顺序实施。
第一方面,本公开实施例提供了一种微服务集群自启动的方法,附图1为本公开实施例提供的一种微服务集群自启动的方法流程图,结合该图,该方法具体包括如下步骤:
步骤1,选取主服务器用来部署微服务集群自启动装置,
优选的,步骤1选取主服务器方法如下:从所有服务器筛选硬件配置排名前20%的服务器,进一步筛选服务器上应用服务数量最少并且服务功能最简单的服务器,若存在多台这种服务器,挑选其中硬件配置最好的一台服务器作为主服务器。这样选出的主服务器性能比较高,能缩短装置启动整个微服务集群的耗时,而且由于服务器上运行的应用服务数量少而且功能简单能确保了主服务的稳定运行,不容易出现服务器宕机的现象。
步骤2,部署装置
将自启动装置安装到主服务器上,并将装置启动脚本autoStartupd存放在/etc/init.d目录下;
修改autoStartupd文件,在文件开头添加下面这行语句:
#chkconfig 2345 90 30
2345指定脚本在主服务开机时运行,90指定脚本的启动优先级,30指定关闭的优先级,数字越小代表优先级越高,建议将启动优先级数字设置得小一些。然后在主服务上执行以下命令:
chmod 755autoStartupd授予启动脚本可执行权限
chkconfig–add autoStartupd将自启动装置添加到linux自启动服务列表
chkconfig–level 2345autoStartupd on让自启动装置在服务器开机时自启动
步骤3,配置自启动服务配置信息,
优选的,步骤3配置自启动服务配置信息,在配置文件中按照如下方法进行配置:
第一行配置根服务信息,根服务为所有服务中最优先启动的服务,配置信息包含根服务的服务名称,多个名称之间用逗号分隔,根服务所在服务器的IP地址以及根服务监听的端口号,例如:
root:根服务名称1,根服务名称2:ip1,ip2:port
root用来标识当前自启动服务是否是根服务,ip为服务器IP地址,port为端口号,范围为0-65535。
从第二行开始配置普通自启动服务,每一行配置一个自启动服务信息,示例如下:
自启动服务名称:依赖服务名称1,依赖服务名称2:ip:port
步骤4,微服务集群断电或宕机重启后,主服务器会自动启动微服务集群自启动装置,装置的配置模块开始读取上一步预先配好的配置文件,并按照上一步的规则来解析配置信息,得到根服务的配置信息以及普通自启动服务的配置信息,其中根服务的自启动优先级设置为0;
优选的,步骤4根服务的自启动优先级设置为0;
找到依赖服务包含根服务的普通服务,设置该普通服务自启动优先级为level,level=1;
找到依赖服务包含上一步普通服务的服务,设置该普通服务启动优先级为level+1;
重复上一步骤,直到所有服务启动优先级都设置完毕。
步骤5,根据自启动服务的配置信息为每个服务生成启动指令,指令内容包括服务名称,服务所在服务器IP地址,服务远程启动shell命令;
将所有启动指令按照服务自启动优先级数字从大到小排序,然后依次将指令存储到指令栈中,指令栈按照栈的数据结构来存储指令。指令格式如下:服务名/IP地址/远程启动命令。
优选的,步骤5指令栈按照栈的数据结构来存储指令,具有先进后出的特点,并且只能通过栈顶来获取指令,保证每次取到的指令都是对应启动优先级最高的服务。
步骤6,控制模块从指令栈中取出栈顶指令并按照步骤5的规则解析指令,通过linuxssh远程登录技术然后服务所在IP地址登录到远程服务器上执行服务远程启动命令并获取命令执行结果。
步骤7,判断远程命令是否执行成功,若成功则进入步骤10从指令栈移除当前指令,若失败则重新执行远程启动命令,再次判断命令是否执行成功,若超过指定次数(优选为3次),重试命令依旧执行失败,则进入步骤8.
步骤8,报警模块采集远程命令执行结果以及执行时间进行分析得到启动失败的原因,将本次微服务集群自启动失败的记录以及原因生成报告,然后通过短信和邮件的方式将报告立刻发送给运维人员,运维人员收到报警报告后再人工定位问题并手动来完成微服务集群的启动。
步骤9,监控模块每间隔数分钟(可配置为5分钟)对微服务集群进行一次健康检查,包括判断服务的进程是否存在,判断服务的端口是否正常。
优选的,步骤9判断服务的进程是否存在,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务名称作为应用服务的进程关键字,然后通过linux操作系统的ps和grep命令根据进程关键字查找到进程的信息,然后根据awk命令对进程信息进行提取得到服务对应的进程ID
若进程ID为空,表示服务进程不存在,即服务没有启动,
反之表示服务的进程存在,服务正常启动。
优选的,步骤9判断服务的端口是否正常,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务的IP地址和端口号作为参数,然后通过linux操作系统的wget命令对应用服务的监听端口进行访问,然后将字符串connected作为关键字,用grep命令对wget命令的执行结果查找关键字,若能查找到关键字,表示服务端口能正常访问,服务运行正常;否则代表服务端口无法访问,服务运行异常。
步骤10,根据步骤9健康检查的结果,监控模块会统计运行异常的每个服务,对于进程不存在的服务,重复步骤5到8,对于端口异常的服务,报警模块会分析端口异常的原因,然后生成报警报告发送给运维人员,让运维来修复运行异常的服务。
该方法通过从微服务集群中选取一台服务器作为主服务器,将微服务自启动装置安装到主服务器中,在配置文件配置所有应用服务的配置信息,然后将自启动装置添加到linux操作系统的自启动服务列表中。微服务集群断电或宕机重启时,主服务器上的自启动装置自动启动,配置,模块加载配置文件并解析配置文件,并生成每个服务的自启动优先级,然后进一步为每个服务生成一条自启动指令,并将指令按照优先级顺序存储到指令栈中,然后控制模块从指令栈依次取出栈顶指令,然后利用ssh技术执行远程命令启动服务,远程命令执行失败会有重试机制,当超过最大重试次数远程命令还是失败时,报警模块会记录并为此次自启动失败生成报警报告,并立即将报警报告以短信和邮件的方式通知到运维人员,运维人员再根据报告人工完成微服务集群的自启动。监控模块会定时对微服务集群进行健康检测,监控服务的进程是否存在,服务端口是否能访问,当监控模块发现服务运行异常时,会及时通知运维人员来通过人工的手段恢复服务正常运行。
第二方面:本公开实施例提供了一种微服务集群自启动的装置,该装置采用所有可能的实现方式中任一项所述的一种微服务集群自启动方法,该装置包括:主服务器、控制模块、配置模块、监控模块;
所述主服务器,用来安装和运行该装置;
所述控制模块,用来从指令栈取出启动指令,通过ssh远程登录服务器来执行服务启动命令;
所述配置模块,用来加载并解析配置文件,并存储自启动服务的配置信息;
所述监控模块,用来定时对所有服务进行健康检测,包括服务的进程是否存在,服务端口是否正常。
优选的,还包括报警模块,报警模块根据自启动失败结果和启动时间生成报警报告,并通过短信和邮件发送给运维人员。
以上结合附图对本发明进行了示例性描述,显然,本发明具体实现并不受上述方式的限制,凡是采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。

Claims (9)

1.一种微服务集群自启动的方法,其特征在于,该方法包括如下步骤:
步骤1,选取主服务器来部署微服务集群自启动装置,
步骤2,部署装置
将自启动装置安装到主服务器上,并将装置启动脚本autoStartupd存放在制定目录下;
步骤3,配置自启动服务配置信息,
步骤4,微服务集群断电或宕机重启后,主服务器会自动启动微服务集群自启动装置,装置的配置模块开始读取上一步预先配好的配置文件,并按照上一步的规则来解析配置信息,得到根服务的配置信息以及普通自启动服务的配置信息,其中根服务的自启动优先级设置为0;
步骤5,根据自启动服务的配置信息为每个服务生成启动指令,指令内容包括服务名称,服务所在服务器IP地址,服务远程启动shell命令;
将所有启动指令按照服务自启动优先级数字从大到小排序,然后依次将指令存储到指令栈中,指令栈按照栈的数据结构来存储指令;
步骤6,控制模块从指令栈中取出栈顶指令并按照步骤5的规则解析指令,通过linuxssh远程登录技术然后服务所在IP地址登录到远程服务器上执行服务远程启动命令并获取命令执行结果;
步骤7,判断远程命令是否执行成功,若成功则进入步骤10从指令栈移除当前指令,若失败则重新执行远程启动命令,再次判断命令是否执行成功,若超过指定次数,重试命令依旧执行失败,则进入步骤8;
步骤8,报警模块采集远程命令执行结果以及执行时间进行分析得到启动失败的原因,将本次微服务集群自启动失败的记录以及原因生成报告,然后通过短信和邮件的方式将报告立刻发送给运维人员,运维人员收到报警报告后再人工定位问题并手动来完成微服务集群的启动;
步骤9,监控模块每间隔数分钟对微服务集群进行一次健康检查,包括判断服务的进程是否存在,判断服务的端口是否正常;
步骤10,根据步骤9健康检查的结果,监控模块会统计运行异常的每个服务,对于进程不存在的服务,重复步骤5到8,对于端口异常的服务,报警模块会分析端口异常的原因,然后生成报警报告发送给运维人员,让运维来修复运行异常的服务。
2.根据权利要求1所述的一种微服务集群自启动的方法,其特征在于,步骤1选取主服务器方法如下:从所有服务器筛选硬件配置排名前20%的服务器,进一步筛选服务器上应用服务数量最少并且服务功能最简单的服务器,若存在多台这种服务器,挑选其中硬件配置最好的一台服务器作为主服务器。
3.根据权利要求1所述的一种微服务集群自启动的方法,其特征在于,步骤3配置自启动服务配置信息,在配置文件中按照如下方法进行配置:
第一行配置根服务信息,根服务为所有服务中最优先启动的服务,配置信息包含根服务的服务名称,多个名称之间用逗号分隔,根服务所在服务器的IP地址以及根服务监听的端口号,从第二行开始配置普通自启动服务,每一行配置一个自启动服务信息。
4.根据权利要求1所述的一种微服务集群自启动的方法,其特征在于,步骤4根服务的自启动优先级设置为0;
找到依赖服务包含根服务的普通服务,设置该普通服务自启动优先级为level,level=1;
找到依赖服务包含上一步普通服务的服务,设置该服务启动优先级为level+1;
重复上一步骤,直到所有服务启动优先级都设置完毕。
5.根据权利要求1所述的一种微服务集群自启动的方法,其特征在于,步骤5指令栈按照栈的数据结构来存储指令,只能通过栈顶来获取指令,保证每次取到的指令都是对应启动优先级最高的服务。
6.根据权利要求1所述的一种微服务集群自启动的方法,其特征在于,步骤9判断服务的进程是否存在,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务名称作为应用服务的进程关键字,然后通过linux操作系统的ps和grep命令根据进程关键字查找到进程的信息,然后根据awk命令对进程信息进行提取得到服务对应的进程ID;
进程ID为空,表示服务进程不存在,即服务没有启动,
反之表示服务的进程存在,服务正常启动。
7.根据权利要求1-6任一项所述的一种微服务集群自启动的方法,其特征在于,步骤9判断服务的端口是否正常,具体方法为:
利用ssh远程登录到服务所在服务器上,将服务的IP地址和端口号作为参数,然后通过linux操作系统的wget命令对应用服务的监听端口进行访问,然后将字符串connected作为关键字,用grep命令对wget命令的执行结果查找关键字,若能查找到关键字,表示服务端口能正常访问,服务运行正常;否则代表服务端口无法访问,服务运行异常。
8.一种微服务集群自启动的装置,该装置采用权利要求1-7任一项所述的一种微服务集群自启动方法,其特征在于,该装置包括:主服务器、控制模块、配置模块、监控模块;
所述主服务器,用来安装和运行该装置;
所述控制模块,用来从指令栈取出启动指令,通过ssh远程登录服务器来执行服务启动命令;
所述配置模块,用来加载并解析配置文件,并存储自启动服务的配置信息;
所述监控模块,用来定时对所有服务进行健康检测,包括服务的进程是否存在,服务端口是否正常。
9.根据权利要求8所述的一种微服务集群自启动的装置,该装置还包括报警模块,报警模块根据自启动失败结果和启动时间生成报警报告,并通过短信和邮件发送给运维人员。
CN202011628905.5A 2020-12-31 2020-12-31 一种微服务集群自启动的装置及方法 Active CN112769922B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011628905.5A CN112769922B (zh) 2020-12-31 2020-12-31 一种微服务集群自启动的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011628905.5A CN112769922B (zh) 2020-12-31 2020-12-31 一种微服务集群自启动的装置及方法

Publications (2)

Publication Number Publication Date
CN112769922A CN112769922A (zh) 2021-05-07
CN112769922B true CN112769922B (zh) 2022-07-12

Family

ID=75699452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011628905.5A Active CN112769922B (zh) 2020-12-31 2020-12-31 一种微服务集群自启动的装置及方法

Country Status (1)

Country Link
CN (1) CN112769922B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113780879A (zh) * 2021-09-26 2021-12-10 北京航空航天大学 基于Redis集群的海量遥测数据异常监视平台
CN114116068B (zh) * 2021-12-02 2023-06-02 重庆紫光华山智安科技有限公司 服务启动优化方法、装置、电子设备和可读存储介质
CN114884796B (zh) * 2022-06-16 2024-01-30 中国工商银行股份有限公司 故障处理方法、装置、电子设备及存储介质
CN115499409A (zh) * 2022-09-29 2022-12-20 阿里巴巴(中国)有限公司 Nat网关、服务器和网络系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104158911A (zh) * 2014-09-01 2014-11-19 青岛海信电器股份有限公司 一种面向服务器集群的控制方法及系统
CN105515759B (zh) * 2015-11-27 2018-11-09 国网信息通信产业集团有限公司 一种微服务注册方法及系统
CN107222320A (zh) * 2016-03-22 2017-09-29 中兴通讯股份有限公司 云服务器集群建立高可用连接的方法和装置
CN110572436B (zh) * 2019-08-12 2020-09-22 浙江讯盟科技有限公司 多地跨集群的服务器部署方法及系统
CN110798375B (zh) * 2019-09-29 2021-10-01 烽火通信科技股份有限公司 一种增强容器集群高可用性的监控方法、系统及终端设备

Also Published As

Publication number Publication date
CN112769922A (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
CN112769922B (zh) 一种微服务集群自启动的装置及方法
US7757124B1 (en) Method and system for automatic correlation of asynchronous errors and stimuli
CN101197621B (zh) 一种对网管系统故障进行远程诊断定位的方法及其系统
US10037238B2 (en) System and method for encoding exception conditions included at a remediation database
CN106789306B (zh) 通信设备软件故障检测收集恢复方法和系统
CN104731580A (zh) 基于Karaf与ActiveMQ的自动化运维系统及其实现方法
CN110895488B (zh) 任务调度方法及装置
US8086909B1 (en) Automatic core file upload
CN109960690A (zh) 一种大数据集群的运行维护方法及装置
CN112506702A (zh) 数据中心容灾方法、装置、设备及存储介质
CN111324423A (zh) 容器内进程的监控方法、装置、存储介质和计算机设备
CN112073263B (zh) 白盒交换机可靠性测试监测方法、系统、设备及介质
CN114356499A (zh) Kubernetes集群告警根因分析方法及装置
US9922539B1 (en) System and method of telecommunication network infrastructure alarms queuing and multi-threading
CN114510381A (zh) 故障注入方法、装置、设备和存储介质
CN111124724B (zh) 一种分布式块存储系统的节点故障测试方法及装置
CN111611138B (zh) 日志数据抓取方法、装置、计算机设备和存储介质
CN112631841A (zh) 一种循环老化测试和数据收集的方法、系统及介质
CN109783288A (zh) 一种自动化重启复位测试服务器稳定性的方法及系统
CN116302738A (zh) 一种测试芯片的方法、系统、设备和存储介质
CN111400107B (zh) 一种数据库多主集群的自启恢复系统及方法
CN109669867B (zh) 测试装置、自动化测试方法和计算机可读存储介质
CN112596750A (zh) 应用测试方法、装置、电子设备及计算机可读存储介质
CN111447329A (zh) 呼叫中心中状态服务器的监控方法、系统、设备及介质
CN114860262A (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