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


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

                                           作者:尹正杰

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

      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 : HAProxyStatistics
        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 状态
  • 相关阅读:
    Django基础(一)_URLconf、Views、template、ORM
    MySQL数据库(8)_MySQL数据库总结
    MySQL数据库(6)_用户操作与权限管理、视图、存储过程、触发器、基本函数
    前端基础之jquery_mouse相关操作与不同
    前端基础之jquery
    前端基础之JavaScript_(5)_DOM对象总结
    前端基础之JavaScript_(4)_js的作用域
    前端基础之JavaScript_(3)_DOM对象
    MSB与LSB Big Endian Little Endian
    samba配置
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12147925.html
Copyright © 2020-2023  润新知