标签: haproxy

订购: 1. nginx 2. 清漆 3. haproxy 4. 网络服务器?

我见过有人建议将所有这些组合在一个流程中,但它们似乎有很多重叠的功能,所以我想深入了解为什么您可能想要在访问实际 Web 服务器之前通过 3 个不同的程序。

nginx:

  • ssl:是的
  • 压缩:是
  • 缓存:是
  • 后端池:是

漆:

  • ssl:不(stunnel?)
  • 压缩:?
  • 缓存:是(主要功能)
  • 后端池:是

快乐代理:

  • ssl:没有(stunnel)
  • 压缩:?
  • 缓存:无
  • 后端池:是(主要功能)

将所有这些链接到您的主要 Web 服务器之前是否只是为了获得它们的一些主要功能优势?

让这么多守护进程一起做类似的事情似乎很脆弱。

您的部署和订购偏好是什么?为什么?

nginx web varnish haproxy

53
推荐指数
5
解决办法
2万
查看次数

如何通过命令行从 haproxy 中删除平衡节点?

我有 haproxy 作为我的负载平衡器运行,并且从 haproxy 附带的 stats Web 界面,我可以将 Web 服务器置于维护模式(并再次将其恢复) - 这太棒了!

但是,我还希望能够从命令行执行相同的操作(用于某些自动部署工作流)。这可能吗,如果可以,怎么办?

非常感谢

load-balancing haproxy

50
推荐指数
4
解决办法
7万
查看次数

HAProxy 优雅重载,零丢包

我正在运行一个 HAProxy 负载平衡服务器来平衡多个 Apache 服务器的负载。我需要在任何给定时间重新加载 HAProxy 以更改负载平衡算法。

这一切都很好,除了我必须在不丢失单个数据包的情况下重新加载服务器(目前重新加载平均成功率为 99.76%,每秒 1000 个请求持续 5 秒)。我对此进行了很多小时的研究,并找到了以下用于“正常重新加载”HAProxy 服务器的命令:

haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
Run Code Online (Sandbox Code Playgroud)

然而,与普通的旧版相比,这几乎没有影响service haproxy reload,它仍然平均下降了 0.24%。

有没有办法在没有任何用户丢包的情况下重新加载 HAProxy 配置文件?

debian haproxy

49
推荐指数
3
解决办法
6万
查看次数

如何为 HAProxy 设置统计信息?

我不知道如何为 HAProxy 设置统计信息。

这是我的配置:

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    daemon
    #debug
    user haproxy
    group haproxy
    maxconn 4096

    stats socket /tmp/haproxy

defaults
    log global
    mode tcp
    option tcplog
    option dontlognull
    option redispatch
    option clitcpka
    option srvtcpka
    option tcpka
    retries 3
    maxconn 2000
    contimeout 10000
    clitimeout 50000
    srvtimeout 50000

    stats enable
    stats hide-version
    stats scope .
    stats realm Haproxy\ Statistics
    stats uri /haproxy?stats
    stats auth xxxxx:xxxxx

    option contstats

listen rtmp :1935
    mode tcp
    balance roundrobin

    server s1 xxx.xxx.xxx.xxx:1935 check …
Run Code Online (Sandbox Code Playgroud)

load-balancing haproxy

42
推荐指数
3
解决办法
11万
查看次数

在 Haproxy 中配置多个 SSL 证书

我的 haproxy 实例服务于 2 个域(主要是为了避免主站点上的 XSS)。

规则看起来像这样

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api
Run Code Online (Sandbox Code Playgroud)

现在 SSL/etc/ssl/haproxy.pem用作默认证书,它是example.com而非的证书example.io

如何为多个域名指定证书?

haproxy

41
推荐指数
3
解决办法
10万
查看次数

您根据什么标准调整 HA 代理配置中的超时?

配置 HA 代理时,您如何决定为超时分配哪些值?我在各种博客中阅读了六个示例,每个人都使用不同的超时时间,但没有人讨论原因。

HAProxy 似乎特别担心客户端、连接和服务器,如果您完全未设置,HAPRoxy 会发出警告:

While not properly invalid, you will certainly encounter various problems
with such a configuration. To fix this, please ensure that all following
timeouts are set to a non-zero value: 'client', 'connect', 'server'.
Run Code Online (Sandbox Code Playgroud)

文档在这方面没有帮助:它建议“略高于 3 秒的倍数”,但不是为什么您要选择 1 对 100 或 42 的倍数。

我使用的 RPM(Amazon Linux 存储库)设置了这些默认值:

timeout connect         10s
timeout client          1m
timeout server          1m
Run Code Online (Sandbox Code Playgroud)

其中两个是3 秒的精确倍数,违反了我见过的唯一官方建议。

如果您没有具体的调整建议,也许一个更简单的问题是:如果超时很短或很长,我应该会出现什么问题?

haproxy

40
推荐指数
2
解决办法
5万
查看次数

如何将 haproxy 日志消息排除在 /var/log/syslog 之外

我使用本文中的提示通过 rsyslogd 设置了 haproxy 日志记录,并且一切似乎都运行良好。日志文件获取日志消息。

但是,来自 haproxy 的每条日志消息也会显示在/var/log/syslog. 这意味着一旦服务器上线,系统日志将毫无用处,因为它会被 haproxy 日志消息覆盖。

我想从/var/log/syslog. 在查看 rsyslogd 文档后,我尝试更改文件/etc/rsyslog.d/50-default.conf

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)

我只是添加了;haproxy.none部分。重新启动 rsyslogd 后,它完全停止工作,直到我恢复更改。

我究竟做错了什么?

haproxy rsyslog

31
推荐指数
2
解决办法
7万
查看次数

HTTP 反向代理是否通常在代理连接的客户端而不是在服务器端启用 HTTP Keep-Alive?

HAProxy 能够在客户端(客户端 <-> HAProxy)启用 HTTP 保持活动,但在服务器端(HAProxy <-> 服务器)禁用它。

我们的一些客户通过卫星连接到我们的网络服务,因此延迟约为 600 毫秒,我认为通过启用保持活动,它会加快速度。我对吗?

这是 Nginx 支持的吗?这是其他软件和硬件负载平衡器中广泛实现的功能吗?除了HAProxy还有什么?

http nginx load-balancing haproxy sticky-sessions

31
推荐指数
2
解决办法
3万
查看次数

30
推荐指数
4
解决办法
3万
查看次数

HAProxy reqrep 在后端请求中删除 URI

关于 HAProxy reqrep 的真正快速问题。我正在尝试重写/替换发送到后端的请求。

我有以下示例域和 URI,它们共享相同的域名,但后端 Web 服务器池不同。

http://domain/web1
http://domain/web2
Run Code Online (Sandbox Code Playgroud)

我希望 web1 转到后端 webfarm1,而 web2 转到 webfarm2。目前这确实发生了。但是,当请求发送到后端时,我想去掉 web1 或 web2 URI。

这是我的 haproxy.cfg

frontend webVIP_80
        mode http
        bind    :80
        #acl routing to backend
        acl web1_path path_beg /web1
        acl web2_path path_beg /web2

        #which backend
        use_backend webfarm1 if web1_path
        use_backend webfarm2 if web2_path
        default_backend webfarm1

backend webfarm1
        mode http
        reqrep ^([^\ ]*)\ /web1/(.*)     \1\ /\2
        balance roundrobin
        option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
        server webtest1 10.0.0.10:80 weight 5 check slowstart 5000ms
        server …
Run Code Online (Sandbox Code Playgroud)

rewrite load-balancing haproxy uri

30
推荐指数
2
解决办法
5万
查看次数