AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 977625
Accepted
nowthatsamatt
nowthatsamatt
Asked: 2019-08-02 10:03:36 +0800 CST2019-08-02 10:03:36 +0800 CST 2019-08-02 10:03:36 +0800 CST

在 HAProxy 进程管理器中安装数据平面 API

  • 772

我正在尝试使用此处详细说明的说明在 HAProxy 启动时启动数据平面 API:https ://www.haproxy.com/documentation/hapee/1-9r1/configuration/dataplaneapi/#using-the-haproxy-process-经理

我的问题是我明白了:

$ curl -X GET --user admin:mypassword "http://localhost:5555/v1/services/haproxy/info"
{"code":500,"message":"dial unix unix@/run/haproxy-master.sock: connect: no such file or directory"}

这很奇怪,因为该文件存在于此处:

$ ls -lah /run/haproxy-master.sock
srwxr-xr-x 1 root root 0 Jul 31 18:05 /run/haproxy-master.sock

并且该进程以 root 用户身份运行,因此它应该能够看到它:

$ sudo systemctl status haproxy.service
[sudo] password for user:
● haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-07-31 18:05:49 -05; 18h ago
     Docs: man:haproxy(1)
           file:/usr/share/doc/haproxy/configuration.txt.gz
  Process: 22227 ExecReload=/bin/kill -USR2 $MAINPID (code=exited, status=0/SUCCESS)
  Process: 22739 ExecReload=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=1/FAILURE)
  Process: 24307 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=0/SUCCESS)
 Main PID: 24335 (haproxy)
    Tasks: 12 (limit: 4418)
   CGroup: /system.slice/haproxy.service
           ├─24335 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
           ├─24339 dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /etc/haproxy/haproxy.cfg --reload-cmd systemctl reload haproxy --reload-delay 5 --userlist controller
           └─24341 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock

Jul 31 18:05:47 lb01.private systemd[1]: Starting HAProxy Load Balancer...
Jul 31 18:05:48 lb01.private haproxy[24335]: [WARNING] 211/180548 (24335) : parsing [/etc/haproxy/haproxy.cfg:33]: 'option httplog' overrides previous 'log-format' in 'defaults' section.
Jul 31 18:05:48 lb01.private haproxy[24335]: [WARNING] 211/180548 (24335) : parsing [/etc/haproxy/haproxy.cfg:117]: keyword 'forceclose' is deprecated in favor of 'httpclose', and will not be supported by future versions.
Jul 31 18:05:49 lb01.private haproxy[24335]: [NOTICE] 211/180548 (24335) : New program 'api' (24339) forked
Jul 31 18:05:49 lb01.private haproxy[24335]: [NOTICE] 211/180548 (24335) : New worker #1 (24341) forked
Jul 31 18:05:49 lb01.private systemd[1]: Started HAProxy Load Balancer.
Jul 31 18:05:51 lb01.private haproxy[24335]: dial unix unix@/run/haproxy-master.sock: connect: no such file or directory
Jul 31 18:06:40 lb01.private haproxy[24335]: dial unix unix@/run/haproxy-master.sock: connect: no such file or directory
Aug 01 12:36:07 lb01.private haproxy[24335]: dial unix unix@/run/haproxy-master.sock: connect: no such file or directory

以下是我认为我的 haproxy.cfg 文件的相关位是:

global
    stats socket /run/haproxy.sock user haproxy group haproxy mode 660 level admin

userlist controller
    user admin insecure-password mypassword

program api
    command dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /etc/haproxy/haproxy.cfg --reload-cmd "systemctl reload haproxy" --reload-delay 5 --userlist controller

我完全理解“stats socket”声明说 /run/haproxy.sock,我尝试将其更改为 /run/haproxy-master.sock 并重新启动它。同样的错误。不确定 haproxy-master.sock 文件来自哪里,猜测它是默认的吗?

haproxy
  • 2 2 个回答
  • 1488 Views

2 个回答

  • Voted
  1. Best Answer
    Marko Juraga
    2019-08-03T03:33:45+08:002019-08-03T03:33:45+08:00

    /run/haproxy-master.sock当 systemd 运行 haproxy 时作为套接字启动:

    24335 usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock

    如果未在命令行上配置,dataplaneapi则使用从主进程传递给子进程的环境变量(特别是从HAPROXY_MWORKER和HAPROXY_MASTER_CLI变量)获取它。为什么它无法阅读它超出了我的范围。

    • 1
  2. faulti
    2019-12-13T23:46:30+08:002019-12-13T23:46:30+08:00

    遇到了同样的问题...

    似乎这受 systemd 预设的影响。观察到,当直接从 cli 启动 haproxy 时没有其他参数,问题就消失了。

    # grep PRETTY /etc/os-release
    PRETTY_NAME="Ubuntu 18.04.3 LTS"
    
    # systemctl cat haproxy.service | grep sock
    Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid" "EXTRAOPTS=-S /run/haproxy-master.sock"
    
    # haproxy -d -f /etc/haproxy/haproxy.cfg
    

    当 haproxy 从 cli 或 systemd 启动时,您可以通过比较活动的 unix 套接字来验证这一点

    # netstat -axe  | grep haproxy.*sock
    

    相应地进行更改:)

    • 1

相关问题

  • 具有动态路由的代理服务器

  • nginx 访问日志忽略某些请求

  • HAProxy 和“分片”

  • 带有 HAProxy 的远程 IP

  • SSL 网站的高可用性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve