忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: Godbach

【负载均衡大讨论,参与有礼】TCP/HTTP 负载均衡利器-- HAProxy [复制链接]

论坛徽章:
207
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:322015亚冠之全北现代
日期:2016-05-11 17:05:27操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
发表于 2016-03-21 15:30 来自手机 |显示全部楼层
haproxy确实是比较专业优秀的功能全面的负载均衡软件,
如果只有十来台机器,只要nginx就可以了

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 感谢分享!

查看全部评分

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2016-03-21 15:34 |显示全部楼层
回复 11# action08

nginx 支持模块化,灵活一些。

HAProxy 支持的负载均衡功能比较全面,而且还有丰富的统计信息展示界面。


   

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-09 06:20:00
发表于 2016-03-21 23:38 |显示全部楼层
haproxy的4层代理其实和7层一样的是吧。那用4层的场景主要就是非HTTP协议的就走haproxy代理了。
我现在工作中也常常用到haproxy了,但主要还是4层的模式。  
按照版主所说,haproxy比LVS的性能低些,是因为要多建立了一次TCP连接,所带来的开销导致性能低下吗。LVS是直接做IP改写了。

因为7层主要也就HTTP了,然后HTTP一般用NGINX,用HAPROXY的少吗。
对于haproxy的使用场景,求大家指教。

我目前这边的场景是做反代,用来解决部分服务器,如访问不了外网,无法YUM安装包,或者因为安全限制,需要走代理来协助访问的几个场景。

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-09 06:20:00
发表于 2016-03-21 23:39 |显示全部楼层
想深入了解haproxy的原理,版本能指导下方向不。
haproxy的文档好像没有像LVS那样,讲清楚DR模式NAT的工作原理。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-09 06:20:00
发表于 2016-03-21 23:59 |显示全部楼层
回复 10# Godbach
content switch  怎么理解,能详细讲下吗。
这个和F5厂家喊的应用交付网络是一回事么。

   

论坛徽章:
34
CU大牛徽章
日期:2013-04-17 11:10:17CU大牛徽章
日期:2013-09-18 15:26:10狮子座
日期:2013-09-27 17:44:07CU十二周年纪念徽章
日期:2013-10-24 15:41:34射手座
日期:2013-10-24 21:01:23辰龙
日期:2013-12-20 17:07:19狮子座
日期:2014-05-12 11:00:00寅虎
日期:2014-06-04 16:25:27IT运维版块每日发帖之星
日期:2015-08-17 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00平安夜徽章
日期:2015-12-26 00:06:30
发表于 2016-03-22 08:41 |显示全部楼层
本帖最后由 laputa73 于 2016-03-22 08:42 编辑

1. 个人的工作或者学习中是否接触到 HAProxy,介绍对 HAProxy 的理解
很早就接触过haproxy, 曾经拿来做http的代理。它的控制功能和管理页面还是比较丰富的。
性能实测和nginx差不多。


2. 使用 HAProxy 中遇到了哪些问题,以及最终如何解决
HA的官网MS不在墙里,搜起来费点劲。
资料还是太少。

4. 比较 HAProxy 和其他负载均衡软件。如果做过负载均衡方案选型,可以分享最终的选择以及原因
如果是纯的http简单LB,一般就选nginx了,毕竟简单。
有个项目要用到tcp的LB,记得说HA可以支持mysql,所以就推荐了一把。
但是遇到一个问题,HA做tcp LB时,没法单独实现源地址的双向透明化(透明代理),这个比较蛋疼。
网上搜了一下,有两种解决方案,一种走NAT,一种用bridge.
实际试了一下,感觉不太靠谱,NAT方案性能太差,bridge方案太复杂,也没找到实际可用的案例。
最后还是换成了LVS.

感觉HAproxy主要还是用作http代理,配合keepalived/heartbeat做HA
因为它的功能比较丰富,支持更复杂一些的代理需求。

评分

参与人数 1可用积分 +10 收起 理由
Godbach + 10 感谢分享

查看全部评分

论坛徽章:
5
技术图书徽章
日期:2015-01-14 09:32:18IT运维版块每日发帖之星
日期:2015-10-09 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:002017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
发表于 2016-03-22 09:00 |显示全部楼层
占个楼层玩玩

论坛徽章:
0
发表于 2016-03-22 09:12 |显示全部楼层
本帖最后由 鹰扬影逝 于 2016-03-22 09:15 编辑

回复 1# Godbach


    使用1.6版本时,rabbitmq消费者端的连接是长连接,为保证连接不会被haproxy主动断开,没有设置timeout connect  timeout client   timeout server,而是使用的option tcpka参数。
