[发明专利]一种无丢包零停机重启网络服务的方法和系统有效
申请号: | 201610028287.8 | 申请日: | 2016-01-15 |
公开(公告)号: | CN105450782B | 公开(公告)日: | 2018-11-06 |
发明(设计)人: | 洪珂;陈迅 | 申请(专利权)人: | 网宿科技股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F9/445 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 顾嘉运 |
地址: | 200030 上海市徐汇区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 无丢包零 停机 网络服务 方法 系统 | ||
本发明涉及一种无丢包零停机重启网络服务的方法和系统,包括:a)所述网络服务的旧进程在一端口上进行监听;b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;c)在连接跟踪模块运行的同时,添加iptables规则来将定向到所述一端口的连接重定向到所述另一端口;d)一直等待直到所述旧进程上的已有连接全部处理完毕后,才退出所述旧进程;e)使用新的配置文件在所述一端口上启动新进程;f)重新配置iptables规则以取消端口的重定向;以及g)一直等待直到所述过渡进程上的已有连接全部处理完毕后,退出过渡进程。
技术领域
本发明涉及一种重启网络服务技术,更具体而言,涉及一种零停机重启网络服务的方法和系统,使得在重启网络服务时不仅能正常处理所有的新连接,而且不会造成连接中断。
背景技术
在现有的各种网络服务中,某些网络服务必须重新启动进程才能完成重启或者重新载入配置文件。典型的例子是在很多负载特别大的web站点中所提供的HAProxy网络服务。此网络服务通过使用SO_REUSEPORT选项,将新进程绑定到与旧进程完全相同的IP地址和端口开始监听新的连接,再发送信号通知老进程关闭监听端口的套接字(socket)。但是,当新老两个进程都绑定到同一个IP和端口,并且老进程的监听套接字还未关闭的短暂时间间隙中新的连接可能会到来。根据Linux内核中SO_REUSEPORT的实现,新连接的第一个报文(SYN报文)可能会被分配给新老进程中的任意一个。如果这个SYN报文被分配给老进程,而紧接着老进程的监听套接字又被关闭,根据TCP协议,服务端会发送一个TCP RST报文给客户端重置这条连接。这会造成一条正常的连接被无条件重置。虽然客户端可以重新发起连接,但这无疑增加了整个数据传输所需要的时间,也给连接客户端与服务器的网络线路增加了不必要的负担。除了在上述HAProxy网络服务中存在必须重新启动进程才能完成重启或者重新载入配置文件的问题之外,还有许多网络服务存在同样的问题,例如:nginx网络服务等。
针对所述网络服务中存在的这一问题,目前已经提供了一些解决方案。一种简单的做法是在进程重载期间配置iptables规则来丢弃掉新收到的SYN报文。根据TCP协议,客户端在没有收到SYN/ACK报文一段时间后就会重新发送SYN报文,这样,重新发送的SYN报文就能被已经完成重载的新进程顺利接收,从而解决了所述问题。但是,这一方案的不足之处在于,客户端必须等待一段时间直到超时以重新发送SYN报文。而这段等待时间通常都很长,例如在1秒种以上,但进程重载的时间往往只需要几十毫秒,这就导致已经完成重载的新进程必须多等待例如1秒左右的时间才能接收到重新发送的SYN报文。因此,尽管在这一方案中的新连接不会被重置,但却带来了较长时间的延时。
另一个可行的现有解决方案是利用Linux的流量控制工具(tc)。先使用iptables来标记新流入的SYN报文,再用tc工具暂时缓存这些报文。在进程完成重载之后,再释放这些SYN报文。相比于上一解决方案,这一方案所引起的延时相对较短。但是,由于tc工具只能控制流出的流量,因而使用场景受到了一定的限制。例如,在服务进程作为监听进程监听并接受客户端连接时,由于此时SYN报文为流入流量,所述的使用tc工具的方案就无法被用于解决上述问题。
因此,存在一种对能够提供一种具有没有延时、对传出传入的连接都有效且使用场景不受限制等优点的重启网络服务的技术的需求。
发明内容
为了解决现有技术中的所述缺陷,本发明提供了一种新的无丢包零停机重启网络服务的方法和系统。相比于现有的其它方法,其具有无延时,对传出传入的连接都有效且使用场景不受限制等优点。
在本发明的一个方面,提供了一种重启网络服务的方法,所述方法包括:
a)所述网络服务的旧进程在一端口上进行监听;
b)配置并启动过渡进程,所述配置包括使得所述过渡进程在与旧进程不同的另一端口上进行监听;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网宿科技股份有限公司,未经网宿科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610028287.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:网络的地址产生
- 下一篇:一种CDN系统及其回源方法