zoukankan      html  css  js  c++  java
  • haproxy配置示例

    1.最基础的的配置

    下面的例子配置了一个监听在所有接口的80端口上HTTP proxy服务,它转发所有的请求至后端监听在127.0.0.1:8000上的"server"。
    global
       daemon
       maxconn 25600
       
    defaults
       mode http
       timeout connect 5000ms
       timeout client 50000ms
       timeout server 50000ms
        
    frontend http-in
       bind *:80
       default_backend servers
        
    backend servers
       server server1 127.0.0.1:8080 maxconn 32

    2.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
        capture request  header Referer len 60
        default_backend servers
    
    frontend healthcheck
        bind :1099
        mode http
        option httpclose
        option forwardfor
        default_backend servers
    
    backend servers
        balance roundrobin
        server websrv1 192.168.10.11:80 check maxconn 2000
        server websrv2 192.168.10.12:80 check maxconn 2000

    3.负载均衡MySQL服务的配置示例

    后端的两个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.10.11:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300
        server dbsrv2 192.168.10.12:3306 check port 3306 intval 2 rise 1 fall 2 maxconn 300

    4.动静分离示例

    global
        log        127.0.0.1 local2
    
        chroot      /var/lib/haproxy
        pidfile    /var/run/haproxy.pid
        maxconn    4000
        user        haproxy
        group      haproxy
        daemon
    
        # turn on stats unix socket
        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                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
        capture request  header Referer len 60
        acl url_static      path_beg      -i /static /images /javascript /stylesheets
        acl url_static      path_end      -i .jpg .jpeg .gif .png .css .js
    
        use_backend static_servers          if url_static
        default_backend dynamic_servers
    
    backend static_servers
        balance roundrobin
        server imgsrv1 172.16.200.7:80 check maxconn 6000
        server imgsrv2 172.16.200.8:80 check maxconn 6000
    
    backend dynamic_servers
        cookie srv insert nocache
        balance roundrobin
        server websrv1 172.16.200.7:80 check maxconn 1000 cookie websrv1
        server websrv2 172.16.200.8:80 check maxconn 1000 cookie websrv2
        server websrv3 172.16.200.9:80 check maxconn 1000 cookie websrv3

    5.实例:keepcalived + haproxy

    haproxy.cfg
    # this config needs haproxy-1.1.28 or haproxy-1.2.1
    
    global
        log 127.0.0.1    local0
        log 127.0.0.1    local3 warning
        #log 127.0.0.1    local1 notice
        #log loghost    local0 info
        maxconn 3000
        chroot /usr/share/haproxy
        uid nobody
        gid nobody
        daemon
        #debug
        #quiet
    
    defaults
        log    global
        mode    http
        option    httplog
        option    dontlognull
        retries    3
        option    redispatch
        maxconn    20000
        timeout connect    5000
        timeout    client  50000
        timeout server    50000
    
    backend varnish_www 
        #option httpchk
        option forwardfor
        balance uri
        #server varnish1 172.18.203.134:6081 check inter 3000 rise 2 fall 5 
        #server varnish2 172.18.203.135:6081 check inter 3000 rise 2 fall 5
        server varnish1 172.18.203.134:6081
        server varnish2 172.18.203.135:6081
    
    backend varnish_m
        #option httpchk
        option forwardfor
        balance uri
        hash-type consistent
        #server varnish3 172.18.203.136:6081  check
        #server varnish4 172.18.203.137:6081  check
        server varnish3 172.18.203.136:6081
        server varnish4 172.18.203.137:6081
    
    frontend host
        bind *:80
        acl host_m hdr(host) -i m.tycoon.com
        acl host_www hdr(host) -i www.tycoon.com
        acl host_www path_end -i .jpg .jpeg .png .gif .js .css .html .htm
        use_backend varnish_www if host_www
        use_backend varnish_m if host_m
    
    listen stats *:8901
        stats enable
        stats refresh 30s
        stats hide-version
        stats uri /haproxy?stats
        stats realm HAProxy Statistics
        stats auth admin:tycoon
    keepcalived主:
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from admin@tycoon.com
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id lb-haproxy
       vrrp_mcast_group4 224.0.203.10
    }
    
    vrrp_script chk_haproxy {
        script "killall -0 haproxy"
        interval 5
        weight -8
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass tUPEA8I5
        }
    
        track_script {
            chk_haproxy
        }
    
        virtual_ipaddress {
            172.18.203.253/16
        }
    }
    keepalived从:
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from admin@tycoon.com
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id lb-haproxy
       vrrp_mcast_group4 224.0.203.10
    }
    
    vrrp_script chk_haproxy {
        script "killall -0 haproxy"
        interval 5
        weight -8
    }
    
    vrrp_instance VI_1 {
        state SLAVE
        interface eth0
        virtual_router_id 71
        priority 95
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass tUPEA8I5
        }
    
        track_script {
            chk_haproxy
        }
    
        virtual_ipaddress {
            172.18.203.253/16
        }
    }

    6.实例2:ACL匹配子网站

    global 
        log 127.0.0.1 local0 info
        maxconn 4096
        user  nobody
        group nobody
        
        daemon 
        nbproc 1
        pidfile /usr/local/haproxy/logs/haproxy.pid
        
    defaults
        mode http
        retries 3
        timeout connect 5s
        timeout client  30s
        timeout server  30s
        timeout check   2s
        
    listen admin_stats
        bind 0.0.0.0:19088
        mode http
        log 127.0.0.1  local0 err
        stats refresh 30s
        stats uri /haproxy-status
        stats realm welcome login Haproxy
        stats auth admin:admin
        stats auth user1:passwd1
        stats hide-version
        stats admin if TRUE
        
    front www
        bind *:80
        mode http
        option httpdlog
        option forwardfor
        log    global
        
        acl host_www      hdr_reg(host)   -i ^(www.tb.com|tb.com)
        acl host_bbs      hdr_dom(host)   -i bbs.tb.com
        acl host_blog     hdr_beg(host)   -i blog.tb.com
        
        use_backend server_www    if     host_www
        use_backend server_bbs    if     host_bbs
        use_backend server_blog   if     host_blog
        default_backend server_default
        
    backend server_default
        mode     http
        option   redispatch
        option   abortonclose
        balance  roundrobin
        cookie   SERVER
        
        option httpcheck GET /check_status.html
        server default1     192.168.88.90:8000    cookie default1 weight 3 check inter 2000 rise 2 fail 3
        server default2     192.168.88.91:8000    cookie default2 weight 3 check inter 2000 rise 2 fail 3
        
    backend server_www
        mode     http
        option   redispatch
        option   abortonclose
        balance  source
        cookie   SERVERID
        
        option httpcheck GET /check_status.jsp
        server www1     192.168.88.80:80     cookie www1 weight 6 check inter 2000 rise 2 fail 3
        server www2     192.168.88.81:80     cookie www2 weight 6 check inter 2000 rise 2 fail 3
        server www3     192.168.88.82:80     cookie www3 weight 6 check inter 2000 rise 2 fail 3
        
    backend server_bbs
        mode     http
        option   redispatch
        option   abortonclose
        balance  source
        cookie   SERVERID
        
        option httpcheck GET /check_status.php
        server bbs1     192.168.88.83:8080    cookie bbs1 weight 8 check inter 2000 rise 2 fail 3
        server bbs2     192.168.88.84:8090    cookie bbs2 weight 8 check inter 2000 rise 2 fail 3
        
    backend server_blog
        mode     http
        option   redispatch
        option   abortonclose
        balance  roundrobin
        cookie   SERVERID
        
        option httpcheck GET /check_status.php
        server blog1     192.168.88.85:8000    cookie blog1 weight 5 check inter 2000 rise 2 fail 3
        server blog2     192.168.88.86:8000    cookie blog2 weight 5 check inter 2000 rise 2 fail 3
     



  • 相关阅读:
    springmvc
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
    HDU 1815 Building roads
    CDOJ UESTC 1220 The Battle of Guandu
    HDU 3715 Go Deeper
    HDU 3622 Bomb Game
    POJ 3207 Ikki's Story IV
    POJ 3648 Wedding
    HDU 1814 Peaceful Commission
  • 原文地址:https://www.cnblogs.com/zhangpf/p/7550354.html
Copyright © 2011-2022 走看看