标签: haproxy

HAProxy 的配置中“acl cdn_name hdr_beg(host) -i foor.bar.com”是什么意思?

我最近接管了一个使用 HAProxy 的环境,我正在尝试了解配置及其含义,但我发现它的某些方面不清楚。

认为上面的意思是,如果主机头以“foo.bar.com”开头,则使用 cdn cdn_name,但我不完全确定。有人可以为我确认吗?

谢谢!

web-server reverse-proxy haproxy

7
推荐指数
1
解决办法
7244
查看次数

HAProxy 基于 URI 重定向和匹配

我正在尝试设置一个测试 haproxy 服务器,它将涵盖 2 个基本领域。如果用户使用 http 但仅当特定 uri 部分不存在时自动重定向到 https。

例如,如果用户访问http://www.test.com,他们将被重定向到https://www.test.com。但是如果用户访问https://www.test.com/bloghttp://www.test.com/blog ,他们将被重定向到http://www.test.com/blog

这是我当前的测试 haproxy.cfg。我正在运行 haproxy 1.5-dev17

非常感谢您对此的任何帮助。

global
  log 127.0.0.1   local0
  log 127.0.0.1   local1 notice
  maxconn 15000
  user haproxy
  group haproxy

defaults
  log     global
  mode    http
  option  httplog
  option  dontlognull
  option abortonclose
  option  http-server-close
  option redispatch
  retries 3  
  timeout queue 600s
  timeout connect 9s
  timeout client 60s
  timeout server 60s
  balance  roundrobin

# Set up application listeners here.

frontend incoming …
Run Code Online (Sandbox Code Playgroud)

nginx redirect haproxy

7
推荐指数
1
解决办法
3万
查看次数

为 HAProxy 响应设置标头

1.5 版中的新http-response add-header指令是该指令。正如文档中所写的那样- 这可以用于frontend,backendlisten

我在一个frontend部分中尝试做的事情:

use_backend some_backend                if some_condition
http-response add-header Vary Origin    if some_condition
Run Code Online (Sandbox Code Playgroud)

但这没有效果。放置在该backend部分中的同一行工作得很好。有人可以帮助我理解,我在这里缺少什么吗?我不明白,为什么这在该frontend部分不起作用。

My guess would be that within the fronted there is no response yet and so the directive fails. I tried using it before and after die use_backend directive.

haproxy

6
推荐指数
1
解决办法
8223
查看次数

Haproxy 使用 10GB 内存和 100% CPU 和 50k 连接

在 Ubuntu 14.04 x64 服务器上,Haproxy 使用 3.3 GB 内存和 6.8 GB 交换,同时处理 52k 连接。在大部分流量被重定向到另一个 haproxy 框之前,CPU 使用率也一直飙升至 100%。流量主要是持久性 TCP 连接。

