找回密码
 注册
查看: 4281|回复: 0

Haproxy安装及配置

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2016-8-18 09:29:51 | 显示全部楼层 |阅读模式

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.cfg8 y1 c# ~7 |* t$ ?' f, c( p& J

3 O& v8 z% D( k& B3 _: \ 默认文件内容如下:
" p  ]3 U, I$ X- B! w6 a( S # this config needs haproxy-1.1.28 or haproxy-1.2.1
. \3 K! _) S# f: b! ~% J% i
; E9 I$ @# I/ @+ I) o global# R3 d5 S/ k; y
log 127.0.0.1 local0
* A; {6 C6 Z1 Nlog 127.0.0.1 local1 notice
  a# j  u& i  V/ ?0 E3 ~#log loghost local0 info
5 v* x* C- m- e# F9 ]3 j4 f( K, \" ymaxconn 4096
0 t. q3 k5 m# O4 Y  ?; Mchroot /usr/share/haproxy, L- o# w2 b+ W& o
uid 99
2 \% `& G: F, r' ~! {gid 99* K; k$ a! g: G; ?) s/ P% k  |
daemon
3 C$ A  t7 d$ Z2 j#debug' A/ k& u' ?- X
#quiet  H0 B+ D7 y1 j) l: Z8 q( a

" m* c& j, U! t5 J0 edefaults. N% G! J4 S; a  @8 g
log global
8 E) W1 _2 _9 amode http8 j- `6 U" ^" [* F* i  t8 W
option httplog, U5 ?5 D7 @- p% `% T! L
option dontlognull
2 E/ d  j; g; }, sretries 3; H7 Z, F% v; O+ V+ N: t
redispatch
' ?0 k& s9 y8 O7 nmaxconn 2000
+ X5 j% }# c* v+ ?, z! t+ \contimeout 5000
1 k2 W, Q9 D% ?" Kclitimeout 50000. I0 M8 H) j) D6 s3 h
srvtimeout 50000, Q! S: A: p, X3 o( K! T
2 G8 [( W5 d3 K* Z# }9 Y
listen appli1-rewrite 0.0.0.0:10001
& K! w- |, z3 s, d- Kcookie SERVERID rewrite+ H( ?" g6 h% B% F
balance roundrobin. b5 ^# i6 ^8 I" n9 p$ p! O. e) T
server app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5
- Z! l/ P. E/ Y& n! C( r2 ]) sserver app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5# w  f6 {% B# c2 c5 l
server app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 5/ ~# N  A6 K# b7 H
server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5. @3 l6 k. B* Y# T/ }- n2 G! Z8 k1 Y9 N
: @& Y! A/ Z- o0 V
listen appli2-insert 0.0.0.0:10002- L9 v  M. i6 {  E, B
option httpchk
8 h0 `3 [4 y; v# N. J: Rbalance roundrobin, G1 o& Z, M+ S
cookie SERVERID insert indirect nocache
! I5 i7 C/ f# ]) J( i8 gserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
; w5 @$ [! o/ m- W9 H0 e' zserver inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 38 y8 d6 c) B5 n# o3 ]
capture cookie vgnvisitor= len 323 f2 \# K* ?3 B/ f( i- Z0 a! b: T! {+ h
  ]* F* P; m/ V
option httpclose # disable keep-alive9 l. z' Z3 C4 ^/ W/ Y
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
) E2 k) s: ]  }6 s* @8 e* @3 K( ~- n+ u1 w0 a2 `
listen appli3-relais 0.0.0.0:10003: t/ ^+ u: Z5 W/ }9 A) n
dispatch 192.168.135.17:80
) r8 M- d/ K; q& {# L  D  F
; ?# y9 [' k" f. I" B! olisten appli4-backup 0.0.0.0:10004
* w6 P4 y$ O! `3 l! _. Koption httpchk /index.html
; I, T, ?- \8 N$ w8 _2 Noption persist
7 E0 I8 r8 z% \2 _) K, lbalance roundrobin
5 ?( R8 l1 O+ Sserver inst1 192.168.114.56:80 check inter 2000 fall 35 _: U7 I* z+ Z5 g8 r/ K
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup
/ Y( F6 B. ^6 d- Y) o! P$ [# `3 O  ~
listen ssl-relay 0.0.0.0:8443: e0 _+ k9 y0 ~" k
option ssl-hello-chk% t) d+ I* i+ V+ A7 L6 w$ z
balance source% {, A2 s; i9 ]( {" y& E7 o) X( o' j
server inst1 192.168.110.56:443 check inter 2000 fall 3: b9 z, Z2 W% N4 ^$ [; O& B
server inst2 192.168.110.57:443 check inter 2000 fall 3' i. M1 ?2 {! I5 ]
server back1 192.168.120.58:443 backup
7 ]2 y# e1 Y; A* d6 ~9 K( P' Y1 u6 L+ E- J: X
listen appli5-backup 0.0.0.0:10005
( @" Q8 P( {8 J4 F- Q- Voption httpchk *8 n+ t+ T1 D8 b. I5 K7 Z% @. Y
balance roundrobin7 h% M$ L' u$ m0 N: |6 F' n# C+ x
cookie SERVERID insert indirect nocache7 J; o+ A$ r) V. K! _$ `3 b
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3! P- G! Y4 `. U6 P
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3" x% [- ^2 B( Z" w  m
server inst3 192.168.114.57:80 backup check inter 2000 fall 31 g! m0 G/ p) B4 q1 I
capture cookie ASPSESSION len 32
  f, L" ~5 ]$ g% {: zsrvtimeout 20000
$ Q. a8 M0 R: }8 k1 b# _. b4 u/ @; b  o: o
option httpclose # disable keep-alive
' k3 |/ P* m9 C! R5 t/ b3 W/ `- m9 Noption checkcache # block response if set-cookie & cacheable* ?9 I2 }; B- n
. R* ~" X/ L2 C# h$ c% ]
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address' g4 O3 C) m  h
3 S: o# O+ K  u9 @' y1 e* a- T
errorloc 502 http://192.168.114.58/error502.html
: u: Y; q& I4 A8 P5 M% }5 derrorfile 503 /etc/haproxy/errors/503.http/ x2 h, m* u: V
8 R" x4 F; p! b& ?- r: J
# C( m8 u! B! }
0 _5 d) Y# w6 v

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

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

