一、背景
在openshift集群中(以下简称OCP),对外部流量的转发是通过Router控制器控制Route对象中的路由规则来重载Infra节点中的HAProxy配置文件实现的。
在上图中的第3步,Router重载Haproxy配置的过程中是会有有一小段时间Haproxy服务不可用,那么在Haproxy重载过程中是如何做到用户请求不丢失呢?
二、Haproxy在不同版本中处理无缝重载的策略
OpenShift 3.9及更高版本
OpenShift 3.9及更高版本随附了基于HAProxy 1.8 7的HAProxy路由器映像。HAProxy 1.8中已完成的一项功能是内置的无缝重载。
在通过以下方式将侦听socket的文件描述符传递给新的HAProxy进程:另一个socket。由于socket永远不会关闭,因此可以最大程度地减少重载配置的延迟!
OpenShift 3.7及更早版本
OpenShift 3.7和更早版本附带基于HAProxy 1.5或更早版本的HAProxy路由器映像。这些较旧的版本不附带上面详细介绍的无缝重载功能。缺少的无缝重载功能的替代解决方案(以下详细介绍)已放入OpenShift 随附的默认重新加载脚本中。
在OpenShift 3.7和更早版本中,Router的DROP_SYN_DURING_RESTART环境变量必须设置为true,以便启用此功能。默认情况下禁用。另外&