当前位置: 首页 > 文档资料 > HAProxy 用法详解 >

配置案例

优质
小牛编辑
132浏览
2023-12-01
前端调度器IP:192.168.1.210

后端应用服务器IP:   192.168.1.111 和 192.168.1.112

1,定义独立日志文件

[root@node1 haproxy]# vim /etc/rsyslog.conf     #为其添加日志功能
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514                   ------>启动udp,启动端口后将作为服务器工作

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514            ------>启动tcp监听端口
local2.*                                                /var/log/haproxy.log
 
[root@node1 haproxy]# service rsyslog  restar

[root@LB haproxy]# vim haproxy.cfg

log         127.0.0.1 local2           --------->在global端中添加此行

2,一个最简单的http服务的配置:

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend webser                                               #webser为名称
        option forwardfor
        bind  *:80                                                
        default_backend         app 
backend app 
        balance roundrobin                            #使拥roundrobin 算法
        server  app1 192.168.1.111:80 check          
        server  app2 192.168.1.112:80 check

3,haproxy统计页面的输出机制

frontend webser 
        log 127.0.0.1 local3 
        option forwardfor
        bind  *:80
        default_backend         app 
backend app 
        cookie node insert nocache
        balance roundrobin
        server  app1 192.168.1.111:80 check  cookie  node1    intval 2 rise 1 fall 2
        server  app2 192.168.1.112:80 check  cookie  node2    intval 2 rise 1 fall 2
        server  backup 127.0.0.1:8010  check  backup

listen statistics
        bind *:8009                           # 自定义监听端口
        stats enable                          # 启用基于程序编译时默认设置的统计报告
        stats auth admin:admin        # 统计页面用户名和密码设置
        stats uri  /admin?stats          # 自定义统计页面的URL,默认为/haproxy?stats
        stats hide-version                 # 隐藏统计页面上HAProxy的版本信息
        stats refresh 30s                   # 统计页面自动刷新时间
        stats admin if TRUE              #如果认证通过就做管理功能,可以管理后端的服务器
        stats realm Hapadmin          # 统计页面密码框上提示文本,默认为Haproxy\ Statistics

4,动静分离示例:

frontend  webservs
    bind *:80
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js  .html
    acl url_php          path_end       -i .php
    acl host_static      hdr_beg(host)  -i img. imgs. video. videos.  ftp. image. download.
    use_backend static          if url_static  or host_static

    use_backend dynamic         if url_php
    default_backend             dynamic

backend static
    balance     roundrobin
    server      node1 192.168.1.111:80  check maxconn 3000

backend dynamic
        balance roundrobin
        server  node2   192.168.1.112:80 check maxconn 1000

5,http服务器配置完整示例

#---------------------------------------------------------------------
# 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
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

defaults
    mode                    http
    log                     global    
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 30000

listen stats
    mode http
    bind 0.0.0.0:1080
    stats enable
    stats hide-version
    stats uri     /haproxyadmin?stats
    stats realm   Haproxy\ Statistics
    stats auth    admin:admin
    stats admin if TRUE


frontend http-in
    bind *:80
    mode http
    log global
    option httpclose
    option logasap     #不等待响应结束就记录日志,表示提前记录日志,一般日志会记录响应时长,此不记录响应时长
    option dontlognull     #不记录空信息
    capture request  header Host len 20    #记录请求首部的前20个字符
    capture request  header Referer len 60   #referer跳转引用,就是上一级
    default_backend servers

frontend healthcheck
    bind :1099    #定义外部检测机制
    mode http
    option httpclose
    option forwardfor
    default_backend servers

backend servers
  balance roundrobin
    server websrv1 192.168.1.111:80 check maxconn 2000
    server websrv2 192.168.1.112:80 check maxconn 2000

6,负载均衡MySQL服务的配置示例

#---------------------------------------------------------------------
# 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
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

defaults
    mode                    tcp
    log                     global
    option                  httplog
    option                  dontlognull
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 600

listen stats
    mode http
    bind 0.0.0.0:1080
    stats enable
    stats hide-version
    stats uri     /haproxyadmin?stats
    stats realm   Haproxy\ Statistics
    stats auth    admin:admin
    stats admin if TRUE


frontend mysql
    bind *:3306
    mode tcp
    log global
    default_backend mysqlservers

backend mysqlservers
    balance leastconn
    server dbsrv1 192.168.1.111:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300
    server dbsrv2 192.168.1.112:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300