' j5 e1 E/ |$ V* \# X/ x* B
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

+ S# V3 x! `- o
stats hide-version         #隐藏统计页面的HAproxy版本信息/ O; v# d2 J: E6 B" i
; s. r* I' O' x0 b0 o
3 i$ b+ E# T/ U  D* x. g

frontend http-in                        #前台

       bind *:80

       mode    http

       option  httplog

       log     global

       default_backend htmpool       #静态服务器池

% u, r( d& @! t+ `$ x

backend htmpool                    #后台

       balance leastconn#负载均衡算法; w/ N# j$ ]" ^! Z* C" |7 v

       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
2 R* H( k% }. O0 B" f' P
#cookie 1表示serverid为1,check inter 1500 是检测心跳频率

2 {, e: Q. V, A: e
#rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
% a4 Q, g0 M* l

* f4 U0 t# s1 x" s3.加上日志支持0 V4 @' U& |" @! y. _8 {. \! C
# vim /etc/syslog.conf
在最下边增加8 c0 y8 S. c  @
local3.*         /var/log/haproxy.log6 p: A2 l5 |$ K3 t! \9 L
local0.*         /var/log/haproxy.log
+ o, m4 }: B. I  D$ l% J! C- t
#vim /etc/sysconfig/syslog
修改: SYSLOGD_OPTIONS="-r -m 0"
重启日志服务service syslog restart
0 _+ p7 t5 G8 s0 p
4.设置开机启动
为了方便系统在开机时加载,还可以创建启动脚本:
8 \6 g/ a! c+ W( H/ i# vim /etc/rc.d/init.d/haproxy  内容如下:
#! /bin/sh; p, n2 W9 l, D& z8 [! v, @# l- C
set -e; [1 C' t% Y. D3 f; O5 Z5 K  b
# {9 i0 V: q# _/ K/ ^" h
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin! w$ \" f& m9 s* N' `: G* B" ^
PROGDIR=/usr/local/haproxy
4 \5 @: p0 c% c" l+ OPROGNAME=haproxy7 @, S* ?! u  k
DAEMON=$PROGDIR/sbin/$PROGNAME1 w" a7 x: L" y" V0 ?
CONFIG=$PROGDIR/$PROGNAME.conf) B1 X0 w7 H1 U! q4 W
PIDFILE=$PROGDIR/$PROGNAME.pid
/ h2 P3 H: m! F- I4 BDESC="HAProxy daemon"
# }; P# |% d+ u% wSCRIPTNAME=/etc/init.d/$PROGNAME
7 D3 r5 A5 T8 A& W' C7 o8 G! @9 T* Z& P' C+ l5 \
# Gracefully exit if the package has been removed.
' n& [) H, D# x2 \test -x $DAEMON || exit 0  F8 L/ \4 `% d) V

