1.安装

# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

# tar zcvf haproxy-1.3.20.tar.gz

# cd haproxy-1.3.20

# make TARGET=linux26 PREFIX=/usr/local/haproxy                                #将haproxy安装到/usr/local/haproxy

# make install PREFIX=/usr/local/haproxy

2.配置

安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。

# cd /usr/local/haproxy

# vi 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
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
 
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
 
listen appli1-rewrite 0.0.0.0:10001
cookie SERVERID rewrite
balance roundrobin
server app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5
server app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5
server app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 5
server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5
 
listen appli2-insert 0.0.0.0:10002
option httpchk
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
capture cookie vgnvisitor= len 32
 
option httpclose # disable keep-alive
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
 
listen appli3-relais 0.0.0.0:10003
dispatch 192.168.135.17:80
 
listen appli4-backup 0.0.0.0:10004
option httpchk /index.html
option persist
balance roundrobin
server inst1 192.168.114.56:80 check inter 2000 fall 3
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup
 
listen ssl-relay 0.0.0.0:8443
option ssl-hello-chk
balance source
server inst1 192.168.110.56:443 check inter 2000 fall 3
server inst2 192.168.110.57:443 check inter 2000 fall 3
server back1 192.168.120.58:443 backup
 
listen appli5-backup 0.0.0.0:10005
option httpchk *
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
server inst3 192.168.114.57:80 backup check inter 2000 fall 3
capture cookie ASPSESSION len 32
srvtimeout 20000
 
option httpclose # disable keep-alive
option checkcache # block response if set-cookie & cacheable
 
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
 
errorloc 502 http://192.168.114.58/error502.html
errorfile 503 /etc/haproxy/errors/503.http
 
 

根据实际需求,更改配置文件,我的配置如下

global           #全局设置

log 127.0.0.1   local0      #日志输出配置,所有日志都记录在本机,通过local0输出

#log loghost    local0 info

maxconn 4096             #最大连接数

chroot /usr/local/haproxy

uid 99                   #所属运行的用户uid

gid 99                   #所属运行的用户组

daemon                   #以后台形式运行haproxy

nbproc 2                 #启动2个haproxy实例

pidfile /usr/local/haproxy/haproxy.pid  #将所有进程写入pid文件

#debug

#quiet

defaults             #默认设置

#log    global

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

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

option  httplog       #日志类别,采用httplog

option  dontlognull

option  forwardfor   #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

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

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

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

maxconn 2000                     #最大连接数

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

contimeout      5000            #连接超时时间

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

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

stats auth  Frank:Frank   #设置监控页面的用户和密码:Frank

 

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

frontend http-in                        #前台

bind *:80

mode    http

option  httplog

log     global

default_backend htmpool       #静态服务器池

backend htmpool                    #后台

balance leastconn#负载均衡算法

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

server  web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3

server  web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3

#cookie 1表示serverid为1,check inter 1500 是检测心跳频率

#rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重

3.加上日志支持

# vim /etc/syslog.conf

在最下边增加
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log

#vim /etc/sysconfig/syslog

修改: SYSLOGD_OPTIONS="-r -m 0"

重启日志服务service syslog restart

4.设置开机启动

为了方便系统在开机时加载,还可以创建启动脚本:
# vim /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/$PROGNAME.conf
PIDFILE=$PROGDIR/$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 $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 +x /etc/rc.d/init.d/haproxy

就可以使用 service haproxy start|stop|restart 来控***务的启动停止跟重启。
并通过以下命令加载到开机服务启动列表
# chkconfig --add haproxy

5.启动服务

启动服务:
# /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/logs/haproxy.pid`  (没有换行)

停止服务:
# killall haproxy

6.举例

在浏览器中输入haproxy监控地址:http://10.16.0.246:1080/haproxy-admin,如图所示

在浏览器输入haproxy设置的对外访问地址:http://10.16.0.244/,如图所示