目前来看确实满足使用,但是在haproxy启动时会发出警告:
[WARNING] 081/091301 (10812) : config : missing timeouts for proxy 'mq-balancer'.
   | While not properly invalid, you will certainly encounter various problems
   | with such a configuration. To fix this, please ensure that all following
   | timeouts are set to a non-zero value: 'client', 'connect', 'server'.

有什么解决办法么?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2016-03-22 10:56 |显示全部楼层
回复 18# 鹰扬影逝

代码中打印这条消息的位置在这里
  1.         if ((curproxy->mode == PR_MODE_TCP || curproxy->mode == PR_MODE_HTTP) &&
  2.             (((curproxy->cap & PR_CAP_FE) && !curproxy->timeout.client) ||
  3.              ((curproxy->cap & PR_CAP_BE) && (curproxy->srv) &&
  4.               (!curproxy->timeout.connect ||
  5.                (!curproxy->timeout.server && (curproxy->mode == PR_MODE_HTTP || !curproxy->timeout.tunnel)))))) {
  6.             Warning("config : missing timeouts for %s '%s'.\n"
  7.                 "   | While not properly invalid, you will certainly encounter various problems\n"
  8.                 "   | with such a configuration. To fix this, please ensure that all following\n"
  9.                 "   | timeouts are set to a non-zero value: 'client', 'connect', 'server'.\n",
  10.                 proxy_type_str(curproxy), curproxy->id);
  11.             err_code |= ERR_WARN;
  12.         }
复制代码
就我个人的理解,应该是这个意思:
1)对于通常的 TCP 连接的处理,一般都会有 timeout 的设置。否则一个连接长期的不传输数据,还需要占用系统的内存资源等,是一种浪费。所以 HAProxy 对于这种情况给出了 warning。主要是起到提示的作用。
2)设置了这些 timeout 的话,HAproxy 内部就会启动一个 task,来去判断各种超时的逻辑,到期了就关闭连接。
3)如果不设置这些timeout,那么连接的关闭就需要靠其他情况了,比如 client 和 server 主动关闭等。
4)因此,这里只是 warning,执意要这么配置,HAProxy 仍然可以正常启动。

   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2016-03-22 11:06 |显示全部楼层
回复 13# coldgin

haproxy的4层代理其实和7层一样的是吧。那用4层的场景主要就是非HTTP协议的就走haproxy代理了。
我现在工作中也常常用到haproxy了,但主要还是4层的模式。 
 
HAproxy 首先是一个应用层的层数,所以不管是 TCP 还是 HTTP,他都是按照标准的 socket 来去处理的。只是作为 SLB,通常一个 session 就是两个 TCP 连接,HAProxy 通过 session 维持了前后端两个 TCP 连接的关系。

HAProxy 的 HTTP 支持也很完备的,HTTP/2 也支持了。同时,也提供了大量的配置,可以对 HTTP/TCP 的内容进行操作,包含 ACL,包含修改等等。


按照版主所说,haproxy比LVS的性能低些,是因为要多建立了一次TCP连接,所带来的开销导致性能低下吗。LVS是直接做IP改写了。

LVS 其实就是内核态的转发,通常的用法基本上就相当于 NAT。这个性能,肯定不是用户态的应用层序可以比较的。

所以,也没必要拿 HAProxy 去和 LVS 比较。HAProxy 是可以对传输数据进行操作的,比如通过配置,可以识别一个 TCP 连接,是不是 SSL,是不是有其他非 HTTP 的应用协议等等。也就是可以做 DPI(Deep Packet Inspection)

因为7层主要也就HTTP了,然后HTTP一般用NGINX,用HAPROXY的少吗。
对于haproxy的使用场景,求大家指教。

是的,nginx 比较火。而且也有负载均衡的功能。是很多人的优选。

不过如果纯做负载局,对性能要求比较高的话,HAProxy 应该是候选。



   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

【有奖调查】AI时代如何迎接未知挑战?

人工智能一直在医疗行业扮演着重要角色,最早的专家系统和后来的基因诊断都是人工智能技术在医疗的行业探索。近年来,随着深度学习等技术的进步,人工智能在医疗行业的应用领域不断扩展,医学影像智能诊断、语音电子病历、癌症智能诊断等均已逐渐成为热门发展方向。
而作为人工智能重要推动力的深度学习技术的快速发展却亟需认知系统的强力支撑。
----------------------------------------
活动时间:2017年5月15日-6月5日

调查入口>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP