有谁知道 haproxy 在 mac osx 上将日志写入哪里?我想使用 记录进入我的 Rails 后端的安全 Cookie capture cookie _secure len 32。
我检查了 Console.app,但日志没有显示在那里。
有没有java程序或api可以改变haproxy的配置文件的内容?例如动态添加/删除一些配置。
我们使用 haproxy 在 tcp 模式下进行 thrift(rpc) 服务器负载平衡。但是当后端服务器重新启动时,我们遇到了一个问题。
当我们的 thrift(rpc) 服务器重新启动时,它首先停止侦听 haproxy 配置为连接的端口,但仍会处理正在运行的请求,直到它们全部完成(正常重启)。
因此在重启期间,仍然有客户端通过haproxy到后端服务器建立的连接套接字,而后端服务器不接受任何新连接,但haproxy仍然认为该后端服务器是健康的,并将向该服务器调度新连接。分派到该服务器的任何新连接都将花费相当长的时间来连接,然后超时。
有什么方法可以通知 haproxy 服务器已停止侦听并且不向其分派任何连接吗?
我尝试过以下操作:
timeout connect设置为非常低 + redispatch+retry 3option tcp-check两者都不能解决问题。
我在 centos 7 上使用 haproxy 1.5.2 时遇到问题。我创建了一个包含私钥和自签名证书的 pem 文件,但在配置它时,haproxy 无法启动。
当我按以下顺序获得证书时:
-----BEGIN PRIVATE KEY----
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Feb 20 14:27:29 test.net haproxy-systemd-wrapper[2217]: [ALERT] 050/142729 (2218) : Proxy 'test': no SSL certificate specified for bind '*:443' at [/etc/haproxy/haproxy.cfg:64] (use 'crt').
Feb 20 14:27:29 test.net haproxy-systemd-wrapper[2217]: [ALERT] 050/142729 (2218) : Fatal errors found in configuration.
Feb 20 14:27:29 test.net haproxy-systemd-wrapper[2217]: haproxy-systemd-wrapper: exit, haproxy RC=256
Feb 20 14:30:11 test.net systemd[1]: Starting HAProxy Load Balancer...
Feb 20 14:30:11 test.net …Run Code Online (Sandbox Code Playgroud) 在 HAProxy 中,是否可以为虚拟主机重定向编写 ACL(适用于所有虚拟主机的一条规则)
例子说
如果标头包含backend-name.domain.com---> 使用带有名称的后端backend-name
它应该像这样工作,
a.domain.com -----> backend a
b.domain.com -----> backend b
Run Code Online (Sandbox Code Playgroud)
无需分别为 a 和 b 明确编写 ACL。
在这里,我需要为所有基于域的路由使用一个 ACL,因为我使用通配符 DNS 将 domain.com 的所有子域解析为 HAProxy IP。
我动态添加和删除后端,很难使用脚本为每个新前端编写 ACL。
提前致谢。
我有 3 个不同的 Restful 服务器:w1、w2、w3
引用我的负载均衡器的客户端提供名为“ip”(ipv4) 的 url 参数。请求之间的 url 参数 ip 是不同的:
curl -XGET http://localhost:8080/api/v1/link?ip=x.x.x.x
Run Code Online (Sandbox Code Playgroud)
我想使用 HASH 算法根据 ip 参数平衡 HAProxy 到 w1、w2、w3。
HAProxy 配置如下:
global
#daemon
maxconn 3000
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend workers
backend workers
balance url_param ip
hash-type consistent
server w1 localhost:8080 weight 1 maxconn 1000 check
server w2 localhost:8081 weight 1 maxconn 1000 check
server w3 localhost:8082 weight 1 maxconn 1000 check
listen …Run Code Online (Sandbox Code Playgroud) 我已经设置了 REDIS 复制(1 个主站 + 2 个从站)以及 3 个哨兵和 1 个 HAProxy 负载均衡器。它可以工作,但除了故障转移之外,我想在从属设备之间平衡只读指令的负载。可以使用HAProxy吗?这是我的 HAProxy 配置的一部分:
backend bk_redis
option tcp-check
tcp-check connect
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis_1 localhost:6379 check inter 1s
server redis_2 localhost:6380 check inter 1s
Run Code Online (Sandbox Code Playgroud)
(据我所知)这将只是将所有流量重定向到当前主服务器,而我想在这里进行负载平衡。
在我的 python 应用程序中,浏览器向我的服务器发送请求以获取某些信息。我需要跟踪发出请求的源的 IP。通常,我可以通过此调用获取该信息:
request.headers.get('Remote-Addr')
但是,当我在 HaProxy 这样的负载均衡器后面部署应用程序时,给出的 IP 是负载均衡器的 IP,而不是浏览器的 IP。
当服务器位于负载均衡器后面时,如何获取服务器上浏览器的 IP?
我的案例的另一个问题是我通过 HAProxy 使用从浏览器到我的服务器的 TCP 连接,而不是使用 http。
我使用 HAProxy 作为负载平衡器,并且我有一个 lua 脚本,它将后端名称返回到 haproxy.cfg。想为我的应用程序实施速率限制。
我知道我们可以在 haproxy.cfg 中使用粘性表(如下)来实现速率限制。
Stick-table type ip size 1m expire 60s store http_req_cnt
acl 超出限制 hdr_ip(x-forwarded-for,-1),table_http_req_cnt(incoming) ge 10
http-request tarpit 如果超出限制
http-request track-sc0 hdr_ip(x-forwarded-for,-1)
想使用 lua 实现相同的功能。是否可以使用 lua 访问该粘性表。
提前致谢。
我正在寻找具有基于 URL 的亲和性的服务代理(或负载平衡器)。
这是用于在集群内部的 Kubernetes 中使用的:我正在寻找一个“内部”负载均衡器,我不需要将服务暴露在外面。
默认情况下,Kubernetes 中的 Service 使用“循环”算法。
我想要基于 HTTP URL 的一部分的一些亲和性:第一个请求将转到随机 pod,使用相同 URL 的后续请求将(最好)转到同一个 pod。
我已经阅读了一些关于基于 sourceIP 的亲和性的文档,这是否基于 URL 存在?
我已经快速阅读了 Envoy,也许使用“Ring hash”负载平衡算法就可以了,但我不知道是否可以基于 URL 进行散列。
也许使用 kube-proxy 的“ipvs”代理模式(https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-ipvs)可以,但我只看到“目的地散列”和“源哈希”作为负载平衡算法,我也不知道如何配置它。