HAProxy Data Plane API 实现对 haproxy 的配置管理

本文介绍了如何安装和配置HAProxyDataPlaneAPI,通过API实现无停机haproxy配置管理,包括查询和提交配置更改,支持事务和版本控制,提升运维效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

我们平时对 haproxy 配置的修改,往往是 SSH 连接进去节点,然后手动编辑配置文件,最后重启 haproxy 的服务,不止麻烦,还会影响生产环境。
而 HAProxy Data Plane API ,他通过 API 的方式,给我们提供了管理 haproxy 配置文件的功能,通过这些 API 我们可以实现增删改 frontend、backend、acl、listen 等等,并且自动实现热加载,不需要重启。


一、安装

1. 下载HAProxy Data Plane API

https://github.com/haproxytech/dataplaneapi/releases/download/v2.4.4/dataplaneapi_2.4.4_Linux_x86_64.tar.gz

将压缩包里面的程序包 build/dataplaneapi 放在 /usr/local/bin/

2. 创建 Data Plane API 配置文件 /etc/haproxy/dataplaneapi.hcl

dataplaneapi {
  host = "0.0.0.0"
  port = 5555

  user "admin" {
    insecure = true
    password = "adminpwd"
  }

  transaction {
    transaction_dir = "/tmp/haproxy"
  }
}

haproxy {
  config_file = "/etc/haproxy/haproxy.cfg"
  haproxy_bin = "/usr/local/haproxy/sbin/haproxy"

  reload {
    reload_cmd  = "service haproxy reload"
    restart_cmd = "service haproxy restart"
    reload_delay = "5"
  }
}

3. 修改haproxy的配置文件

使之开启并指向 Data Plane API 的配置文件

haproxy 要使用使用 Data Plane API 必须使用 master-worker 模式启动

global
    master-worker
    stats socket /var/run/haproxy.sock mode 660 level admin


program api
    command dataplaneapi -f /etc/haproxy/dataplaneapi.hcl
    no option start-on-reload

这样启动haproxy后,他就会自动启动Data Plane API,提供功能

在这里插入图片描述

二、简单使用

1. 查询请求

如下地址,访问可以看到能用的API

地址替换你实际的ip和端口,这里 5555 端口是在上面 dataplaneapi.hcl 指定的

http://192.168.203.8:5555/v2/docs

访问需要登录验证,如果是浏览器,直接弹窗输入用户名密码

如果是用 postman 发请求,默认的密码adminpwd,那他对应的token就是:

Authorization

Basic YWRtaW46YWRtaW5wd2Q=

该接口返回如下页面,可以看到他提供的所有 API:
在这里插入图片描述

查询请求都只需要传入token,或者通过httpClient调用使用.basicAuth(“admin”, “adminpwd”);
而提交修改请求需要先开启一个事务或者传入一个版本号,才能执行

2. 提交修改请求

我们如果想要新增一个简单的 backend 到配置里面,我们需要:

获取当前版本号 —— 开启事务 —— 新增 backend —— 提交事务

  • 获取当前版本号

GET

http://192.168.203.8:5555/v2/services/haproxy/configuration/version
  • 开启事务

POST

http://192.168.203.8:5555/v2/services/haproxy/transactions?version=2

注意这个接口后面必须带上当前版本号

然后返回的id要记下来,有用的

在这里插入图片描述

  • 请求创建backend的接口

POST

http://192.168.203.8:5555/v2/services/haproxy/configuration/backends??transaction_id=xxx

把上面返回的id作为这里的参数,backend的信息写进去body
在这里插入图片描述

  • 提交事务

PUT

http://192.168.203.8:5555/v2/services/haproxy/transactions/XXX

在这里插入图片描述

这时候对haproxy配置文件的操作就都提交上去了


总结

欢迎指出我的错误!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值