一种无丢包零停机重启网络服务的方法和系统技术方案

技术编号:13081943 阅读:85 留言:0更新日期:2016-03-30 14:19
本发明专利技术涉及一种无丢包零停机重启网络服务的方法和系统,包括:a)所述网络服务的旧进程在一端口上进行监听;b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端口的连接重定向到所述另一端口;d)一直等待直到所述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;e)使用新的配置文件在所述一端口上启动新进程;f)重新配置iptables规则以取消端口的重定向;以及g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡进程。

【技术实现步骤摘要】

本专利技术涉及一种重启网络服务技术,更具体而言,涉及一种零停机重启网络服务的方法和系统,使得在重启网络服务时不仅能正常处理所有的新连接,而且不会造成连接中断。
技术介绍
在现有的各种网络服务中,某些网络服务必须重新启动进程才能完成重启或者重新载入配置文件。典型的例子是在很多负载特别大的web站点中所提供的HAProxy网络服务。此网络服务通过使用SO_REUSEPORT选项,将新进程绑定到与旧进程完全相同的IP地址和端口开始监听新的连接,再发送信号通知老进程关闭监听端口的套接字(socket)。但是,当新老两个进程都绑定到同一个IP和端口,并且老进程的监听套接字还未关闭的短暂时间间隙中新的连接可能会到来。根据Linux内核中SO_REUSEPORT的实现,新连接的第一个报文(SYN报文)可能会被分配给新老进程中的任意一个。如果这个SYN报文被分配给老进程,而紧接着老进程的监听套接字又被关闭,根据TCP协议,服务端会发送一个TCPRST报文给客户端重置这条连接。这会造成一条正常的连接被无条件重置。虽然客户端可以重新发起连接,但这无疑增加了整个数据传输所需要的时间,也给连接客户端与服务器的网络线路增加了不必要的负担。除了在上述HAProxy网络服务中存在必须重新启动进程才能完成重启或者重新载入配置文件的问题之外,还有许多网络服务存在同样的问题,例如:nginx网络服务等。针对所述网络服务中存在的这一问题,目前已经提供了一些解决方案。一种简单的做法是在进程重载期间配置iptables规则来丢弃掉新收到的SYN报文。根据TCP协议,客户端在没有收到SYN/ACK报文一段时间后就会重新发送SYN报文,这样,重新发送的SYN报文就能被已经完成重载的新进程顺利接收,从而解决了所述问题。但是,这一方案的不足之处在于,客户端必须等待一段时间直到超时以重新发送SYN报文。而这段等待时间通常都很长,例如在1秒种以上,但进程重载的时间往往只需要几十毫秒,这就导致已经完成重载的新进程必须多等待例如1秒左右的时间才能接收到重新发送的SYN报文。因此,尽管在这一方案中的新连接不会被重置,但却带来了较长时间的延时。另一个可行的现有解决方案是利用Linux的流量控制工具(tc)。先使用iptables来标记新流入的SYN报文,再用tc工具暂时缓存这些报文。在进程完成重载之后,再释放这些SYN报文。相比于上一解决方案,这一方案所引起的延时相对较短。但是,由于tc工具只能控制流出的流量,因而使用场景受到了一定的限制。例如,在服务进程作为监听进程监听并接受客户端连接时,由于此时SYN报文为流入流量,所述的使用tc工具的方案就无法被用于解决上述问题。因此,存在一种对能够提供一种具有没有延时、对传出传入的连接都有效且使用场景不受限制等优点的重启网络服务的技术的需求。
技术实现思路
为了解决现有技术中的所述缺陷,本专利技术提供了一种新的无丢包零停机重启网络服务的方法和系统。相比于现有的其它方法,其具有无延时,对传出传入的连接都有效且使用场景不受限制等优点。在本专利技术的一个方面,提供了一种重启网络服务的方法,所述方法包括:a)所述网络服务的旧进程在一端口上进行监听;b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端口的连接重定向到所述另一端口,使得原本应连接到所述一端口上的后续连接被全部重定向到在所述另一端口上监听的所述过渡进程;d)一直等待直到所述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;e)使用新的配置文件在所述一端口上启动新进程;f)重新配置iptables规则以取消端口的重定向,这样,原本应连接到所述一端口上的后续新连接不再被重定向,还是连向在所述一端口上监听的新进程;以及g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡进程。根据本专利技术的另一方面,提供了一种重启网络服务的系统,其特征在于,所述系统包括:服务端,所述服务端是提供各种网络服务的web站点;客户端,所述客户端向所述服务器端提出重启网络服务的请求;网络环境,通过所述网络环境,所述服务端和所述客户端可以进行数据通信;其中,所述服务端被配置为执行下述步骤以实现网络服务的重启:a)所述网络服务的旧进程在一端口上进行监听;b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端口的连接重定向到所述另一端口,使得原本应连接到所述一端口上的后续连接被全部重定向到在所述另一端口上监听的所述过渡进程;d)一直等待直到所述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;e)使用新的配置文件在所述一端口上启动新进程;f)重新配置iptables规则以取消端口的重定向,这样,原本应连接到所述一端口上的后续新连接不再被重定向,还是连向在所述一端口上监听的新进程;以及g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡进程。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图说明为了描述可获得本专利技术的上述和其它优点和特征的方式,将通过参考附图中示出的本专利技术的具体实施例来呈现以上简要描述的本专利技术的更具体描述。可以理解,这些附图只描绘了本专利技术的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本专利技术,在附图中:图1示出了在其中可以实现根据本专利技术的实施例的示例环境。图2示出了根据本专利技术的实施例的一种零停机重启网络服务的方法的流程图。具体实施方式下面结合附图和实施例对本专利技术作进一步的描述。首先,描述下实现本专利技术的实施例的系统环境。在图1中示出了实现根据本专利技术的实施例的示例环境100。在所述示例环境100中,包括网络环境110进行通信的客户端(客户机)120和服务端(服务器)130。客户端和服务器所处的网络环境可以是局域网、因特网或其它广域网。所述服务端130可以是提供各种网络服务的web站点,例如,HAProxy网络服务,其中所述网络本文档来自技高网
...

