285572001 发表于 2019-1-1 12:16:38

CentOS 6.3 编译安装HAproxy 1.4.22

1.         下载安装HAproxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
tar zxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux2628   PREFIX=/usr/local/haprpxy##根据内核版本选择TARGET
make install PREFIX=/usr/local/haproxy


2.         设定HAproxy配置文件
cd /usr/local/haproxy
vi haproxy.cfg

global
          log 127.0.0.1   local0
          #log 127.0.0.1local1 notice
          #log loghost    local0 info
          maxconn 4096
          chroot /usr/local/haproxy
          uid 99                            #所属运行的用户uid
          gid 99                        #所属运行的用户组
          daemon                        #以后台形式运行haproxy
          nbproc 1                         #启动1个haproxy实例
          pidfile /usr/local/haproxy/haproxy.pid#将所有进程写入pid文件
          #debug
          #quiet
defaults
          log   global
          log   127.0.0.1       local3      #日志文件的输出定向
          mode    http                     #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
          optionhttplog                        #日志类别
          optionhttpclose      #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
          optiondontlognull
          optionforwardfor       #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
          optionredispatch            #当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
          optionhttpchk GET   /index.html         #健康检测
          servers1   192.168.148.110:80   weight 3   check#后端的主机 IP &权衡
          servers2 192.168.148.110:8080   weight 3 check#后端的主机 IP &权衡
          servers3 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      #健康检查
      servers1 192.168.148.110:80cookie 1 weight 1 check inter 5s rise 2 fall   3
      servers2 192.168.148.110:8080 cookie 1 weight 1   check inter 5s rise 2 fall 3
      servers3 192.168.148.110:8081 cookie   1 weight 1 check inter 5s rise 2 fall 3

#cookie 1表示serverid为1,check 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://blog.运维网.com/attachment/201211/162134267.jpg


参考资料
http://www.oschina.net/question/17_8785
http://johnsz.blog.运维网.com/525379/715922




页: [1]
查看完整版本: CentOS 6.3 编译安装HAproxy 1.4.22