HAProxy的高级配置选项-配置haproxy的状态页

简介: 这篇文章详细介绍了如何配置HAProxy的状态页,包括隐藏版本信息、设置自动刷新时间、自定义访问URI、配置认证信息以及启用管理功能等,并通过实战案例展示了配置过程和效果。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

  HAProxy的状态页要比nginx的状态页要好看点。不仅如此,HAProxy的状态页显示的内容也要比Nginx丰富哟,接下来就跟着我来配置一下吧。

一.配置HAProxy状态页相关参数

  stats enable   
    基于默认的参数启用状态页(stats page)  

  一旦启用了状态页功能,咱们就可以自定义状态页的一些基础配置,常见的配置参数如下所示:
    stats hide-version   
      隐藏版本,即不添加该参数默认会显示haproxy的版本信息哟。  
    stats refresh <delay>       设定自动刷新时间间隔,即设置状态页面自动刷新的间隔时间,若不配置可能就得我们手动刷新当前页面了。  
    stats uri <prefix>       自定义访问状态也的uri(stats page uri),默认值:/haproxy?stats  
    stats realm <realm>       账户认证时的提示信息,例如:stats realm : HAProxy\Statistics  
    stats auth <user>:<passwd>       认证时的账号和密码,可使用多次,默认不启用认证方式(no authentication)。  
    stats refresh 5s   
      定义页面自动刷新间隔时间。  
    stats admin { if | unless } <cond>   
      启用stats page中的管理功能,即我们可以通过网页的点鼠标的方式来管理后端的服务器。

二.配置HAProxy状态页实战

1>.编辑haproxy的配置文件

[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg
global
    maxconn 100000
    chroot /yinzhengjie/softwares/haproxy
    stats socket /yinzhengjie/softwares/haproxy/haproxy.sock mode 600 level admin
    user haproxy
    group haproxy
    daemon
    nbproc 2
    cpu-map 1 0
    cpu-map 2 1
    nbthread 2
    pidfile /yinzhengjie/softwares/haproxy/haproxy.pid
    log 127.0.0.1 local5 info

defaults
    option http-keep-alive
    option  forwardfor
    option redispatch
    option abortonclose
    maxconn 100000
    mode http
    timeout connect 300000ms
    timeout client  300000ms
    timeout server  300000ms

listen status_page
    bind 172.30.1.102:8888
    stats enable
    stats uri /haproxy-status
    stats auth    admin:yinzhengjie
    stats realm "Welcome to the haproxy load balancer status page of YinZhengjie"

listen WEB_PORT_80
    bind 172.30.1.102:80
    balance roundrobin
    cookie HAPROXY-COOKIE insert indirect nocache
    server web01 172.30.1.106:80  cookie httpd-106 check inter 3000 fall 3 rise 5
    server web02 172.30.1.107:80  cookie httpd-107 check inter 3000 fall 3 rise 5
    server web03 172.30.1.108:80  cookie httpd-107 check inter 3000 fall 3 rise 5 backup
[root@node102.yinzhengjie.org.cn ~]#

2>.启动haproxy服务

[root@node102.yinzhengjie.org.cn ~]# ss -ntl
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      128                                          *:22                                                       *:*                  
LISTEN      0      128                                         :::22                                                      :::*                  
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# systemctl start haproxy
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# ss -ntl
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      128                               172.30.1.102:80                                                       *:*                  
LISTEN      0      128                                          *:22                                                       *:*                  
LISTEN      0      128                               172.30.1.102:8888                                                     *:*                  
LISTEN      0      128                                         :::22                                                      :::*                  
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]#

三.验证HAProxy状态页

1>.通过浏览器访问"http://node102.yinzhengjie.org.cn:8888/haproxy-status"并输入在haproxy配置文件中定义的认证用户名和密码,如下图所示。

