将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 1273|回复: 0
收起左侧

Haproxy安装及配置

[复制链接]
发表于 2016-8-18 09:29:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x

1.安装

# 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  d: l0 ]5 K6 S  R$ G' {. `0 Y! d

! F$ u4 L! e8 E- [ 默认文件内容如下:
' B- b  b, e3 E0 @  v+ y # this config needs haproxy-1.1.28 or haproxy-1.2.1
# A1 w/ f& c8 J) N9 ?; m9 T" C& x- f4 r) X6 L1 q  x
global' M" W# Q; o. D6 Z' n, j
log 127.0.0.1 local0
7 l. N8 L: k" P4 p3 }1 F/ v  o- Jlog 127.0.0.1 local1 notice
: h+ q0 `7 I! p* |6 W#log loghost local0 info' K% z  t0 I7 a& \
maxconn 4096; D, y# I$ [2 ~# _( D' c0 P
chroot /usr/share/haproxy
" \3 r7 e2 {% n6 ?, }+ D1 l8 huid 99
' Z8 n& a* \% M5 l1 F! {* q2 dgid 99
- T' g3 @* Q1 Z* C" ^& S2 ^  bdaemon  c* p& B0 a% _9 ^% H1 L: b3 H) j
#debug
# a8 O7 u; j9 u, q  ]#quiet, e+ U' ^4 A; f
) ~' ~& H* _* x9 f, s
defaults
4 \2 O" j% ~& T' `log global
( ?9 a/ f5 l9 ^mode http7 f8 ]/ V& a7 J0 l! |
option httplog
7 H" y. y, C/ aoption dontlognull  _0 N' Q$ E- k+ Z) P
retries 37 ^( m0 i0 ^/ @6 [2 I4 @3 f6 x* E
redispatch
  u* a7 p3 h  U$ i' {8 [maxconn 2000
  `% q, g- ^. t( W) I. tcontimeout 5000
5 }  G% d6 @; B6 K. Cclitimeout 50000
* A% o4 ^0 @( i6 q) w) K, c; zsrvtimeout 50000, F! @, x5 G5 L! c! X, b" o# E
  m$ [8 Z# {5 k2 _
listen appli1-rewrite 0.0.0.0:10001; s* z7 R7 b4 ?* C, E# i' k& q
cookie SERVERID rewrite: S5 R- Y, p4 A4 b% K# a
balance roundrobin0 a9 {- z# S; }5 c+ o4 I' @) g
server app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5
2 ?7 }  h- t, R7 z) k. Zserver app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5
! N" Z3 o+ ^9 R/ a; P6 qserver app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 51 _) Y6 \- j! p- `' ]
server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5
- w& L; o! g/ g/ I
# J0 G- F6 z$ }listen appli2-insert 0.0.0.0:10002% |7 d9 T, ]4 Y* t# f9 ~
option httpchk- r, N7 s! a/ a
balance roundrobin
; U1 j. l" i6 l; H$ wcookie SERVERID insert indirect nocache
" b3 F5 z0 N: `- K9 n$ Oserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
9 E- E& S, Z" c9 X, N7 o( r+ e# Fserver inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
2 I3 j5 L% T5 O! {4 t) w$ Icapture cookie vgnvisitor= len 322 l: f6 t; B+ e3 X5 N7 l
' W/ F* d% a8 z  E* J/ d: X
option httpclose # disable keep-alive4 s5 o! s3 _' Q2 k5 d# c" B
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
& ]' i! @4 q/ _! b
/ }1 X2 E6 D" Y$ ]7 l1 Y( zlisten appli3-relais 0.0.0.0:10003
& C2 ?; o3 L% [" K6 tdispatch 192.168.135.17:80
' H5 B' I2 N) j8 |+ _( {( ~' a
4 m7 l; }2 A/ v% Y% J% h/ N: dlisten appli4-backup 0.0.0.0:10004, g, v% t0 L4 s5 P0 X
option httpchk /index.html+ Q  |5 K) [1 o6 A1 M. p5 s2 V  z  T
option persist
% G, X0 H6 A' q$ q9 p) G& h( bbalance roundrobin4 r& F* A6 u, a8 K4 Q! d( L4 c5 T. x
server inst1 192.168.114.56:80 check inter 2000 fall 34 a3 s+ q5 X  Q; C
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup
1 G! y/ j) n4 O  T, B& [1 A
6 z8 {, y) G: T# qlisten ssl-relay 0.0.0.0:8443% o) j/ d1 Q1 A6 V
option ssl-hello-chk
# a8 o  k) w7 T4 R5 F5 u  L; fbalance source
8 C$ x5 ~  a9 ~server inst1 192.168.110.56:443 check inter 2000 fall 3
. n' ~. R% a7 b( v' G! cserver inst2 192.168.110.57:443 check inter 2000 fall 3
+ |1 |) A4 O. G: B; d! U- {server back1 192.168.120.58:443 backup- J/ E4 U- s% B4 K
; X7 U9 I' ^. b5 X9 f4 ?  S) O  m
listen appli5-backup 0.0.0.0:10005
3 V* N/ l9 V7 V) R, K0 Ioption httpchk *
; w* H" \9 O( \6 [balance roundrobin( ^  Q3 Q  p  f* A- d8 r% [
cookie SERVERID insert indirect nocache
- ]$ n& x$ m; {; b4 ]+ H7 mserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 38 {/ L" B3 D  o/ p5 z" N
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3+ V4 d+ k  i1 _# G1 f2 j$ N; ]
server inst3 192.168.114.57:80 backup check inter 2000 fall 3
  Y* D3 a% \2 jcapture cookie ASPSESSION len 32( l  B5 W! ?8 s( v! f# }" y$ I
srvtimeout 20000& a" k& m, q9 d0 s

* v" [% ~; {5 o; Eoption httpclose # disable keep-alive
' b4 I# i5 i8 P2 A9 `1 I8 @option checkcache # block response if set-cookie & cacheable
8 E9 ^: l( e" v% ~6 y/ @# P
4 ?0 I9 T+ t7 ?! R& U4 Rrspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
  U& P3 J# z& ^9 E2 d) [6 n  }  ^' p- X/ ^( c
errorloc 502 http://192.168.114.58/error502.html' C5 I5 G5 i, `2 N$ G5 u
errorfile 503 /etc/haproxy/errors/503.http5 R' @$ `, M" m7 \% [

( |& E1 ?+ s) D( R! j' O, t6 l# R# G- g: p

9 m" Z' `/ ?. d

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

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

% n( X% p4 e4 S" R9 I; H2 U4 y
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
: @& }6 Y1 m) y/ F
stats hide-version         #隐藏统计页面的HAproxy版本信息
# j) j" R- S5 ~8 ]

4 U/ x+ W) k  |6 o
1 V+ a1 q( R* }+ M8 s

frontend http-in                        #前台

       bind *:80

       mode    http

       option  httplog

       log     global

       default_backend htmpool       #静态服务器池

9 v2 B; Z& k* r3 r

backend htmpool                    #后台

       balance leastconn#负载均衡算法
* x+ r& m. T* v# p; ^8 W- q

       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
+ ?/ p$ r5 _6 I
#cookie 1表示serverid为1,check inter 1500 是检测心跳频率
/ S  U) \! ~& @
#rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重( f. H# W' W( C' `

$ r, c9 Z- o1 U0 y' p( j3.加上日志支持
2 ?4 R( y" w0 O( [) y, V' w& `7 L
# vim /etc/syslog.conf
在最下边增加" c3 @1 t# w" b! b# w/ y
local3.*         /var/log/haproxy.log& f: B9 z0 f4 I6 |" p3 ]
local0.*         /var/log/haproxy.log

& c2 M. I: M2 L4 W! p+ H$ y
#vim /etc/sysconfig/syslog
修改: SYSLOGD_OPTIONS="-r -m 0"
重启日志服务service syslog restart

) C6 Q1 r$ e, l6 u7 Q
4.设置开机启动
为了方便系统在开机时加载,还可以创建启动脚本:- i/ g* s  [: X0 E$ |
# vim /etc/rc.d/init.d/haproxy  内容如下:
#! /bin/sh5 |. y3 q+ f' o# \: P2 z7 l
set -e
6 ~; K4 A! U# z( X
. m8 Y: r9 L+ APATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin1 d. ]7 |# w) p' E2 I+ k
PROGDIR=/usr/local/haproxy
! ]  D- [3 C; N, f9 f6 ~" U' vPROGNAME=haproxy# P5 J2 g0 n/ c% r3 G' K
DAEMON=$PROGDIR/sbin/$PROGNAME
9 V% M, m5 R: s8 u" }3 ?/ V  G; aCONFIG=$PROGDIR/$PROGNAME.conf
6 y' g3 k' B9 w! V" Y! uPIDFILE=$PROGDIR/$PROGNAME.pid2 o9 n9 [& A  P" w+ Z3 b
DESC="HAProxy daemon"
7 x  G7 C& k% r+ ?; ESCRIPTNAME=/etc/init.d/$PROGNAME
$ f2 o' p2 b* G
9 e7 W% J# ~. i  J, \& b6 Y% V# Gracefully exit if the package has been removed.+ z+ p2 N; N- r% ~  M3 O9 K
test -x $DAEMON || exit 0
3 S1 g1 ]8 J3 d3 Z# @7 H) W" ?
4 G* k5 O3 }2 _6 o# s/ Ostart()7 Q8 ~6 r; W: V2 l0 K4 {5 Y
{  D; t6 x2 `2 q7 J
       echo -n "Starting $DESC: $PROGNAME"
1 }+ c8 }  |' W5 D8 ~+ I       $DAEMON -f $CONFIG
7 g, V3 Z$ p7 ]# B: a       echo "."' u# H0 I3 M& t" R0 K- {
}
( G: s  ]: _! M+ K( [% }0 d. e0 V
% D7 f/ Y% i5 f3 w/ W- Jstop()
9 k( p) C& d3 W. O{
. U5 d) Y5 g1 C       echo -n "Stopping $DESC: $PROGNAME"
* t! ]2 u( }- _       haproxy_pid=cat $PIDFILE
+ R* {& I$ ^1 ?$ H       kill $haproxy_pid% a! J4 U- [9 i
       echo "."
) C9 J& a( d/ E1 v8 c}1 h- u& |5 O2 l) Y) O
* b0 e* T$ s0 h
restart()+ @1 D+ U+ y2 v: r0 f" i
{1 b) }3 @, D# E' x6 @
       echo -n "Restarting $DESC: $PROGNAME"7 |1 ^9 |, ?# Q% P3 ~! j# W
       $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE); V5 R. Z# r  I* ?6 Y: ]: U
       echo "."
7 o7 i; d9 V& |}
* p4 @0 b( u* i2 N4 ^) ^8 j; ^
! l7 u& ^& k0 o4 y9 V- x+ d0 ?3 {1 Acase "$1" in, [: o1 A$ d- _; g) t' w$ d" A! R  X% l2 r
start)
# Q# `9 V2 x, p       start- ~. h. l' @' ^6 e( j
       ;;
) z9 C' Y! o7 m, R stop)1 A) k1 e$ ]2 x0 h4 A
       stop
, E, o1 z9 T& S- I       ;;
3 Y* v9 _0 {* W9 T6 E restart)' ^  i8 t9 u0 k5 K+ I
       restart
6 v' R& Z& M& P8 E       ;;
) O* A" Z4 @8 [/ V *)
+ W+ Y' ?  L% `- T& ^       echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2" a- z. o6 w! b6 A& N8 s# a
       exit 1- g' w/ b4 g: I% A& d
       ;;/ p8 w  k4 I5 X8 ?% g9 b1 U0 a$ L
esac
exit 0
( \# {, Y/ [4 b( v
保存后赐予可执行权限" l3 ^7 u- M" m/ h( X' `
# chmod +x /etc/rc.d/init.d/haproxy
就可以使用 service haproxy start|stop|restart 来控***务的启动停止跟重启。
/ Y" v+ E5 m* W  T! q并通过以下命令加载到开机服务启动列表
$ v, g9 Z8 o' P9 L1 o# chkconfig --add haproxy
1 N8 E6 C( |) `1 E* A/ Z

5.启动服务

启动服务:$ b+ A6 M9 J! o2 l$ i
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
重启服务:) o3 [% B8 N$ H3 S
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)
停止服务:
% U% ]/ M! f) n# killall haproxy

* @0 k  Z( t4 |% p# u# A  L

6.举例

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

http://img1.51cto.com/attachment/201111/125114145.jpg

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


5 ]. K, m, W: D) y0 O
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2020-6-1 05:45 , Processed in 0.499899 second(s), 24 queries .

Powered by 龙睿 bbs168x X3.2

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表