功能-->

提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点.

配置文件解析-->

#配置文件-->开启/proc/net/ipv4/ip_forwrod
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#全局配置:定义haproxy进程的工作特性,以及全局配置特性
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
#定义日志,修改/etc/resyslog.conf,开启关于UDP的两行(搜索UDP关键字),并定义local2.* /var/log/haproxy.log,并在RULES的*.info后追加local2.none

##Provides UDP syslog reception

# $ModLoad imudp

# $UDPServerRun 514

#*.info;mail.none;authpriv.none;cron.none;local2.none               /var/log/messages

##Save haproxy messages also to haproxy.log

# local2.*                                                /var/log/haproxy.log

    log         127.0.0.1 local2
#修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
#添加x-forward-for头信息,便于后端采用x-forward-for方法调用源客户端IP
    option      forwardfor
#定义haproxy以守护进程的方式工作于后台,等同于-D
    daemon
# turn on stats unix socket
#定义统计数据
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#代理配置-->默认配置,分为前端配置和后端配置
#---------------------------------------------------------------------
#代理配置-->默认配置属性
defaults
#定义前端和后端的工作模式http或tcp
    mode                    http
#使用全局日志
    log                     global
#定义option关键字httplog/dontlognull/http-server-close需要同时使用
    option                  httplog
#不记录空日志信息   
    option                  dontlognull
#支持客户端长连接
    option http-server-close
#将客户请求发送到后端的时候,加一个首部,记录客户IP,但是except除去自己
    option forwardfor       except 127.0.0.0/8
#当分发给客户的一个服务器故障的时候,重新分发给其他服务器
    option                  redispatch
#默认重试次数
    retries                 3
#定义timeout属性
    timeout http-request    10s
#请求放到代理到后端的等待队里时,最多等待多久
    timeout queue           1m
#健康状态检测没问题时,最多尝试连接的时间
    timeout connect         10s
#非活动连接的超时时间,就如同apache中的keep-alived timeout
    timeout client          1m
#定义服务器端的非活动连接超时时间
    timeout server          1m
    timeout http-keep-alive 10s
#做健康状态检测的超时时间
    timeout check           10s
    maxconn                 3000

#--------------------------------------------------------------------------------------------------------------------------------------
# main (frontend) which proxys to the backends
#代理配置-->前端配置:针对前端用户,根据用户请求类型定义使用哪个后端配置
#--------------------------------------------------------------------------------------------------------------------------------------
#定义前端配置名和前端访问端口
frontend  main *:80
#绑定到haproxy自身任意IP的80端口,若没有在标识名上定义端口,则可以用bind定义
#bind *:80
#定义acl规则,同名的acl是与的关系,响应acl的关键字中调用的多个acl规则之间是或的关系,acl规则格式-->
#   acl acl_name         acl_criterion  [flags][operator] <value>    
#定义acl规则,以便于后面调用,这里的acl规则中,-i表示不区分大小写
#acl_criterion标准有如下:path path_beg path_end src dst hdr(header) hdr_reg(header) method等 
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

#其他的acl使用范例-----------------------------------------------------
#通过acl分离读写,如果上传就扔到uploadservers组,如果下载,就扔到downservers
#    acl read method GET
#    acl read method HEAD
#    acl write method PUT
#    acl write method POST
#    use_backend downservers if read
#    use_backend uploadservers if write

#基于uri匹配,若访问的是/bbs,则跳转到/forum
#    acl accessbbs        url_beg        /bbs
#    redirect /forum if accessbbs

#定义端口匹配,若请求的目的端口是81,则添加请求首部信息X-Proto SSL(rspadd表示添加响应首部信息)
#    acl is-ssl           dst_port       81
#    reqadd X-Proto\ SSL if is-ssl

#---------------------------------------------------------------------

#关于响应acl的关键字还有black(403阻止访问),errorloc(errorloc <code> http://ip2 错误页 ),http-request(http-request <allow|deny>)等

#---------------------------------------------------------------------

#若url请求的是静态,则使用代理配置中的后端静态配置:static(即匹配到了acl规则中的url_static规则,则使用标识为static的backend配置文件)
    use_backend static          if url_static
#若url请求的是动态,则默认使用代理配置中的后端动态配置:app
    default_backend app

#--------------------------------------------------------------------------------------------------------------------------------------
# static (backend) for serving up images, stylesheets and such
#代理配置-->后端配置:针对后端服务器,与前端配置相呼应
#--------------------------------------------------------------------------------------------------------------------------------------
#server关键字中包含的选项解析:
    #backup 只有当其他server都down的时候,此server才起作用
    #check 健康状态检测
    #inter <delay> 检测的时间间隔
    #fastinter <delay> 启发式检测,初始检测频繁
    #downinter <delay> 降低检测间隔
    #maxconn <num> 设定最大连接数,超出的将放到等待队里
    #redir http://ip2 重定向到ip2,必须是客户能直接访问的ip2,因为后端客户是无法直接看到的
    #rise <count> 定义失败后,检测到成功的次数,如果达到这个次数,才算真正成功

    #fall <count> 定义失败前最多检测几次
    #weight 权重,根据算法来设定
    #slowstart <start_time_in_ms> 支持慢启动,用于server状态从down-->up时,以自适应网络状况,来接收请求,发送报文
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check