【技术保护点】
一种重启网络服务的方法,其特征在于,包括:a)所述网络服务的旧进程在一端口上进行监听;b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端口的连接重定向到所述另一端口,使得原本应连接到所述一端口上的后续连接被全部重定向到在所述另一端口上监听的所述过渡进程;d)一直等待直到所述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;e)使用新的配置文件在所述一端口上启动新进程;f)重新配置iptables规则以取消端口的重定向,这样,原本应连接到所述一端口上的后续新连接不再被重定向,还是连向在所述一端口上监听的新进程;以及g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡进程。

【技术特征摘要】
1.一种重启网络服务的方法,其特征在于,包括:
a)所述网络服务的旧进程在一端口上进行监听;
b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同
的另一端口上进行监听;
c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端
口的连接重定向到所述另一端口,使得原本应连接到所述一端口上的后续连接
被全部重定向到在所述另一端口上监听的所述过渡进程;d)一直等待直到所
述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;
e)使用新的配置文件在所述一端口上启动新进程;
f)重新配置iptables规则以取消端口的重定向,这样,原本应连接到所
述一端口上的后续新连接不再被重定向,还是连向在所述一端口上监听的新进
程;以及
g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡
进程。
2.如权利要求1所述的方法,其特征在于,还包括:
如果所述网络服务的服务器在重启网络服务之前已经关闭了连接跟踪机
制,则在执行步骤c之前,加载所述连接跟踪模块来启动所述连接跟踪机制,
使得iptables规则能正常工作。
3.如权利要求2所述的方法,其特征在于,还包括:
在执行完步骤g之后,卸载所述连接跟踪模块以提高服务器的性能。
4.如权利要求1所述的方法,其特征在于,其中,所述连接跟踪模块是
Netfilter框架中的一个功能模块,其被配置为:为每一个经过网络栈的数据
包,生成一个新的连接记录项,此后,所有属于此连接的数据包都被唯一地分
配给这个连接,并标识连接的状态。
5.如权利要求1所述的方法,其特征在于,其中所述一端口是A端口,
而所述另一端口是B端口,则添加所述iptables规则来进行重定向可通过下
述指令来实现:
iptables-APREROUTING-ieth0-tnat-ptcp--dport$A--syn-j
DNAT--to1...

【专利技术属性】
技术研发人员:洪珂陈迅
申请(专利权)人:网宿科技股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1