Docker 部署HAProxy v2.2.29 并暴露指标接口的问题解决

 更新时间:2023年04月19日 10:45:42   作者:独步秋风  
haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,这篇文章主要介绍了Docker 部署HAProxy v2.2.29 并暴露指标接口,需要的朋友可以参考下

1.背景

在haproxy 2.0 版本之前,prometheus 提供了haproxy_exporter 来对HAProxy进行监控,haproxy 从 2.0 版本开始不再需要使用 haproxy_exporter 进行监控,因为 haproxy 提供了原生的 Prometheus 导出功能。也就是说,从 haproxy 2.0 版本开始,可以直接使用 Prometheus 监控 haproxy,而无需使用额外的 exporter 了。

2.目的

通过Docker 部署HAProxy v2.2.29 并开放指标接口,下面有一键部署脚本,供参考

3.HAProxy 简介

haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作

4.HAProxy 优点

1.免费开源,稳定性也是非常好。单haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。
2.根据官方文档,haproxy可以跑满10Gbps,这个数值作为软件级负载均衡器是相当惊人的。
3.haproxy支持连接拒绝:因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
4.haproxy支持全透明代理(已具备硬件防火墙的典型特点):可以用客户端IP地址或者任何其他地址来连接后端服务器。这个特性仅在Linux 2.4/2.6内核打了tcp proxy补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
5.haproxy现多用于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。
6.自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警。
7.HAProxy支持虚拟主机。

5. HAProxy配置说明

1.global: (全局配置主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关)
2.default : (配置默认参数,这些参数可以被用到frontend,backend,Listen组件) 在此部分中设置的参数值,默认会自动引用到下面的frontend、backend、listen部分中,因引,某些参数属于公用的配置,只需要在defaults部分添加一次即可。而如果frontend、backend、listen部分也配置了与defaults部分一样的参数,Defaults部分参数对应的值自动被覆盖。
3.frontend:( 接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend) frontend是在haproxy 1.3版本以后才引入的一个组件,同时引入的还有backend组件。通过引入这些组件,在很大程度上简化了haproxy配置文件的复杂性。forntend可以根据ACL规则直接指定要使用的后端backend
4.backend : (后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器) 在HAProxy1.3版本之前,HAProxy的所有配置选项都在这个部分中设置。为了保持兼容性,haproxy新的版本依然保留了listen组件配置项。两种配置方式任选一中
5.Listen : (Fronted和backend的组合体) 比如haproxy实例状态监控部分配置

6. 部署脚本

#!/bin/bash

CONFIG_PATH=/home/zoms/haproxy/
sudo mkdir $CONFIG_PATH
sudo cat > $CONFIG_PATH/haproxy.cfg << EOF
global
    log 127.0.0.1 local0 info  # 日志存储到127.0.0.1,以local0输入info级别
    maxconn 4096 # 最大连接数,要考虑到ulimit -n的大小限制
    daemon
    nbproc 2 # 进程数

defaults
    log global
    mode tcp # 使用tcp4层代理模式
    option tcplog
    option dontlognull
    retries 3
    # 在使用基于cookie定向时,一旦后端某一server宕机时,会将会话重新定向至某一上游服务器,必须使用的选项
    option redispatch
    maxconn 4096
    timeout connect 5s
    timeout client 60s #客户端空闲超时时间
    timeout server 15s #服务端超时时间

listen stats
    # 绑定Prometheus Exporter模块
    bind 0.0.0.0:9090
    mode http
    option http-keep-alive
    option forwardfor
    http-request use-service prometheus-exporter if { path /metrics }
EOF

sudo docker stop haproxy;sudo docker rm haproxy;sudo docker run -d  -p 9090:9090  -e HAPROXY_PROMETHEUS_EXPORTER=true --name haproxy -v $CONFIG_PATH/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:2.2.29 ;sleep 3;sudo docker ps -a|grep haproxy

curl localhost:9090/metrics

拓展了解可访问参考HAProxy原理和概念以及HAProxy部署

参考资料

haproxy_exporter 监控HAProxy
HAProxy v2.x 官方配置文档
HAProxy官网
HAProxy部署
HAProxy原理和基本概念

到此这篇关于Docker 部署HAProxy v2.2.29 并暴露指标接口的文章就介绍到这了,更多相关Docker 部署HAProxy内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker的核心及安装的具体使用

    Docker的核心及安装的具体使用

    这篇文章主要介绍了Docker的核心及安装的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 关于docker cgroups资源限制的问题

    关于docker cgroups资源限制的问题

    cgroups是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用量,这篇文章主要介绍了docker cgroups资源限制,需要的朋友可以参考下
    2022-09-09
  • Docker如何使用nginx搭建tomcat集群(图文详解)

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这篇文章主要介绍了Docker使用nginx搭建tomcat集群的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 详解制作各种docker镜像

    详解制作各种docker镜像

    本篇文章主要介绍了制作各种docker镜像,详解的介绍了各种制作的docker镜像的方法,有兴趣的可以了解一下
    2017-05-05
  • 从零搭建docker私有仓库的步骤

    从零搭建docker私有仓库的步骤

    这篇文章主要介绍了从零搭建docker私有仓库的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker部署SQL Server及最佳应用小结

    Docker部署SQL Server及最佳应用小结

    SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),本文总结了容器环境下的部署及实践应用,需要的朋友可以参考下
    2022-08-08
  • 基于Docker实现Redis主从+哨兵搭建的示例实践

    基于Docker实现Redis主从+哨兵搭建的示例实践

    本文主要介绍了基于Docker实现Redis主从+哨兵搭建的示例实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解docker中Dockerfile指令创建镜像

    详解docker中Dockerfile指令创建镜像

    这篇文章主要介绍了详解docker中Dockerfile指令创建镜像,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解Docker Swarm概念与用法

    详解Docker Swarm概念与用法

    这篇文章主要介绍了Docker Swarm概念与用法,帮助大家更好的理解和使用docker容器,感兴趣的朋友可以了解下
    2020-09-09
  • IDEA集成Docker实现打包的方法

    IDEA集成Docker实现打包的方法

    本文主要介绍了IDEA集成Docker实现打包的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论