【发布时间】:2015-08-19 17:45:32
【问题描述】:
我们使用 haproxy 1.5.14 作为 HTTP 的负载平衡器以及多个域主机名的 HTTPS 端点。对于 HTTPS 端点,我们使用 SSL NI 标头检查来找出正确的后端节点。
在我当前存在多个 https 端点的安装中,我注意到后端 qtime stat vaue 非常高(200-300ms),这让我很不安。 qcur(当前队列长度)同时为零。 我们基本上是在 haproxy 端将所有请求减慢 200ms-300ms 吗? (不确定我是否正确理解了 qtime 的这个值)如果是 - 我肯定在寻找优化它的方法。
仅在 HTTPS 后端而非 HTTP 后端上观察到此行为。我想知道这是否是用于确定正确的后端节点的前端 SNI 标头检查的结果。 SSL SNI 检查期间请求会留在队列中吗?
我们当前的配置(仅适用于 HTTPS 端点):
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 40000
ulimit-n 100000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
retries 3
timeout http-request 1s
timeout queue 1m
timeout connect 3s
timeout client 1m
timeout server 30s
timeout http-keep-alive 2s
timeout check 3s
maxconn 40000
frontend https-in *:443
mode tcp
option tcplog
option socket-stats
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend foo-ssl if { req_ssl_sni -m beg foo }
use_backend bar-ssl if { req_ssl_sni -m beg bar }
backend foo-ssl *:443
balance leastconn
mode tcp
option ssl-hello-chk
server foo1 x.x.x.x:443 maxconn 10000 check
server foo2 x.x.x.x:443 maxconn 10000 check
backend bar-ssl *:443
balance leastconn
mode tcp
option ssl-hello-chk
server bar1 x.x.x.x:443 maxconn 10000 check
server bar2 x.x.x.x:443 maxconn 10000 check
【问题讨论】:
标签: performance ssl load-balancing haproxy sni