2>.状态页面参数说明-**General process information**

  pid =  12190 (process #1, nbproc = 2, nbthread = 2)
    pid为当前pid号,process为当前进程号,nbproc和nbthread为一共多少进程和每个进程多少个线程

  uptime =  0d 0h11m18s
    启动了多长时间

  system limits: memmax = unlimited; ulimit-n = 200041
    系统资源限制:内存/最大打开文件数/

  maxsock =  200041; maxconn =  100000; maxpipes =  0
    最大socket连接数/单进程最大连接数/最大管道数maxpipes。
    温馨提示:这里显示的最大连接数是在配置haproxy参数中设定的,但千万别忘记了在Linux操作系统中修改最大连接数(使用ulimit命令)哟~

  current conns = 1; current pipes = 0/0; conn rate = 1/sec 
    当前连接数/当前管道数/当前连接速率
    温馨提示:生产环境中我们应该监控haproxy当前连接数的值(current conns)。

  Running tasks: 1/8; idle = 100 %
    运行的任务/当前空闲率

  active UP:
    在线服务器,如下图所示,web01和web02是在线状态(注意观察这两行的背景颜色)。

  backup UP: 
    标记为backup的服务器,如下图所示,web03是backup状态(这是因为我们在配置文件中使用backup关键字标记了它为备份状态,注意观察改行的背景颜色),也就是说当web01和web02同时挂掉后web03才会被响应客户请求。

  active UP, going down:
    监测未通过正在进入down过程,我们是通过check指令来对后端服务器进行状态监测的。

  backup UP, going down:
    备份服务器监测未通过正在进入down过程。

  active DOWN, going up:
    down的服务器正在进入up过程。

  backup DOWN, going up:
    备份服务器正在进入up过程。

  active or backup DOWN:
    在线的服务器或者是backup的服务器已经转换成了down状态。

  not checked:
    标记为不监测的服务器,我们可以手动将check指令的参数注释掉,则表示当前节点被标记为不监测的服务器状态啦。

  active or backup DOWN for maintenance (MAINT) 
    active或者backup服务器认为下线的。
    温馨提示:我们可以通过socat工具(echo "disable server WEB_PORT_80/web01" | socat stdio /yinzhengjie/softwares/haproxy/haproxy.sock)来让haproxy节点下线,但是在多进程的情况下我们发现有的进程将后端服务器标记为down状态,有的进程却没有将后端服务器标记为down状态,这是为什么呢?(解决办法就是通知每一个进程将指定的后端服务器标记为down状态,在这里请允许我先卖个关子,在后面的笔记会为大家揭晓答案)。

  active or backup SOFT STOPPED for maintenance 
    active或者backup被认为软下线(我们可以通过使用socat命令对haproxy的套接字发送指令让某台节点的权重为0,从而该节点将变为down状态。但是只要重启haproxy服务那么通过socat工具的所有操作都会被清空,即还原到haproxy配置文件的状态)。   

  关于后端服务器检测相关参数,博主推荐阅读:     
    https://www.cnblogs.com/yinzhengjie/p/12114081.html

3>.反向代理节点的相关参数说明

[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg            #生产环境中配置haproxy状态页实战案例
global
    maxconn 100000
    chroot /yinzhengjie/softwares/haproxy
    stats socket /yinzhengjie/softwares/haproxy/haproxy.sock mode 600 level admin
    user haproxy
    group haproxy
    daemon
    nbproc 2
    cpu-map 1 0
    cpu-map 2 1
    nbthread 2
    pidfile /yinzhengjie/softwares/haproxy/haproxy.pid
    log 127.0.0.1 local5 info

defaults
    option http-keep-alive
    option  forwardfor
    option redispatch
    option abortonclose
    maxconn 100000
    mode http
    timeout connect 300000ms
    timeout client  300000ms
    timeout server  300000ms

listen status_page
    bind 172.30.1.102:8888
    stats enable
    stats uri /haproxy-status
    stats auth    admin:yinzhengjie
    stats realm "Welcome to the haproxy load balancer status page of YinZhengjie"
    stats hide-version
    stats admin if TRUE
    stats refresh 5s

listen WEB_PORT_80
    bind 172.30.1.102:80
    balance roundrobin
    cookie HAPROXY-COOKIE insert indirect nocache
    server web01 172.30.1.106:80  cookie httpd-106 check inter 3000 fall 3 rise 5
    server web02 172.30.1.107:80  cookie httpd-107 check inter 3000 fall 3 rise 5
    server web03 172.30.1.108:80  cookie httpd-107 check inter 3000 fall 3 rise 5 backup
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# systemctl restart haproxy                #别忘记重启haproxy使得配置文件生效。
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]#

[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg           #生产环境中配置haproxy状态页实战案例(别忘记重启haproxy使得配置生效,可以看到如下图所示的效果)

  session rate:  
    每秒的连接会话信息,它还包括了以下详细参数:
      cur:  
        每秒的当前会话数量
      max:  
        每秒新的最大会话数量
      limit:  
        每秒新的会话限制量  
  sessions:  
    会话信息,它还包括了以下详细参数:
      cur:  
        当前会话量
      max:  
        最大会话量
      limit:   
        限制会话量
      Total:  
        总共会话量
      LBTot:  
        选中一台服务器所用的总时间
      Last:  
        和服务器的持续连接时间

  Bytes:  
    流量统计,它还包括了以下详细参数:
      In:  
        网络的字节输入总量
      Out:  
        网络的字节输出总量

  Denied:  
    拒绝统计信息,它还包括了以下详细参数:
      Req:  
        拒绝请求量
      Resp:  
        拒绝回复量

  Errors:  
    错误统计信息,它还包括了以下详细参数:
      Req:  
        错误请求量
      conn:  
        错误链接量
      Resp:  
        错误响应量

  Warnings:  
    警告统计信息,它还包括了以下详细参数:
      Retr:  
        重新尝试次数
      Redis:  
        再次发送次数

  Server:  
    后端服务器(real server)监控信息,它还包括了以下详细参数:
      Status:  
        后端机的状态,包括UP和DOWN
      LastChk:  
        持续检查后端服务器的时间
      Wght:  
        权重
      Act:  
        活动链接数量
      Bck:  
        备份的服务器数量
      Chk:  
        心跳检测时间
      Dwn:  
        后端服务器连接后都是DOWN的数量
      Dwntme:  
        总的downtime时间
      Thrtle:  
        server 状态
目录
相关文章
|
存储 数据库
掌握GitLab数据备份与恢复:全面操作指南
【10月更文挑战第11天】 GitLab作为一个流行的开源代码仓库管理系统,其数据的安全性和完整性至关重要。本文将详细介绍GitLab数据的备份与恢复流程,帮助用户掌握如何保护和管理他们的GitLab实例。
1961 0
|
应用服务中间件 nginx
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
9040 0
|
网络协议 网络虚拟化
CentOS8下yum源配置及nmcli命令简单介绍
CentOS8下yum源配置及nmcli命令简单介绍
3772 0
CentOS8下yum源配置及nmcli命令简单介绍
|
时序数据库
客户端连接InfluxDB
客户端连接InfluxDB
1465 0
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
663 8
HAProxy的高级配置选项-Web服务器状态监测
|
消息中间件 Java 中间件
RocketMQ实战—2.RocketMQ集群生产部署
本文主要介绍了大纲什么是消息中间件、消息中间件的技术选型、RocketMQ的架构原理和使用方式、消息中间件路由中心的架构原理、Broker的主从架构原理、高可用的消息中间件生产部署架构、部署一个小规模的RocketMQ集群进行压测、如何对RocketMQ集群进行可视化的监控和管理、进行OS内核参数和JVM参数的调整、如何对小规模RocketMQ集群进行压测、消息中间件集群生产部署规划梳理。
RocketMQ实战—2.RocketMQ集群生产部署
|
传感器 物联网 Linux
Python:蓝牙心率广播设备监测(BLE 心率监测器)技术解析与实现
本文探讨了如何使用 Python 脚本与支持蓝牙低功耗(BLE)心率广播的设备交互以获取实时心率数据。重点分析了 BLE 协议、GATT 服务模型,以及具体方法。此外,还讨论了华为手表等设备的兼容性问题。
2910 19
|
监控 安全 测试技术
选择Postman免费版还是付费版,进行 API 测试呢?
深入了解 Postman 免费版和付费版的细节,看看哪一个更适合您的 API 需求。
|
应用服务中间件 PHP Apache
HAProxy的高级配置选项-ACL篇之匹配访问路径案例
这篇文章介绍了HAProxy的高级配置选项,特别是如何使用ACL(访问控制列表)匹配访问路径以实现不同请求路径的流量分发到不同后端服务器的案例,通过实战配置展示了如何基于URL路径将请求定向到处理静态或动态内容的服务器。
488 5
HAProxy的高级配置选项-ACL篇之匹配访问路径案例

热门文章

最新文章