backend app
#定义调度算法为roundrobin
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check
#---------------------------------------------------------------------
#frontend和backend的合并写法:listen
#---------------------------------------------------------------------

#定义一个代理mysql的例子
listen

#定义模式此listen工作模式为tcp

    mode tcp
#监听任何3306,并将其转发到后端服务器

    bind *:3306

#启用mysql检测,并告知连接账户是haproxy,这个账户需要在后端mysql节点上创建,且不能有密码

#use mysql;

#insert into user(user,host) values ('haproxy','192.168.1.131');

    option mysql-check user haproxy

#算法,使用source 

    balance source

#server1 [标识名,最好与主机名一样] ip:port check

    server mysql1 192.168.6.128:3306 weight 1 check inter 1s rise 2 fall 2

#---------------------------------------------------------------------
#定义stats统计页面(管理页面)
listen stats
    bind *:65500
#开启统计页面,172.16.100.15:65500/haproxy?stats
    stats enable
#更改stats的uri地址为172.16.100.15:65500/abc
    stats uri /abc
#关闭stats中haproxy的版本
    stats hide-version
#定义认证提示信息
    stats realm HAProxy\ Stats
#定义认证账户和密码
    stats auth admin:12345
#开启管理后端开启或者暂停功能,若为TRUE,则指如果通过认证,就开启本项;若为LOCALHOST,则指如果是本地连接,则开启本项
    stats admin if TRUE

具体算法介绍:haproxy之负载均衡算法

haproxy之配置文件解析的更多相关文章

  1. MyBatis配置文件解析

    MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...

  2. Nginx安装与配置文件解析

    导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的 ...

  3. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  4. Python3 配置文件 解析

    /************************************************************************ * Python3 配置文件 解析 * 说明: * ...

  5. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  6. WCF中配置文件解析

    WCF中配置文件解析[1] 2014-06-14 WCF中配置文件解析 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自 ...

  7. nginx源代码分析--配置文件解析

    ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...

  8. ZooKeeper介绍,安装,配置文件解析

    什么是ZooKeeper? ZooKeeper是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务. 所有这些类型的服务都以分布式应用程序以某种形式或另一种形式使用.每次实施时,都有很多工 ...

  9. Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理

    1.在pom.xml中添加maven坐标 <dependency> <groupId>org.springframework.security</groupId> ...

随机推荐

  1. [模拟炉石](一)让游戏过程显示到cocos2d中

    在上篇中,如果运行了fireplace的tests/full_game.py,这个程序将一个游戏过程在终端上运行完成,可以看到整个过程,那么第一步要做的就是将这个过程显示到cocos2d创建的场景中去 ...

  2. gridview中判断隐藏还是现实

    <asp:TemplateField HeaderText="呼出" HeaderStyle-Width="60px" HeaderStyle-Horiz ...

  3. mongoexport导出数据

    mongoexport用法: /***** Export MongoDB data to CSV, TSV or JSON files.options:  --help                 ...

  4. scons构建自己的一个简单的程序

    我在我的D盘下,新建一个文件夹,命名为try.在这个文件夹下新建两个文件,一个文件是test.c .里面的程序很简单: #include<stdio.h>#include<stdli ...

  5. Android得到控件在屏幕中的坐标

    getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标 getLocationInWi ...

  6. exe可执行程序及堆栈分配(转载)

    可执行程序的内存分布 GNU编译器生成的目标文件默认格式为elf(executive linked file)格式,这是Linux系统所采用的可执行链接文件的通用文件格式.elf格式由若干个段(sec ...

  7. eq,neq,gt,lt等表达式缩写

    eq 等于neq 不等于gt 大于egt 大于等于lt 小于elt 小于等于like LIKEbetween BETWEENnotnull IS NUT NULLnull IS NULL

  8. WPF ICommand 用法

    基础类,继承与ICommand接口 using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  9. array模块

    array模块定义了一种序列数据结构,看起来和list很相似,但是所有成员必须是相同基本类型. 2.1 array-固定类型数据序列 array作用是高效管理固定类型数值数据的序列. 2.2.1 初始 ...

  10. Java动态 遍历List 时删除List特征元素 异常问题 及解决方案总结

    首先.这是一个极其简单的问题,大牛可忽略.新手可能会遇到,Java中遍历某个List 时删除该List元素 会抛出异常. 这一个简单的问题再高手严重不值一提,但新手可能会比較困惑,用哪种方式能够安全有 ...