正所谓,没有软件敢说没有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集群搭建也简单聊了下,

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

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

根据实际需求,更改配置文件,我的配置如下
global      #全局设置
log 127.0.0.1 local3     #local3是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的日志级别
#log loghost local0 info
maxconn             #最大连接数
chroot /usr/local/haproxy
uid           #所属运行的用户uid
gid           #所属运行的用户组
daemon             #以后台形式运行haproxy
nbproc             #启动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次连接失败就认为服务器不可用,主要通过后面的check检查 option redispatch     #当serverid对应的服务器挂掉后,强制定向到其他健康服务器 maxconn     #最大连接数 stats uri /stats     #haproxy 监控页面的访问地址
      浏览器中输入haproxy监控地址:http://10.10.100.39/stats查看状态 contimeout     #连接超时时间 clitimeout     #客户端连接超时时间 srvtimeout     #服务器端连接超时时间 stats auth admin:admin     #设置监控页面的用户和密码:Frank stats hide-version     #隐藏统计页面的HAproxy版本信息 frontend http-in     #前台 bind *: mode http option httplog log global acl web1 hdr(host) -i www..cn .cn
  #acl后面是规则名称,-i是要访问的域名,如果访问www..cn 这个域名就分发到下面的webserver1 的作用域。 use_backend webserver1 if web1 backend webserver1      #后台
mode http
balance roundrobin     #负载均衡算法
option httpchk /index.html      #健康检查
server web01 10.10.100.41: check cookie inter fall weight
server web02 10.10.100.18: check cookie inter fall weight
  #cookie 1表示serverid为1,check inter 是检测心跳频率
  #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重.

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

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

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 -r -m ″

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

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

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

HAProxy 日志输出及配置的更多相关文章

  1. MyBatis学习(三)日志输出环境配置

    一.编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作:将[MyBatis]文件夹下[lib]中的 log4j ...

  2. Haproxy安装配置及日志输出问题

    简介: 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载 ...

  3. HAproxy增加日志记录功能和自定义日志输出内容、格式

    http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能   1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...

  4. springboot+logback日志输出企业实践(上)

    目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...

  5. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  6. log4j 配置日志输出(log4j.properties)

    轉: https://blog.csdn.net/qq_29166327/article/details/80467593 一.入门log4j实例 1.1 下载解压log4j.jar(地址:http: ...

  7. Spring Boot系列之配置日志输出等级

    我们都知道Spring boot 默认使用 logback作进行日志输出,那么 在配置Spring boot日志输出时有两种方式: 通过application.properties 配置文件的方式来配 ...

  8. haproxy 日志配置

    haproxy日志配置 haproxy在默认情况不会记录日志,除了在haproxy.conf中的global段指定日志的输出外,还需要配置系统日志的配置文件.下面以centos6.4为例,haprox ...

  9. flask配置日志输出文件

    1.flask可以通过日志库来指点日志输出的路径, 配置日志输出的连接:www.gaodin.com

随机推荐

  1. http2

    原文转至:https://zhuanlan.zhihu.com/p/26559480 HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议.由 ...

  2. [20171225]RMAN-06808: SECTION SIZE cannot be used when piece limit is in effect.txt

    [20171225]RMAN-06808: SECTION SIZE cannot be used when piece limit is in effect.txt --//朋友拿我的一些例子来测试 ...

  3. python第七十一天---堡垒机

    堡垒机的表结构图:

  4. JVM虚拟机查找类文件的顺序

    JVM查找类文件的顺序: 在doc下使用set classpath=xxx, 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件. 如果配置了classpath环境,JVM ...

  5. 780. Reaching Points

    idea: 1.从后向前找 2.while (tx > ty) tx -= ty; 替为 % 操作 3.经过循环后,必定只有两种情况才true sx == tx && sy &l ...

  6. centos iftop iotop htop

    centos6.4安装iftopyum install gccyum -y install libpcap libpcap-develyum -y install ncurses ncurses-de ...

  7. lamp环境安装

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code lamp环境安装 1.查看mysql是否安装 service mysql status 2.查 ...

  8. 【转】一个域名是用哪里的DNS来解析的,电脑怎么知道找哪一个DNS呢? 我注册域名的时候会在服务商那里配置DNS解析,一般需要24小时后才能访问,我想知道,解析后的这个数据是不是会同步到世界上所有的DNS服务器呢!如果不是,当我访问我的这个域名的时候,电脑怎么知道去找到我注册的这一家的DNS服务器呢,谁告诉他的呢?

    看看DNS一些基础知识,你就了解了.1.DNS就是域名服务器,他的任务就是确定域名的解析,比如A记录MX记录等等. 2.任何域名都至少有一个DNS,一般是2个.为什么要2个以上呢?因为DNS可以轮回处 ...

  9. Solaris 11配置IPS安装系统包(类似linux中的yum源)

    参考:http://blog.chinaunix.net/uid-8860-id-3777457.html 一. 概述: Solaris 11被称为第一个云操作系统,因此在很多方面体现了云系统的一些特 ...

  10. 《深入理解Java虚拟机》笔记(转)

    文章来自http://www.cnblogs.com/tianchi/archive/2012/11/11/2761631.html 在C里面我们想执行一段自己编写的机器指令的方法大概如下: type ...