/ P. t# p  ?( d* N/ Bstart()
0 @, q7 r/ j! D6 W9 E{5 V* A, j; Y0 }3 c; c5 Y0 {
       echo -n "Starting $DESC: $PROGNAME"
) y3 T) F/ Z6 J3 f: Q- w* V       $DAEMON -f $CONFIG
, _! o" G, h) t- y) g5 d       echo "."
: r3 T/ l- a. _1 O+ G- R# r}& r1 ?3 \% ~, K5 v& K  U2 h4 H

# O  ^; |( H* c1 ?7 ustop()( c# c2 |' f( h; `$ w) {% b& Y- l
{
; E4 `$ _8 u; s6 U* W: b; O       echo -n "Stopping $DESC: $PROGNAME"
' A$ }2 i! O' A$ m4 h+ r& |       haproxy_pid=cat $PIDFILE( M* q" }/ n8 ?* u$ a! l' I
       kill $haproxy_pid4 k2 I" j# i5 ~, w3 V
       echo "."
0 y' x! p3 T  |* R: y}
1 O' q6 L( Q( X" B& V; v9 U' C* K- `  |$ O- O+ S5 x
restart()' b/ o, i. z2 n, w$ q( h
{
9 `; P* n8 V0 F( g6 X       echo -n "Restarting $DESC: $PROGNAME"
# `! m; v- `7 u3 n0 z2 b1 M       $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
" D/ I) ?: I/ n       echo "."/ d% k. E+ g; ?  X) E& e
}
. t9 A0 c  L% `: M* D+ Z
8 w4 k4 p- W- l- ~0 Bcase "$1" in
- }9 d$ S2 b8 u( _1 `/ x start)$ }: J/ p! h% J; Q# U
       start3 T4 r- x) f5 K0 i
       ;;
$ W& m8 P' a, u7 J9 ~* k6 ]9 _ stop)
1 `* q$ R  Y1 X* }. M% f1 E7 J3 p       stop* U/ u; w9 ?3 H5 z7 J1 J3 `# b3 `
       ;;
% e  M( a' {7 V# M restart)
. y6 @7 c! l3 N, R! w; |1 {+ D       restart. `0 x' c2 K" E+ ]1 i1 `: N& A
       ;;
; Z% O9 J3 [: U. |' r *)  ~  E+ C. q; O! O
       echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2, z, e# `" Y( W1 d2 w' _& s; u
       exit 1
  g% |3 F1 f/ x' f3 k3 N* E0 J       ;;
" K+ d' ^9 W3 k: U+ besac
exit 0

/ V/ O/ K) T: m# u5 Y$ Q% R
保存后赐予可执行权限
8 A! o0 i$ o- G! w0 \5 T* u# chmod +x /etc/rc.d/init.d/haproxy
就可以使用 service haproxy start|stop|restart 来控***务的启动停止跟重启。
- x: N" c& V+ E3 V并通过以下命令加载到开机服务启动列表* j1 t) c* F( n" R: ]5 \6 K
# chkconfig --add haproxy

, I5 i" u& |: B

5.启动服务

启动服务:
( w. x+ \5 F3 H, L$ a# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
重启服务:
# |( z, q! E: c- M7 a# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)
停止服务:
7 y* e, w  U: D0 R4 S' |8 M# killall haproxy
8 }# B$ k' v) R0 A1 E  g

6.举例

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

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

5 ?+ P/ @/ f0 ^7 D  x: J+ m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:00 , Processed in 0.020632 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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