一、HAProxy简介及定位

        HAProxy 是一款基于TCP和HTTP应用的具备高可用行且负载均衡的代理软件。HAProxy是完全免费的,借助HAProxy可以快速、可靠地提供基于TCP和HTTP应用的代理解决方案。HAProxy最主要的特点是性能优越,特别使用与负载超重的Web站点,这些站点通常需要会话保持或七层处理。HAProxy完全可以支持数以万计的并发连接。并且HAProxy的运行模式使其可以简单、安全的将信息整合进当前的架构中,同时保护后面的Web服务器不被暴露。

         HAProxy具有反向代理服务器等功能,配置简单,拥有非常不错的服务器健康检查功能。档期代理的后段服务器出现故障时,HAProxy会自动将该服务器摘除,故障恢复后在自动将其加入。

二、HAProxy与Nginx比较

      同样具有7层负载功能的Nginx和HaProxy有很多相似的方面,比如都有匹配规则等。如果单纯从效率上来讲,HAProxy比Nginx有更出色的负载均衡速度,并且在并发处理上也有于Nginx。

      HAProxy不仅能够弥补Nginx的一些确定,比如Session的保持等工作,并且支持URL检测对于检测,后段服务器出现的问题有很好的帮助。

       Nginx对Big Request Header 的支持不是很好,如果 client_header_buffer_size 设置的数值比较小,就会返回400 Bad Request 的错误页面。

三、HAProxy的安装

使用yum安装

yum install haproxy.x86_64 –y

安装完成之后就可以启动HAProxy服务

/etc/init.d/haproxy start

启动服务之后我们来修改一下配置文件

global
#
#local2 /var/log/haproxy.log #日志位置
#
log 127.0.0.1 local2 chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000 #最大连接数
user haproxy #用户名
group haproxy #组
daemon # turn on stats unix socket
stats socket /var/lib/haproxy/stats #---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http #模式
log global #日志
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3 #重试次数
timeout http-request 10s #请求超时时间
timeout queue 1m
timeout connect 10s #连接超时时间
timeout client 1m #客户端超时
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000 #最大连接数量
stats uri /haproxy_status #监控页面地址 #---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:80 #监听端口
# acl url_static path_beg -i /static /images /javascript /stylesheets
# acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static
# default_backend app
acl is_zabbix path_beg /zabbix #如果请求是以/zabbix结尾则使用zabbix_app这个应用,实现反向代理
use_backend zabbix_app if is_zabbix
default_backend tomcat_app #---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
# balance roundrobin
# server static 127.0.0.1:4331 check backend zabbix_app #配置后台应用 zabbix_app
balance roundrobin
server app1 127.0.0.1:8083 check backend tomcat_app #配置后台应用 tomcat_app
balance roundrobin #负载均衡方式,使用随机
server app1 127.0.0.1:8081 check #服务器1
server app2 127.0.0.1:8082 check #服务器2 #---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:8081 check
server app2 127.0.0.1:8082 check
server app3 127.0.0.1:8083 check

重新加载HAProxy的配置文件

/etc/init.d/harpoxy reload

然后查看是否安装成功

在地址栏输入http://192.168.0.65/haproxy_status

页面如下

能够看到,我的zabbix_app是正常的,我的tomcat_app没有启动,所以是红色的

在这个页面能够清楚的看出HAProxy的访问量,总流量

如有不足,还请指正,谢谢~!

最新文章

  1. [Machine-Learning] K临近算法-简单例子
  2. 根据标记清空页面中所有的input对象
  3. sql文件批量导入mysql数据库
  4. paip.提升效率--批量变量赋值 “多元”赋值
  5. 在windows 环境下对于 git 服务器的安装和使用
  6. Python中itertools模块
  7. HTTP 错误 500.21 - Internal Server Error的解决方案
  8. [Javascript] Array methods in depth - filter
  9. 【HDU 5572 An Easy Physics Problem】计算几何基础
  10. ie6的png24问题
  11. 向JSP中静态导入HTML文件时,运行jsp时,html中中文产生乱码问题最简单的解决方法
  12. Java代码优化,都有哪些常用方法?
  13. 带token的get和post方法
  14. canvas-圆弧形可拖动进度条
  15. MongoDB使用经验总结
  16. Orchard源码:缓存设计
  17. 【无源汇有上下界可行流】ACdream1211-Reactor Cooling
  18. Delphi使用Indy、ICS组件读取网页
  19. Linux 配置静态Ip地址
  20. Json杂谈系列------(一)初始json

热门文章

  1. K-means算法的优缺点
  2. Map容器——HashMap及常用API,及put,get方法解析,哈希码的产生和使用
  3. java EE技术体系——CLF平台API开发注意事项(1)——后端开发
  4. Thinkphp5 PDO操作mysql预处理中文字段出错问题
  5. kb-07线段树--11--区间多重该值多种查询
  6. python - opencv 的一些小技巧备忘
  7. window maven安装(六)
  8. 关于element-ui select组件change事件只要数据变化就会触发的解决办法
  9. Linux System Programming 学习笔记(十一) 时间
  10. scanf()总结--从网上收来的,感觉很好,用来提醒自己,c语言真是博大精深!!【转】