haproxy学习的更多相关文章

  1. haproxy学习之https配置

    haproxy学习之https配置   原文  http://www.cnblogs.com/ilanni/p/4941056.html   如何配置https,以及https在实际生产环境中的应用. ...

  2. haproxy学习——简介、基本配置(二)

    官网:http://www.haproxy.org/ 个人感觉haproxy学习的重点在于配置上,把配置文档搞懂了就明白大部分套路了.不过本篇内容属于入门学习:1.使用haproxy简单的实现负载均衡 ...

  3. 烂泥:haproxy学习之https配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 在前一段时间,我写了几篇有关学习haproxy的文章.今天我们再来介绍下haproxy ...

  4. 烂泥:haproxy学习之手机规则匹配

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 今天我们来介绍下有关haproxy匹配手机的一些规则配置. 一.业务需要 现在根据业务 ...

  5. HAProxy学习笔记

    HAProxy:著名的负载均衡器,工作于用户空间的服务程序,其有两种工作模式: TCP mode:四层调度(模拟实现,依赖于socket进行通信) HTTP mode:七层调度 目前维护的稳定版本分支 ...

  6. haproxy 学习

    https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-option%20tcp-check https://www.hapro ...

  7. haproxy 学习记录

    1.简易安装 make TARGET=linux26 prefix=/usr/local/haproxy install 启动haproxy在sbin目录,其余的在doc目录 2. 配置 hdr_be ...

  8. haproxy学习——安装(一)

    安装包:haproxy-1.5.4.tar.gz (挺小的,大约1.3M) ①.首先要sz到本地虚拟机上(centos-6.5),tar zxvf haproxy-1.5.4.tar.gz,完成解压. ...

  9. Haproxy学习总结

    一.Haproxy介绍 1.实现了一种事件驱动,单一进程模型,支持数万计的并发连接,用于为tcp和http应用程序提供高可用,负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制 ...

随机推荐

  1. [iOS Animation]-CALayer 缓冲

    缓冲 生活和艺术一样,最美的永远是曲线. -- 爱德华布尔沃 - 利顿 在第九章“图层时间”中,我们讨论了动画时间和CAMediaTiming协议.现在我们来看一下另一个和时间相关的机制--所谓的缓冲 ...

  2. mysql trouble shooting---- 从库停止同步lock_wait_timeout_exceeded_try_restarting_transaction

    问题描述: 数据库从库停止同步. 问题分析: show slave status\G;(也可使用show full processlist) 显示 某个update语句出错,Lock wait tim ...

  3. CI框架学习——检查用户名与密码是否合法(二)

    检查用户名与密码是否合法 步骤一.编写用户登录的窗体见下面内容 步骤二.编写数据库校验方法 $username = $_POST["username"];            # ...

  4. iOS友盟三方登陆

    Umeng三方登陆个人总结 Demo地址:https://github.com/haozheMa/UmengThirdLoginDemo这里仅以微信.QQ和新浪微博作为例子首先根据官方文档 导入以下依 ...

  5. MySQL中 InnoDB 和 MyISAM 小结

    转:http://blog.csdn.net/ithomer/article/details/5136982 部分内容: InnoDB和MyISAM的差别 InnoDB和MyISAM是许多人在使用My ...

  6. iOS越狱包 分类: ios相关 app相关 2015-06-10 10:53 152人阅读 评论(0) 收藏

    编译完了的程序是xxx.app文件夹,我们需要制作成ipa安装包,方便安装 找一个不大于500*500的png图片(程序icon图标即可),改名为:iTunesArtwork,注意不能有后缀名. 建立 ...

  7. nodejs抓取数据二(列表解析)

    这里做得比较暴力,没有分页取出数据解析,O(∩_∩)O哈哈~,居然没有被挂机.不过解析的坑特别多...不过大部分我想要的数据都拿到了. //解析列表数据 var http = require(&quo ...

  8. mongodb学习(二)分级查询数组中的值

    (PS: 标题有点不妥当...) 大概是这样...数据结构如下: 需要模糊查询title的值... mongodb中操作语句: 主要是注意这里urlElements不需要加[0]...我开始的时候写成 ...

  9. TFS2013 升级至TFS2015及项目的创建

    TFS2015已发布想体验下新特性 由于现有数据库已经是SQLSERVER2012 SP1 开发工具VS2013 都符合升级要求 现在体验下吧 1.先下载TFS2015 运行安装向导一路NEXT 直至 ...

  10. PHP读取Excel文件(PHPExcel)

    /*     * 读取Excel文件     * */    require_once (dirname(dirname(dirname(__FILE__))).'/PHPExcel/PHPExcel ...