我正在寻找一种优雅地重新加载 haproxy 的解决方案。我有一个正在运行的 nginx 服务器,它将请求传递给 Haproxy,有时我会重新加载 Haproxy 配置。但我观察到在重新加载时所有现有连接都被切断,haproxy 后端队列显示 0 个请求(从 haproxy 的套接字统计数据中获取)。
我正在使用有关该问题的几篇博客文章和 haproxy 文档中提到的方法:
重新加载:
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf (</var/run/haproxy.pid)
Run Code Online (Sandbox Code Playgroud)
开始 :
haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
Run Code Online (Sandbox Code Playgroud)
如果有人可以提出任何解决方案,我们将不胜感激。下面是我的 haproxy 配置文件
global
maxconn 64000
ulimit-n 200000
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
spread-checks 5
stats socket /etc/haproxy/stats
defaults
log global
mode http
balance roundrobin
maxconn 64000
option abortonclose
option httpclose
retries 3
option redispatch
timeout client 30000
timeout connect 30000
timeout server 30000
stats …Run Code Online (Sandbox Code Playgroud) 我想问一下 Nginx 请求重试的问题。我在后端运行一个 Nginx,然后将请求发送到 HaProxy,然后 HaProxy 将其传递到 Web 服务器并处理请求。我正在动态重新加载我的 Haproxy 配置以提供弹性。问题是当我重新加载 Haproxy 时请求被丢弃。所以我想要一个可以从 Nginx 重试的解决方案。我查看了http模块中的proxy_connect_timeout、proxy_next_upstream以及服务器模块中的max_fails和fail_timeout。我最初在上游连接中只有 1 个服务器,所以我现在只增加了两次,并且更少的请求被丢弃(仅当)在上游中说同一个服务器两次,如果我有相同的服务器 3-4 倍,则丢弃增加)。
所以,首先我现在想要的是,当请求无法建立从 Nginx 到 Haproxy 的连接时,因此在重新加载时,连接似乎被视为错误,并且请求会立即被丢弃。
那么我怎样才能指定失败后我想重试从 Nginx 到上游的请求的时间,或者指定 Nginx 将其视为失败请求之前的时间。
(我尝试增加 proxy_connect_timeout - 没有帮助,mail_retires,fail_timeout 并且还放置了相同的上游服务器两次(到目前为止给出了最好的结果)
Nginx 配置文件
上游 gae_sleep {
server 128.111.55.219:10000;
Run Code Online (Sandbox Code Playgroud)
}
服务器 {
listen 8080;
server_name 128.111.55.219;
root /var/apps/sleep/app;
# Uncomment these lines to enable logging, and comment out the following two
#access_log /var/log/nginx/sleep.access.log upstream;
error_log /var/log/nginx/sleep.error.log;
access_log off;
#error_log /dev/null crit;
rewrite_log off;
error_page 404 = …Run Code Online (Sandbox Code Playgroud)