CentOS 6.3 编译安装HAproxy 1.4.22

1.         下载安装HAproxy html

wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz linux

tar zxvf haproxy-1.4.22.tar.gz web

cd haproxy-1.4.22 redis

make TARGET=linux2628 PREFIX=/usr/local/haprpxy  ##根据内核版本选择TARGET 算法

make install PREFIX=/usr/local/haproxy 后端

 

 

2.         设定HAproxy配置文件 服务器

cd /usr/local/haproxy cookie

vi haproxy.cfg 负载均衡

 

global frontend

        log 127.0.0.1   local0

        #log 127.0.0.1  local1 notice

        #log loghost    local0 info

        maxconn 4096

        chroot /usr/local/haproxy

        uid 99                          #所属运行的用户uid

        gid 99                          #所属运行的用户组

        daemon                        #之后台形式运行haproxy

        nbproc 1                         #启动1haproxy实例

        pidfile /usr/local/haproxy/haproxy.pid  #将全部进程写入pid文件

        #debug

        #quiet

defaults

        log     global

        log     127.0.0.1       local3        #日志文件的输出定向

        mode    http                       #所处理的类别,默认采用http模式,可配置成tcp4层消息转发

        option  httplog                        #日志类别

        option  httpclose      #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现

        option  dontlognull

        option  forwardfor       #若是后端服务器须要得到客户端真实ip须要配置的参数,能够从Http Header中得到客户端ip

        option  redispatch            #serverid对应的服务器挂掉后,强制定向到其余健康服务器

        retries 2                     #2次链接失败就认为服务器不可用,主要经过后面的check检查

        maxconn 2000

        balance roundrobin                     #负载均衡算法

        stats   uri     /haproxy-stats           #haproxy 监控页面的访问地址

        # 可经过 http://localhost:80/haproxy-stats 访问

        contimeout      5000              #链接超时时间

        clitimeout      50000               #客户端链接超时时间

        srvtimeout      50000              #服务器端链接超时时间

listen  localhost 0.0.0.0:80                   #运行的端口及主机名

        mode    http

        option  httpchk GET /index.html           #健康检测

        server  s1 192.168.148.110:80   weight 3 check  #后端的主机 IP &权衡

        server  s2 192.168.148.110:8080 weight 3 check  #后端的主机 IP &权衡

        server  s3 192.168.148.110:8081 weight 3 check  #后端的主机 IP &权衡

 

也可采用先后台的配置模式

frontend web_vs                        #前台

        bind 192.168.148.100:80

        mode    http

        option  httplog

        log     global

        default_backend web_pool        #静态服务器池

 

backend web_pool                    #后台

        balance leastconn           #负载均衡算法

        option  httpchk HEAD /index.html HTTP/1.0        #健康检查

        server  s1 192.168.148.110:80  cookie 1 weight 1 check inter 5s rise 2 fall 3

        server  s2 192.168.148.110:8080 cookie 1 weight 1 check inter 5s rise 2 fall 3

      server  s3 192.168.148.110:8081 cookie 1 weight 1 check inter 5s rise 2 fall 3

 

#cookie 1表示serverid1check inter 5s 是检测心跳频率

#rise 2是成功2次认为服务器可用,fall 3是失败3次认为服务器不可用,weight表明权重

 

 

 

3.         启动和中止服务

##启动

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

##重启

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/run/haproxy.pid`

##中止

Killall haproxy

 

4.         设定haproxy启动文件

vi /etc/rc.d/init.d/haproxy

 

#! /bin/sh

set -e

 

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin

PROGDIR=/usr/local/haproxy

PROGNAME=haproxy

DAEMON=$PROGDIR/sbin/$PROGNAME

CONFIG=$PROGDIR/haproxy.cfg

PIDFILE=$PROGDIR/run/$PROGNAME.pid

DESC="HAProxy daemon"

SCRIPTNAME=/etc/init.d/$PROGNAME

 

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

 

start()

{

        echo -n "Starting $DESC: $PROGNAME"

        $DAEMON -f $CONFIG

        echo "."

}

 

stop()

{

        echo -n "Stopping $DESC: $PROGNAME"

        haproxy_pid=$(cat $PIDFILE)

        kill -15 $haproxy_pid

        echo "."

}

 

restart()

{

        echo -n "Restarting $DESC: $PROGNAME"

        $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)

        echo "."

}

 

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        restart

        ;;

  *)

        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2

        exit 1

        ;;

esac

exit 0

 

chmod u+x /etc/init.d/haproxy

 

 

5.         rsyslog.conf中开启udp 514的日志收集

vi /etc/rsyslog.conf

取消如下两行的注释

# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 51

 

新增如下条目

local3.*                                                /var/log/haproxy.log

local0.*                                                /var/log/haproxy.log

 

重启rsyslog服务

/etc/init.d/rsyslog restart

 

查看haproxy.log

tail -f /var/log/haproxy.log

 

 

6.         查看HAproxy的监控页面

http://192.168.148.100/haproxy-stats

 

 

参考资料

http://www.oschina.net/question/17_8785

http://johnsz.blog.51cto.com/525379/715922

相关文章
相关标签/搜索