设为首页 收藏本站
查看: 1503|回复: 0

[经验分享] Haproxy安装及配置(转)

[复制链接]
累计签到:21 天
连续签到:1 天
发表于 2015-9-4 13:57:23 | 显示全部楼层 |阅读模式
  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/,如图所示
  
  
  
  参考文献:
  http://network.iyunv.com/art/201110/295955_1.htm
  http://blog.iyunv.com/maijian/article/details/6082283
  http://blog.sina.com.cn/s/blog_51d3553f0100u1bb.html
  http://andrewyu.blog.iyunv.com/1604432/647907
  http://blog.chinaunix.net/space.php?uid=22600159&do=blog&id=2124188
  http://sookk8.blog.iyunv.com/455855/579719
  http://freehat.blog.iyunv.com/1239536/1347882
  http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html
  http://jlsfwq.blog.iyunv.com/818700/165617

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109440-1-1.html 上篇帖子: CentOS6.5 安装HAProxy 1.5.20 下篇帖子: Haproxy+apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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