HAProxy提供高可用性、负载均衡以及基于TCPHTTP应用的代理。现在2web端的ip分别是192.168.232.167 , 192.168.232.168 , haproxy的机器ip192.168.232.163

1、  首先下载haproxy源码包

    [root@localhost ~]# iptables –F         //关闭防火墙
    [root@localhost ~]# setenforce 0        //关闭selinux
    [root@localhost ~]# cd /usr/local/src/
    [root@localhost ~]# wget http://pan.baidu.com/s/1pJiJvq7   //下载地址

2、  编译安装

    [root@localhost ~]# tar –xzvf haproxy-1.4.24.tar.gz
    [root@localhost ~]# cd haproxy-1.4.24
    [root@localhost ~]# uname -a //查看linux内核版本
    [root@localhost ~]# make TARGET=linux26 PREFIX=/usr/local/haproxy
    [root@localhost ~]# make install PREFIX=/usr/local/haproxy
    [root@localhost ~]# cd /usr/local/haproxy/
    [root@localhost ~]# mkdir etc
    [root@localhost ~]# cp /usr/local/src/haproxy-1.4.24/ examples/haproxy.cfg /usr/local/haproxy/etc/

3、  配置Haproxy

    [root@localhost ~]# vim /usr/local/haproxy/etc/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   local1 notice
        #log loghost    local0 info

        #最大连接数
        maxconn 4096

        #haproxy安装地址
        chroot /usr/local/haproxy

        uid 99
        gid 99

        #Haproxy进程进入后台运行
        daemon

        #debug
        #quiet
    defaults
        log     global

        #默认的模式mode{tcp|http|health},tcp是4层,http是7层,health只返回OK。
        mode    http

        #采用http日志格式
        option  httplog

        #当服务器负载很高的时候,自动结束当前队列处理比较久的连接。
        option  abortonclose
        option  dontlognull

        #尝试连接三次就认为无服务器
        retries 3

        #默认的最大连接数
        maxconn 2000

        #连接超时
        contimeout      5000

        #客户端超时
        clitimeout      50000

        #服务器超时
        srvtimeout      50000

        #心跳检测超时
        timeout check 1000

    listen web_proxy 192.168.232.163:80
    mode http

     #代理的Web连接
    server web1 192.168.232.167:80 cookie web1ck check inter 2000 rise 2 fall 5
    server web2 192.168.232.168:80 cookie web2ck check inter 2000 rise 2 fall 5

    #下面是统计页面的配置:
    listen admin_stats

     #监听端口
    bind 0.0.0.0:1080

     #http的7层模式
     mode http
     option httplog
     maxconn 10

    #统计页面自动刷新时间
    stats refresh 30s

    #统计页面的URL
    stats uri /stats
    stats realm smister

    #统计页面用户名和密码设置
    stats auth admin:admin

    #隐藏统计页面上HAProxy的版本信息
    stats hide-version

4、  开始haproxy服务

    [root@localhost ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
    #查看端口是否开启
    [root@localhost ~]# netstat -tunpl | grep 1080

    #用客户机测试,输入192.168.232.163 。看是否能代理访问到192.168.232.167 , 192.168.232.168 。例如当前访问到了192.168.232.167 , 到192.168.232.167的机器 , 将其web服务关掉 , 再次访问192.168.232.163 , 看是否顺利转移到192.168.232.168 

5、    haproxy配置文件详解

global
    #log 127.0.0.1 local0
    maxconn 65535
    chroot /usr/local/haproxy
    uid 99
    gid 99
    #maxconn 4096
    spread-checks 3
    daemon
    nbproc 1
    pidfile /usr/local/haproxy/haproxy.pid

defaults
    log  127.0.0.1  local3
    mode http
    option httplog
    option httpclose
    option dontlognull
    option forwardfor
    option redispatch
    retries 10
    maxconn 2000
    stats uri /haproxy-stats
    stats auth admin:admin
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

frontend HAProxy
    bind *:80
    mode http
    option httplog
    acl cache_domain path_end .css .js .gif .png .swf .jpg .jpeg .ico
    acl cache_dir path_reg /apping
    acl cache_jpg path_reg /theme
    acl bugfree_domain path_reg /bugfree
    use_backend varnish.offer99.com if cache_domain
    use_backend varnish.offer99.com if cache_dir
    use_backend varnish.offer99.com if cache_jpg
    use_backend bugfree.offer99.com if bugfree_domain
    default_backend www.offer99.com

backend bugfree.offer99.com
    server bugfree 222.35.135.151:80 weight 5 check inter 2000 rise 2 fall 3

backend varnish.offer99.com
    server varnish 222.35.135.152:81 weight 5 check inter 2000 rise 2 fall 3

backend www.offer99.com
    balance source
    option httpchk HEAD /index.php HTTP/1.0
    server web1 222.35.135.154:80 weight 5 check inter 2000 rise 2 fall 3
    server web2 222.35.135.155:80 weight 5 check inter 2000 rise 2 fall 3

#我将HAProxy的配置文件正则情况跟大家稍作说明:

acl cache_domain path_end .css .js .gif .png .swf .jpg .jpeg .ico
#以上语句的作用是将.css和.js以及图片类型文件定义成cache_domain。

acl cache_dir path_reg /apping
acl cache_jpg path_reg /theme
#以上语句的作用是定义静态页面路径,cache_dir和cache_jpg是自定义的名字。

use_backend varnish.offer99.com if cache_domain
use_backend varnish.offer99.com if cache_dir
use_backend varnish.offer99.com if cache_jpg
#如果满足以上文件后缀名或目录名,则HAProxy将客户端请求定向到后端的varnish缓存服务器varnish.offer99.com上。

acl bugfree_domain path_reg /bugfree
use_backend bugfree.offer99.com if bugfree_domain
#以上两行代码的作用是将/bugfree定义成名字为bugfree-domain的静态域,即客户端有bugfree的请求,则定向到后端的222.35.135.151机器上。

default_backend www.offer99.com
#如果客户端的请求都不满足以上条件,则分发到后端的两台Apache服务器上。

版权声明:未经博主允许不得转载。https://yigainian.com/post-27.html