易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4278|回复: 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.cfg8 v2 W; O! ^5 V2 \% G) v; q

% I& V% H  `+ f& @, F5 H 默认文件内容如下:5 o7 C2 u( X& u$ @! d7 Y
# this config needs haproxy-1.1.28 or haproxy-1.2.1
9 [+ e6 B6 t7 _  K- p3 |+ h1 o3 j* M- c; \
global7 t% r+ K* E# Z7 H
log 127.0.0.1 local0, Y: ]* D' x& w+ q4 f8 n& R
log 127.0.0.1 local1 notice
7 W4 M. V" Q+ i0 n& c8 F) h3 e2 Y) `#log loghost local0 info
2 G# V. A7 l+ k) v+ B6 }. wmaxconn 4096
0 ]0 m: P0 L9 p# t  ]chroot /usr/share/haproxy* R# a% R0 N, }1 O0 L0 \
uid 994 d5 L; d) F3 i2 G. Z% R3 \
gid 99; u; v( c2 p" \1 d+ o0 D4 |# L
daemon( ^& E! {2 U: X; s
#debug" ]6 x3 [6 v) C0 P( {, H, A
#quiet% y1 ?4 j' M+ g  H* ?

$ p9 x) O0 k  \2 c) }1 Edefaults
4 L2 V8 ^: z+ S2 l0 M- elog global
/ M- r1 e: z- E( ^4 n  `" T: _* i( {: dmode http
3 q9 I) }% f; l& T% X* h5 E& Z, Xoption httplog; m. }( _0 [6 ^7 p( o
option dontlognull. ^' r  I, K4 ^, H' l
retries 3
$ y% Z% j1 s. x1 \" I3 u  l0 Mredispatch
. q( ^# [2 V) [# s+ omaxconn 2000
. }! r6 O5 q- n7 P  T4 f5 Tcontimeout 5000/ @: f- a' j! y+ ]
clitimeout 50000
, {% }* g  |" wsrvtimeout 50000  K' B! m" w/ G+ Q, H
# ?( O- e# ?9 B  P3 f' k
listen appli1-rewrite 0.0.0.0:10001  P+ ^+ O1 x  ]& V" f# c; M$ x
cookie SERVERID rewrite
" T' ?( h& @/ l/ c* |" d7 ybalance roundrobin
2 t& C5 ^6 c: z; [, L! Nserver app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5
: s$ U8 m1 z: y/ C4 Fserver app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5
- M  q% Y2 U5 Xserver app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 5
, X( V5 o* [' L; e  Oserver app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5
: C4 q2 F" [% a# U& {3 o4 K$ J5 }# h# i3 I; E. S
listen appli2-insert 0.0.0.0:10002
6 V4 b" |2 j" w$ ?& A. B# o. Boption httpchk# E  w9 x0 ?5 k7 F  c# W
balance roundrobin2 R  |( R  a3 m, O  r( I/ Y" u
cookie SERVERID insert indirect nocache
8 j* F' Y: k+ B; Bserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3  {; f. Q) k' {: L9 H
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3  n' o. t& D% e6 u# X& H7 [& l
capture cookie vgnvisitor= len 32
$ R! F4 w1 m$ q  K: v5 H
! `: Z1 K/ T0 H) Voption httpclose # disable keep-alive
- h) g, r' |2 Q; s2 urspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address7 C# x0 y" M7 ]& p4 Z

* Z& y# ^0 [' q- L4 H; N4 Glisten appli3-relais 0.0.0.0:10003
& |# N, v# @& s& ?. S) adispatch 192.168.135.17:80) E  p# V& I% c% B7 u+ P9 l

