一文了解HAProxy主要特性
本文转自Rancher Labs
在Kubernetes中,Ingress对象定义了一些路由规则,这些规则规定如何将一个客户端请求路由到指定服务,该服务运行在你的集群中。这些规则可以考虑到输入的HTTP消息的独特方面,包括其Host请求头和URL路径,这将允许你在请求中使用数据发现将流量从一个服务发送到另一个服务。那意味着你能够使用Ingress对象来为许多不同的应用程序定义路由。
虽然Ingress对象定义路由,但Ingress Controller是驱动它们的引擎。Ingress Controller是一个位于客户端和服务之间的代理,其作用是正确地传递消息。目前市面上已经有几个项目实现了Ingress Controller规范,每个项目都有其优势。Rancher提供了一个基于NGINX的默认controller,但你并不需要局限于此。Rancher已经和HAProxy达成合作,因此你也可以选择使用HAProxy Ingress Controller。我们倾向于把HAProxy Ingress Controller看作是一个完美的Kubernetes的涡轮增压引擎,能够充分提升Kubernetes的使用效率。
HAProxy Ingress Controller的特性
你可以在Rancher应用商店中找到HAProxy,此外你还可以在HAProxy的官方文档(https://www.haproxy.com/documentation/hapee/latest/installation/rancher/ )中找到HAProxy的安装细节。设置完成之后,HAProxy将会自动监听和实现Ingress规则。此时,你可以选择禁用NGINX Ingress Controller或保持两个Ingress controller都运行并通过名称指定其中一个。
HAProxy的功能特性包括以下内容:
零宕机重载
包括NGINX Ingress Controller在内的许多代理类型,重载都会导致短暂的时间窗口,此时后端服务不可用。在许多情况下,当HAProxy需要刷新其配置时,它可以完全避免重新加载。
它的Runtime API允许完全在内存中实现更改。然而,由于HAProxy的无中断重载,需要重载的更改不会导致停机。这意味着,无论你何时从Ingress规则中添加或删除路径、更新Secret或更改注释都不会对流量产生影响。
增压性能
由于HAProxy对性能的关注,你会发现每秒可处理的请求数会立即受到影响——明显增加。此外,通过弹性二进制树等独特的算法,HAProxy比其他controller使用更少的资源。
可观察性
使用Stats页面、Runtime API和raw configuration,你可以轻松查看配置好的Pod以及相关联的后端和它们的健康状态。默认的Ingress controller会要求你安装krew以查看这一信息。
HAProxy提供大量有关流向你的集群的流量指标。在HAProxy Stats页面上,你将找到用于跟踪请求率、响应时间、活动连接、成功和错误响应以及通过的数据量的统计数据。这篇文章(https://www.haproxy.com/blog/exploring-the-haproxy-stats-page/ )介绍了所有提供的指标,这些指标也是通过Prometheus端点暴露的。
HAProxy会发布详细的日志,其中包含请求时间数据,可以让你精确地指出请求中的慢速,断开代码将显示请求终止的方式和原因,以及显示整个集群中的活跃连接数。
可调整的负载均衡
与其他Ingress Controller相比,HAProxy提供了更多的负载均衡算法,包括轮询法(Round Robin)、最小连接和基于哈希的算法。这种选择很重要,因为不同类型的服务在不同类型的负载分布中表现出色。例如,保持连接时间较长的服务在使用最小连接算法时表现更好,该算法在向服务器发送新客户端之前检查服务器的繁忙程度。你可以在你的Ingress对象中通过添加一个名为haproxy.org/load-balance 的注释来定义,使用均衡文档中列出的值(https://www.haproxy.com/documentation/hapee/latest/onepage/#balance )。
一旦你启用HTTPS,HAProxy就会自动启用端到端的HTTP/2。NGINX在客户端支持HTTP/2,同时HAProxy也支持通过HTTP/2连接到你的pods。此外,HAProxy还支持gRPC服务的端到端streaming。
增强的安全性
诸如白名单IP地址以及强制速率限制等安全功能形成了一个重要的保护层。使用HAProxy,这些功能都能够立刻实现并且你可以使用注释调整它们。当你的集群托管多个服务时,速率限制是至关重要的,因为你一定不会希望一个服务占用所有的带宽。
过载保护队列
HAProxy的连接队列提供了对流量峰值的保护。通过在Kubernetes服务上设置pod-maxconn注释,一组pod会获得最大并发连接数限制,额外的连接数会被排队,从而防止pod超载。
结 论
本文介绍了HAProxy的6个主要特性,可以帮助你更清晰地了解HAProxy Ingress Controller的优势。如果你还想更深入地了解HAProxy,你也可以通过Rancher应用商店轻松部署它,并根据官方文档(https://www.haproxy.com/documentation )的指引进行尝试才能对其有更深入的了解和体会,也能帮助你选出合适自己的Ingress Controller。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
报告:2023年年底中国网络安全市场规模将突破千亿元
近日,中国网络空间安全协会发布了《2020年中国网络安全产业统计报告》(以下简称《报告》)。《报告》指出,2019年国内网络安全技术、产品与服务总收入约为523.09亿元,同比增长25.37%。2018年网络安全市场规模年复合增长率为28.98%,达到历史最高。随着市场规模基数的扩大,预计未来会有所下降,尤其是受新冠疫情影响,2020年网络安全市场规模增速进一步放缓。但在未来五年内保持平均20%的增长速率仍是大概率事件。依此预计,到2023年年底,中国网络安全市场规模将突破千亿元。 《报告》显示,2019年,我国有13家企业网络安全业务年收入超过10亿元,占网络安全业务总收入的48.82%,网络安全市场“没有寡头,只有诸侯”的格局明显,同时碎片化现象非常突出。 从业务分类占比来看,《报告》指出,2019年,软件及硬件产品收入约占安全业务总收入的66%,安全服务收入约占安全业务总收入的24%,安全集成收入约占安全业务总收入的10%。国内三大类网络安全业务,硬件产品占比比较大,软件第二,安全服务第三。但随着合规驱动走向需求驱动的转变趋势,硬件占比逐年减少,预计未来两年,但软件和服务的占比将...
- 下一篇
NVL 与 COALESCE 不为人知的区别
大家都知道的区别: NVL Oracle专属 只支持两个参数 COALESCE SQL标准 支持多个参数 但是今天偶然间还发现一个重要差别:滥用 NVL可能导致额外的计算 NVL 无论前面的参数是否为 NULL均会计算所有参数 COALESCE 如果遇到一个不为 NULL的参数,则不计算后面的表达式 以 PL/SQL为例,NVL的表现就如同一般的函数,但 COALESCE更像是一个语句,可以成功避免进行耗时的运算; SQL中可能也是如此,欢迎读者自行验证并在评论区讨论! DECLARE l_n VARCHAR2(4000) := 'x'; l_s VARCHAR2(4000) := 'x'; FUNCTION Expensive_Function RETURN VARCHAR2 IS BEGIN Dbms_Output.Put_Line('Expensive_Function !!!'); RETURN 'x'; END Expensive_Function; FUNCTION Common_Function(p_S1 IN VARCHAR2, p_S2 IN VARC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8