我们正在将微服务应用程序迁移到dcos。当前版本的应用程序使用nginx作为反向代理。在转向dcos时,我们想用marathon-lb替换nginx。这很有效,只有一个例外。 Nginx返回预期的http-server-close
http标头,但marathon-lb不返回。
我们没有以任何方式更改marathon-lb的默认配置,据我所知,haproxy具有预期的默认值。具体来说,defaults
load-server-state-from-file global
log global
retries 3
backlog 10000
maxconn 10000
timeout connect 3s
timeout client 30s
timeout server 30s
timeout tunnel 3600s
timeout http-keep-alive 1s
timeout http-request 15s
timeout queue 30s
timeout tarpit 60s
option dontlognull
option http-server-close
option redispatch
选项。这是配置中的一个片段。
"labels": {
"HAPROXY_0_PATH": "-i /alerts",
"HAPROXY_0_HTTP_BACKEND_PROXYPASS_PATH": "/alerts",
"HAPROXY_0_VHOST": "foo.bar.com",
"HAPROXY_GROUP": "external"
}
我的服务的标签格式如下:
{{1}}
我做错了什么?
答案 0 :(得分:0)
尝试使用option http-keep-alive
和option prefer-last-server
。
请参阅:Haproxy + netty: Way to prevent exceptions on connection reset?
您可以按HAPROXY_GLOBAL_DEFAULT_OPTIONS
覆盖默认配置。
请参阅:https://github.com/mesosphere/marathon-lb#haproxy-global-default-options