• HAProxy 日志输出及配置


    正所谓,没有软件敢说没有bug,人无完人,software is  not perfect software。是软件就可能存在bug,那么如果出现bug,我们就要分析对我们业务的影响及可能如何避免bug的再现。

    HAProxy也不例外,也可能在特殊场景下出现bug,因此我们就有必要记录下必要的日志信息。今天来聊下HAProxy的日志输出及对应参数配置。

    HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAproxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。    

    说到四层模式及七层模式,我们就要回忆下,在RabbitMQ集群搭建过程中,有没有使用到四层模式呢?答案是有的,使用TCP协议  进行双向的通信代理 使用的就是四层协议。

    HAProxy配置文件可以分为五部分,在上次RabbitMQ集群搭建也简单聊了下,

    1 global:    全局配置参数段,主要用来控制Haproxy启动前的进程及系统相关设置
    2 defaults:  配置一些默认参数,如果frontend,backend,listen等段未设置则使用defaults段设置
    3 listen: 监听配置
    4 frontend:  用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理 
    5 backend:  定义后端服务器集群,以及对后端服务器的一些权重、队列、连接数等选项的设置

    HAProxy的安装我们不再介绍,在安装完毕以后,进行的日志输出配置:

    根据实际需求,更改配置文件,我的配置如下
            global                                    #全局设置
           log 127.0.0.1   local3     #local3是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的日志级别 
           #log loghost    local0 info
           maxconn 4096                         #最大连接数
           chroot /usr/local/haproxy
           uid 99                                #所属运行的用户uid
           gid 99                                #所属运行的用户组
           daemon                               #以后台形式运行haproxy
           nbproc 2                             #启动2个haproxy实例
           pidfile /usr/local/haproxy/haproxy.pid     #将所有进程写入pid文件
           #debug
           #quiet
     
        defaults                           #默认设置
     
           #log    global
     
           log     127.0.0.1       local3         #日志文件的输出定向
     
           mode    http                        #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
     
           option  httplog                     #日志类别,采用httplog
     
           option  dontlognull
     
           option  forwardfor                  #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
     
           option  httpclose                   #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
     
           retries 3                           #3次连接失败就认为服务器不可用,主要通过后面的check检查
     
           option  redispatch                  #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
     
           maxconn 2000                        #最大连接数
     
           stats uri /stats                    #haproxy 监控页面的访问地址
                                             浏览器中输入haproxy监控地址:http://10.10.100.39/stats查看状态
     
           contimeout      5000                #连接超时时间
     
           clitimeout      50000               #客户端连接超时时间
     
           srvtimeout      50000               #服务器端连接超时时间
     
          stats auth  admin:admin              #设置监控页面的用户和密码:Frank
     
          stats hide-version                   #隐藏统计页面的HAproxy版本信息
     
     
     
    frontend http-in                            #前台
     
           bind *:80
     
           mode    http
     
           option  httplog
     
           log     global
           
           acl web1 hdr(host) -i www.9888.cn 9888.cn
          #acl后面是规则名称,-i是要访问的域名,如果访问www.9888.cn 这个域名就分发到下面的webserver1 的作用域。
           
            use_backend webserver1 if web1
    
    backend webserver1                                #后台
         mode http
         balance   roundrobin                         #负载均衡算法
         option  httpchk /index.html                  #健康检查
         server     web01 10.10.100.41:80  check cookie 1 inter 2000 fall 3 weight 30
         server     web02 10.10.100.18:80  check cookie 2 inter 2000 fall 3 weight 30
      #cookie 1表示serverid为1,check inter 1500 是检测心跳频率
      #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重.   

    对于Centos,日志级别分别为:

    Centos6.x中变成了:/etc/init.d/rsyslog
    在配置前,我们先来了解下日志的level: local0~local7 16~23保留为本地使用
    emerg 0       系统不可用
    alert 1       必须马上采取行动的事件
    crit 2        关键的事件
    err 3        错误事件
    warning 4      警告事件
    notice 5      普通但重要的事件
    info 6       有用的信息
    debug 7      调试信息

    2.编辑系统日志文件配置 vim /etc/rsyslog.conf

    在文件末尾追加:local0.*                      /var/log/haproxy/haproxy.log

    3、创建HAProxy记录日志文件 并授权

    mkdir /var/log/haproxy && chmod a+w /var/log/haproxy

    4.配置rsyslog的配置文件,开启远程日志

    vim /etc/sysconfig/rsyslog
    SYSLOGD_OPTIONS=”-c 2 -r -m 0

    5.配置完成后,配置完成后重启haproxy和rsyslog服务
    /etc/init.d/rsyslog restart
    /etc/init.d/haproxy restart

    请注意:采用的Linux 系统版本是Centos 6.5

    至此,可以正常的输出HAProxy运行日志,在出现故障或查看运行情况时,可查看该日志文件;另外我们可以根据需要灵活的调整日志输出级别及输出目录。

  • 相关阅读:
    Django基础(三)
    Python--时间模块.s(基本操作)
    Python--Pandas.1(Series的概念和创建,索引和切片,常用的基本操作)
    Python--Numpy.s(numpy的创建,通用函数,索引和切片,随机数,数据存读)
    主键约束 primary key
    not null 非空约束
    unique key 唯一约束
    表约束
    mysql操作
    python学习笔记
  • 原文地址:https://www.cnblogs.com/jiagoushi/p/10186949.html
Copyright © 2020-2023  润新知