HAProxy配置详解

global                                                  # 全局参数设置
    log         127.0.0.1 local2                        # log语法:log <address_1> [max_level_1] # 全局的日志配置,使用关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志
    chroot      /var/lib/haproxy                        # 改变当前工作目录
    pidfile     /var/run/haproxy.pid                    # 当前进程id文件
    maxconn     4000                                    # 最大连接数
    user        haproxy                                 # 所属用户
    group       haproxy                                 # 所属用户组
    daemon                                              # 以守护进程方式运行haproxy
    stats socket /var/lib/haproxy/stats                 # 指定了HAProxy实例的socket文件,可以在运行时想HAProxy发送各种命令来获取其内部的统计信息,只有具>有root权限的用户才能够连接到该套接字文件

defaults                                                # 默认参数设置
    mode                    http                        # 默认的模式{tcp|http|health},tcp是4层,http是7层,health只会返回OK,已经弃用了
    log                     global                      # 应用全局的日志配置
    option                  httplog                     # 启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志
    option                  dontlognull                 # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是>否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;
    option http-server-close                            # 每次请求完毕后主动关闭http通道
    option forwardfor       except 127.0.0.0/8          # 如果服务器上的应用程序想记录发起请求的客户端的IP地址,需要在HAProxy上配置此选项,这样HAProxy会>把客户端的IP信息发送给服务器,在HTTP请求中添加"X-Forwarded-For"字段。启用X-Forwarded-For,在requests头部插入客户端IP发送给后端的Server,使后端server护球>到客户端的真实IP。
    option                  redispatch                  # 当使用了cookie时,haproxy将会将请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持>久性;而此时,如果后端的服务器宕掉了,但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。
    retries                 3                           # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端服务器标记为不可用
    timeout http-request    10s                         # http请求超时时间
    timeout queue           1m                          # 一个请求在队列里的超时时间
    timeout connect         10s                         # 连接超时
    timeout client          1m                          # 客户端超时
    timeout server          1m                          # 服务器端超时
    timeout http-keep-alive 10s                         # 设置http-keep-alive的超时时间
    timeout check           10s                         # 检测超时时间
    maxconn                 3000                        # 每个进程可用的最大连接数

frontend  main *:5000                                   # 负责接收客户端请求的部分,监听一组ip地址和端口,将请求转发给配置的backend,接收backend的响应并>将其发送回客户端。
    # acl语法:acl <acl-name> <condition> [operator <condition>]...
    # <acl-name>是ACL的名称,<condition>是ACL的条件,operator是条件之间的操作符可以是and/or/not。
    # HAProxy中支持以下条件:
        # - src <addr>:源IP地址;
        # - dst <addr>:目标IP地址;
        # - url <path>:请求url的路径;
        # - path <path>:请求路径;
        # - path_beg <path>:请求路径是否以<path>开头
        # - hdr <name>:<value>:HTTP请求头中的键值对,name为键名,value为值
        # - hdr_sub <name> <regexp>:HTTP请求头中某个键名中是否包含正则表达式<regexp>
        # - hdr_beg <name> <value>:HTTP请求头中某个键名是否以<value>开头;
        # - hdr_end <name> <value>:HTTP请求头中某个键名是否以<value>结尾;
    # 下面的acl表示,如果路径以/static、/images、/javascript、/stylesheets开头
    # 或者以.jpg、.git、.png、.css、.js结尾,就将请求定向到backend static,否则就使用默认的backend app
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

backend static                                          # 使用了静态动态分离(如果url_path匹配.jpg .gif .png .css .js静态文件,则访问此后端
    # balance:指定负载均衡算法,HAProxy支持的负载均衡算法有:
        # - roundrobin:按照请求顺序,依次将请求分发给各个后端服务器。
        # - static-rr:和roundrobin类似,但是每个后端服务器的权重是提前设置好的。
        # - leastconn:将请求分发给当前连接数最少的后端服务器
        # - source:根据客户端IP地址的hash值,将同一个客户端的请求发送到同一个后端服务器
        # - uri:根据URI的hash值,将相同的URI的请求发送到同一个后端服务器。
        # - url_param:根据URL参数的hash值,将带有相同URL参数的请求发送到同一个后端服务器
        # - hdr(name):根据HTTP的消息头中指定的名称的hash值,将具有相同头信息的请求发送到同一个后端服务器。
        # - rdp-cookie(name):根据指定名称的RDP cookie的hash值,将具有相同RDP cookie的请求发送到同一个后端服务器。
    balance     roundrobin                              # 负载均衡算法,roundrobin:轮询
    # server语法:server <name> <address> [:<port>][param*]
        # - <name>:后端服务器名称
        # - <address>:后端服务器的IP地址或DNS名称
        # - <port>:后端服务器的端口号,默认为80
        # - [param*]:可选的参数,以空格分隔。常用的参数有
            # - weight <value>:指定后端服务器的权重,值越高,接收到的请求就越多
            # - check:检查后端服务器是否健康
            # - maxconn <value>:限制与该后端服务器建立的最大连接数,默认为0
    server      static 127.0.0.1:4331 check

backend app
    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

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值