pid = 3185 (process #1, nbproc = 1)
uptime = 0d 6h14m21s
system limits: memmax = unlimited; ulimit-n = 524341
maxsock = 524341; maxconn = 262144; maxpipes = 0
current conns = 54303; current pipes = 0/0
Running tasks: 1/54336
Run Code Online (Sandbox Code Playgroud)

注意到内存使用量在大约 50k 连接时急剧上升。ulimit -n设置为1048576

问题:内存使用量是否异常高?我们怎样才能减少内存消耗?

我还从另一个问题中阅读了以下内容,是否相关?我应该如何检查 TCP 设置是否足够(对于持久 TCP 连接),以免导致内存使用量大幅增加?

At 54000 concurrent connections, you …
Run Code Online (Sandbox Code Playgroud)

networking linux ubuntu tcp haproxy

6
推荐指数
1
解决办法
5950
查看次数

HAproxy 1.5 可信 CA

我试图让 HAproxy 1.5.x 信任机器 ( /etc/ssl/certs)信任存储中已有的任何证书颁发机构,而无需明确指定ca-file要信任的单个根颁发机构证书。我想避免给定后端服务器使用由不同机构颁发的证书并导致中断的情况,因为该后端服务器不再受信任——尽管 CA 位于机器信任存储中。

在文件的给定backend部分中haproxy.cfg,该server行有一个名为ca-file. 此选项指示 HAproxy 使用提供的权限验证后端服务器证书的权限。问题是这指向单个 CA。

我找到了这个ca-base选项。除非我弄错了,否则这只是避免必须ca-file在每个声明中指定完整路径的快捷方式。

ssl haproxy

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

HAProxy 和中间 SSL 证书问题

我们目前在 Ubuntu AWS 集群上验证 Comodo SSL 证书时遇到问题。浏览器很好地显示了站点/内容并显示了所有相关的证书信息(至少是我们检查过的所有信息),但某些网络代理和在线 SSL 检查器显示我们有一个不完整的链。

我们尝试了以下方法来尝试解决此问题:

  1. 将haproxy升级到最新的1.5.3
  2. 创建了一个包含所有证书(站点、中间、w/ 和 w/out 根)的串联“.pem”文件
  3. 向 haproxy.cfg 文件中的“bind”行添加了一个明确的“ca-file”属性。

“.pem”文件使用 openssl 验证是否正常。各种中间证书和根证书已安装并显示在 /etc/ssl/certs 中。但是支票仍然带有不完整的链条。

任何人都可以建议我们可以检查的其他任何内容或我们可以尝试解决此问题的任何其他更改吗?

提前谢谢了...

更新:来自 haproxy.cfg(我相信)的唯一相关行是这个:

bind *:443 ssl crt /etc/ssl/domainaname.com.pem
Run Code Online (Sandbox Code Playgroud)

更新 2:输出openssl s_client

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=27:certificate not trusted
verify return:1 …
Run Code Online (Sandbox Code Playgroud)

ubuntu ssl haproxy amazon-web-services

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

在 CentOS 7 上与 systemctl 和 Haproxy 的奇怪交互

通过 systemctl 运行 haproxy 与手动运行它不同

  • 在手动启动时,一切正常。
  • 从 systemctl 开始,haproxy 无法找到它代理的服务,并以 503 回答。

这是通过 systemctl 启动时的输出:

> sudo systemctl status  -l haproxy.service
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
                Active: active (running) since Wed 2014-12-24 08:08:49 EST; 4min 59s ago
                Main PID: 20307 (haproxy)
                CGroup: /system.slice/haproxy.service
                ??20307 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid

                Dec 24 08:08:49 localhost.localdomain systemd[1]: Starting HAProxy Load Balancer...
                Dec 24 08:08:49 localhost.localdomain systemd[1]: Started HAProxy Load Balancer.
Run Code Online (Sandbox Code Playgroud)

像这样,haproxy 只对我的后端说 503。

如果我现在停止 haproxy 服务,而是在命令行上手动运行它,如下所示:

sudo /usr/sbin/haproxy …
Run Code Online (Sandbox Code Playgroud)

centos haproxy systemctl

6
推荐指数
1
解决办法
6190
查看次数

Haproxy 解析器部分 + Amazon ELB

我目前在亚马逊 ELB 前使用 Haproxy-1.6-dev2,我遇到了 DNS 解析问题。由于新resolvers功能,我正在使用 haproxy 的开发版本,但无法让 Haproxy 在不重新启动 haproxy 进程的情况下触发服务器内部 IP 地址列表的更改。Amazon 更新其 ELB 的 IP,而 Haproxy 继续使用旧 IP 地址而不更新。下面是一个简化的配置文件。

global
    log 127.0.0.1   local0
    stats socket /var/run/haproxy.sock

defaults
    log global
    mode http
    option httpchk GET /
    option log-health-checks
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

resolvers dns
    nameserver public-0  xx.xx.xx.xx:53
    hold valid 1s

frontend http
    bind *:8000
    default_backend site-backend

backend site-backend
    balance leastconn
    server site sub.example.com:80 resolvers dns check inter 1000
Run Code Online (Sandbox Code Playgroud)

我在 …

domain-name-system haproxy

6
推荐指数
1
解决办法
6079
查看次数

HaProxy 给予 - 503 服务不可用

我正在使用以下配置为两个 Tomcat 服务器执行负载平衡。我将 HAProxy 配置为执行 SSL/TLS 桥接/重新加密。

#------------------------------------------------- --------------------
# 可能的 Web 应用程序的示例配置。见
# 在线完整配置选项。
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#------------------------------------------------- --------------------

#------------------------------------------------- --------------------
# 全局设置
#------------------------------------------------- --------------------
全球的
    # 要让这些消息最终出现在 /var/log/haproxy.log 中,您将
    # 需要:
    #
    # 1) 配置syslog 以接受网络日志事件。这个做完了
    # 通过在 SYSLOGD_OPTIONS 中添加“-r”选项
    # /etc/sysconfig/syslog
    #
    #2) 配置local2事件到/var/log/haproxy.log
    # 文件。可以添加如下一行
    # /etc/sysconfig/syslog
    #
    # local2.* /var/log/haproxy.log
    #
    日志 127.0.0.1 local2 调试

    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    最大康 4000
    用户haproxy
    组haproxy
    守护进程

    # 打开 stats unix 套接字
    统计套接字/var/lib/haproxy/stats
    ssl-server-verify 无

#------------------------------------------------- -------------------- …

ssl https load-balancing haproxy

6
推荐指数
1
解决办法
6073
查看次数

错误 2006 (HY000):MySQL 服务器消失了......(HaProxy / Galera)

我在多主设置中设置了一个由 3 个 MariaDB 服务器组成的集群,它运行良好。我为 HaProxy 添加了第 4 个服务器以进行负载平衡和循环,以便我们可以有一点冗余,这也可以正常工作,除了 1 个问题。

我登录到运行以下查询的 HaProxy 服务器上的 MySQL 客户端:

show variables like 'server_id';
Run Code Online (Sandbox Code Playgroud)

我正在获取结果,但是如果我等待 5 秒或更长时间并再次运行查询,我会收到以下错误:

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    52
Current database: *** NONE ***
Run Code Online (Sandbox Code Playgroud)

在那之后,我得到了不同 server_id 的结果,这表明负载平衡正在工作。这导致的问题是,当我尝试从 Spring/Java 应用程序连接时,我可以在短时间内运行查询并且连接断开。我想如果我可以在 HaProxy 服务器上解决它,那将解决我遇到的其他问题。

编辑:添加 HAPROXY.CFG

global
    log 127.0.0.1 local0 notice
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    user haproxy
    group haproxy
    maxconn 4096
    daemon

defaults
    log global
    retries 2
    timeout connect 3000
    timeout server 5000 …
Run Code Online (Sandbox Code Playgroud)

mysql java haproxy mariadb

6
推荐指数
1
解决办法
6728
查看次数