【技术实现步骤摘要】
本专利技术涉及一种重启网络服务技术,更具体而言,涉及一种零停机重启网络服务的方法和系统,使得在重启网络服务时不仅能正常处理所有的新连接,而且不会造成连接中断。
技术介绍
在现有的各种网络服务中,某些网络服务必须重新启动进程才能完成重启或者重新载入配置文件。典型的例子是在很多负载特别大的web站点中所提供的HAProxy网络服务。此网络服务通过使用SO_REUSEPORT选项,将新进程绑定到与旧进程完全相同的IP地址和端口开始监听新的连接,再发送信号通知老进程关闭监听端口的套接字(socket)。但是,当新老两个进程都绑定到同一个IP和端口,并且老进程的监听套接字还未关闭的短暂时间间隙中新的连接可能会到来。根据Linux内核中SO_REUSEPORT的实现,新连接的第一个报文(SYN报文)可能会被分配给新老进程中的任意一个。如果这个SYN报文被分配给老进程,而紧接着老进程的监听套接字又被关闭,根据TCP协议,服务端会发送一个TCPRST报文给客户端重置这条连接。这会造成一条正常的连接被无条件重置。虽然客户端可以重新发起连接,但这无疑增加了整个数据传输所需要的时间,也给连接客户端与服务器的网络线路增加了不必要的负担。除了在上述HAProxy网络服务中存在必须重新启动进程才能完成重启或者重新载入配置文件的问题之外,还有许多网络服务存在同样的问题,例如:nginx网络服务等。针对所述网络服务中存在的这一问 ...
【技术保护点】
一种重启网络服务的方法,其特征在于,包括: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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。