一、拓扑

 

 

 

二、安装负载均衡服务器软件

         wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.18.tar.gz
         tar zxvf haproxy-1.4.18.tar.gz 
        cd haproxy-1.4.18
        uname -a
        make TARGET=linux26 PREFIX=/usr/local/haproxy
        make install PREFIX=/usr/local/haproxy

三、配置haproxy

      vi haproxy.cfg
#######################################################
global
    maxconn  5120
    chroot   /usr/local/haproxy
    uid      100
    gid      100
    daemon
    quiet
    nbproc   2
    pidfile  /usr/local/haproxy/haproxy.pid
########################################################

defaults
    log     global
    log     127.0.0.1  local3
    mode    http
    option  httplog
    option  dontlognull
    option  redispatch
    retries 3

    maxconn 3000
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000
##########################################################

listen web 192.168.1.250:80
    mode    http
#   mode    tcp
    balance roundrobin
    option  forwardfor
    option  httpclose
    option  httpchk GET /index.html
server web1 192.168.1.251:80 check inter 5000 fall 1 rise 2 weight 1
server web2 192.168.1.252:80 check inter 5000 fall 1 rise 2 weight 1
##########################################################

listen status 192.168.1.250:8080
    stats enable
    stats uri /admin
    stats auth admin:admin
    stats realm Haproxy \ statistic
##########################################################

###################到此haproxy简单配置成功#################

四、启动: /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

        由于需要方便使用我便写成shell启动脚本:

 vi  /etc/rc.d/init.d/haproxy
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
servername=haproxy
serverdir=/usr/local/haproxy
daemon=/usr/local/haproxy/sbin/haproxy
config=/usr/local/haproxy/haproxy.cfg
pidfile=/usr/local/haproxy/haproxy.pid

./etc/rc.d/init.d/functions

case "$1" in
   
     start)
        $daemon -f $config
        echo "......"
     ;;

     stop)
        server_id=`cat $pidfile`
        kill $server_id
        echo "......."
     ;;

     restart)
        $daemon -f $config -p $pidfile -sf $(cat $pidfile)
        echo "......."
     ;;
 
     *)
        echo "Usage:$0 {start|stop|restart}"
        exit 1
esac

##########################################################################

五、测试

        web1-------->ip:192.168.1.251------------>index.html------------->the is web1

        web2-------->ip:192.168.1.252------------>index.html------------->the is web2

 

 

 

 

后台监控管理:

 

当web1服务器断开时:

 

当web1服务器恢复时:

 

#################################到些测试完毕######################

六、日志的配置:

##########添加下面语句#########

vi /etc/syslog.conf
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log

##########修改下面语句##########

vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r -m 0"

############重启服务#############

service syslog restart
service haproxy restart

 

 

#############################################################################

简单讲解配置文件:

    maxconn  5120               ###最大连接数
    chroot   /usr/local/haproxy ###工作目录
    uid      100                ###运行用户uid
    gid      100                ###这个就是用户组
    daemon                      ###在后台运行
    quiet                       ###使用的模式(启动时没有输出),可以使用debug模式
    nbproc   2                  ###启动实例设置
    pidfile  /usr/local/haproxy/haproxy.pid  ###这个是PID


 
    log     127.0.0.1  local3   ###日志文件
    mode    http                ###使用http模式,还有一个tcp模式,这个是七层和四层的区别
    option  httplog             ###日志类型       
    retries 3                   ###检查连接服务器失败的次数

 
    contimeout 5000             ###连接超时
    clitimeout 50000            ###客户端连接超时
    srvtimeout 50000            ###服务器端连接超时
    

    balance roundrobin          ###算法
    option  httpchk GET /index.html  ###检查的页面
        
    #####################以下两句源服务器#####################
    server web1 192.168.1.251:80 check inter 5000 fall 1 rise 2 weight 1
    server web2 192.168.1.252:80 check inter 5000 fall 1 rise 2 weight 1
   

    ########################监控页面##########################
    listen status 192.168.1.250:8080
    stats enable
    stats uri /admin
    stats auth admin:admin
    stats realm Haproxy \ statistic