0 Q  E  W! T1 olisten appli4-backup 0.0.0.0:10004
9 |& x) v/ i/ U( Joption httpchk /index.html" l0 R% A9 ]5 V# S/ U
option persist
+ _* n- c; ~) R" j0 z/ V* fbalance roundrobin
1 L. p5 k1 H$ C+ T* gserver inst1 192.168.114.56:80 check inter 2000 fall 3$ z- I! f6 W" A
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup0 h$ {( F  N6 k, c4 p

) s# [3 V# a6 o0 @; Y+ M1 U- ~listen ssl-relay 0.0.0.0:8443
! Z/ Q' |( L; U; g- ?) }option ssl-hello-chk7 L* O. _1 L9 a3 l4 K2 Z' n
balance source
: X- A% [. ^* H' e( b0 |server inst1 192.168.110.56:443 check inter 2000 fall 30 N- m' x! |6 Z+ C1 [
server inst2 192.168.110.57:443 check inter 2000 fall 3
3 G2 E; w% u) `server back1 192.168.120.58:443 backup
( P3 V( S. G) `3 {; J0 d8 D( h- e6 l/ N- ~* p% @5 O( x
listen appli5-backup 0.0.0.0:10005) f$ r: k3 p6 Z3 H  z; D+ M/ f
option httpchk *
: {6 T% O, E( Y  N' \balance roundrobin
% x) j) ^  i, O2 i9 Acookie SERVERID insert indirect nocache
' i0 L/ z) n& b# a' v* m( a9 V! rserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
! ~7 i$ s( Z3 I: Oserver inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
5 {' K, O1 n% ^& X2 ^0 `- D& Fserver inst3 192.168.114.57:80 backup check inter 2000 fall 3* d, E- o7 r. @5 a) [1 O
capture cookie ASPSESSION len 325 A, j1 B, x/ u, G$ G
srvtimeout 20000$ O. x  x3 [: `3 j% }' }2 l
3 r! t/ v/ e" u8 G8 K! a$ i
option httpclose # disable keep-alive7 k1 g/ r5 c  \* ]
option checkcache # block response if set-cookie & cacheable
  Q+ [7 p' _( ^, R' Y$ @4 \  o- f# L' G" i
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
# C, _" D, D2 F2 d* r2 D
+ }- }# Q  b. q7 ~- W) o9 C4 f! ?, Yerrorloc 502 http://192.168.114.58/error502.html
4 p9 T1 S. q4 g3 Nerrorfile 503 /etc/haproxy/errors/503.http' n) D% n  H6 ~8 F2 X0 q4 N4 M% `

' W0 ]( r, n# s3 E* a0 X- {8 P4 I: c8 v8 X$ b& I

) G% r# K6 Q8 ~4 s. `/ F0 N; v7 w

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

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

# B+ F0 [, T& H* \6 n- m
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

. W, _9 _7 g6 b2 V6 S" D0 J
stats hide-version         #隐藏统计页面的HAproxy版本信息' S; x+ N5 i, J+ t1 L9 U1 t

; C& ^8 K( M  I2 J
# R1 R) w, o, |$ g# ]; S/ C

frontend http-in                        #前台

       bind *:80

       mode    http

       option  httplog

       log     global

       default_backend htmpool       #静态服务器池


9 G" Q6 O: W; H: u' I' K) v5 g. b

backend htmpool                    #后台

       balance leastconn#负载均衡算法
  `1 w' i! u: p  m8 y" W

       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

4 A" C( y5 i/ b
#cookie 1表示serverid为1,check inter 1500 是检测心跳频率

# n. O( b( h; x# B7 B1 Q
#rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重  f6 R. ?* B8 [5 s2 n) h0 X

) ~3 F/ ]" j- T1 {1 U3.加上日志支持- s, u. Y% }" h* |8 c  B
# vim /etc/syslog.conf
在最下边增加1 `( a6 P% S* T& }
local3.*         /var/log/haproxy.log* C6 |6 e2 k3 t; v& @
local0.*         /var/log/haproxy.log

* F. y4 ?; Q2 t5 M) Z; c$ H: B6 m
#vim /etc/sysconfig/syslog
修改: SYSLOGD_OPTIONS="-r -m 0"
重启日志服务service syslog restart

1 w! o% T$ u  c6 G3 j) Y" s
4.设置开机启动
为了方便系统在开机时加载,还可以创建启动脚本:; |9 v1 s, X" G; |
# vim /etc/rc.d/init.d/haproxy  内容如下:
#! /bin/sh/ z6 v6 t2 V* P
set -e8 F" p1 y% C5 o- q$ l3 E, A
! T4 A- n' F- N: Z
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin1 ]# K* b8 U7 \& l
PROGDIR=/usr/local/haproxy
$ j" Y$ U1 L8 \PROGNAME=haproxy$ ~1 R# h# \8 N* z( a% M6 ]8 V$ `7 j
DAEMON=$PROGDIR/sbin/$PROGNAME9 n$ M/ t: n+ p. m9 E1 s
CONFIG=$PROGDIR/$PROGNAME.conf# ~% e+ d3 H6 g
PIDFILE=$PROGDIR/$PROGNAME.pid( `1 U/ q3 H' p9 w- m: U
DESC="HAProxy daemon"
) N! s& u, G; }# TSCRIPTNAME=/etc/init.d/$PROGNAME9 z# p. {6 I+ z9 U9 C! Y0 [2 B& j
: p2 z- |) J1 m' V6 r% P0 j
# Gracefully exit if the package has been removed.6 j: U1 q$ F4 _! a9 ]
test -x $DAEMON || exit 0
% L# ~2 \$ }* k* v- N& s' C$ c# ]4 r7 z0 i3 o' N
start()
1 t" k* ^% f! j  Z' U! L8 d+ v{
1 g9 F& a  i! ^7 i+ _( Y3 O2 e4 D1 b       echo -n "Starting $DESC: $PROGNAME"
7 @. `1 }. A" Z       $DAEMON -f $CONFIG
! \5 O: H2 q: ?( s7 a( ]( z       echo "."
; i; O- u* X, F. t# b/ ?# e$ I}
6 }" k, F9 J& {# L9 m% g5 h3 B
3 H+ T7 z' [; gstop()
- q$ s+ `. B+ I, d{
1 v; _/ M7 M& [% S' A       echo -n "Stopping $DESC: $PROGNAME"
" ^& f6 b  A& U- I       haproxy_pid=cat $PIDFILE/ i! j3 }0 }. G& E* Y3 e
       kill $haproxy_pid
6 q" F1 K4 g2 p       echo "."6 s, N" z+ K# `5 P2 p
}
; i4 M' R2 ?9 E& w$ \5 [
  o: S3 ^+ i0 Y8 |restart()
9 B* B: w5 a: v; V  t$ ?{
2 k2 o1 t, ~; Q% i) Q- U6 z       echo -n "Restarting $DESC: $PROGNAME"
5 d1 F( h5 D1 d# e       $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)2 c( g- F8 N& g5 c. e
       echo "."5 c% d& z- `" I3 L. g
}0 }6 s) n7 F  r% k9 c/ ~7 {1 z

0 N7 c. u  U9 \* q5 p9 ycase "$1" in
( ]9 E$ J% z! W start)  v: h$ F- P" p: W) q) }+ ~3 \
       start3 ?/ |  O- \! T# r3 D4 {) r0 m+ l
       ;;" z4 P$ L0 }4 t" y0 j. D
stop)
7 u/ P! l2 t: t% O, ^  a% x5 L       stop6 b+ Q6 t! H( G, g5 Y
       ;;- R3 G4 y4 d5 o6 o1 c: a+ Z
restart)
- U0 t) n# p9 h       restart
- Q6 r& U" W% ~" X, f       ;;
% @, d4 |& U1 _" h6 R7 J2 v7 A9 Z3 J: x *)
7 d# v3 X* C! {) }: `4 Y: h       echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
  p0 }2 i  R  F" ^       exit 14 ]7 e5 J# @- I+ U
       ;;
- _9 ^8 `6 t9 kesac
exit 0
- ~' q5 Y$ l4 U+ }9 G
保存后赐予可执行权限
. N, v+ ?1 S/ ~  u0 S2 W9 b# chmod +x /etc/rc.d/init.d/haproxy
就可以使用 service haproxy start|stop|restart 来控***务的启动停止跟重启。
2 I! f0 q; t, Z5 e+ T2 _" r7 Y# q并通过以下命令加载到开机服务启动列表
; V& E6 j; S- x# chkconfig --add haproxy

; O4 g' t! `, c4 ^* y& a+ D( s" u

5.启动服务

启动服务:# ?6 Z2 I( ^8 a' x
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
重启服务:, H% y1 ^2 A6 }4 p( g& O
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)
停止服务:
" y/ C5 z$ {; W& ], d) G# killall haproxy
/ R5 x' {, ^: s4 g; D

6.举例

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

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


5 N, F- @& ~$ n9 @2 l
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:39 , Processed in 0.060398 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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