一文了解HAProxy主要特性
Rancher和开源分布式开源分布式关系型数据库TiDB牵手直播啦!明天上午10点,B站准时开播!
来自Rancher中国的解决方案架构师将介绍 TiDB 在 Rancher 中基于 Longhorn 块存储快速部署和使用的案例,PingCAP的Scheduling Team Associate Team Leader将分享 TiDB 在云原生与 Serveless 上的实践与思考~
欢迎扫描下方二维码进入直播交流群哦~!
在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。
增强的安全性
过载保护队列
HAProxy的连接队列提供了对流量峰值的保护。通过在Kubernetes服务上设置pod-maxconn注释,一组pod会获得最大并发连接数限制,额外的连接数会被排队,从而防止pod超载。
结 论
本文介绍了HAProxy的6个主要特性,可以帮助你更清晰地了解HAProxy Ingress Controller的优势。如果你还想更深入地了解HAProxy,你也可以通过Rancher应用商店轻松部署它,并根据官方文档(https://www.haproxy.com/documentation)的指引进行尝试才能对其有更深入的了解和体会,也能帮助你选出合适自己的Ingress Controller。
推荐阅读
About Rancher Labs
Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2017年全球最酷的云基础设施供应商。
目前Rancher在全球拥有超过三亿的核心镜像下载量,并拥有包括中国联通、华为、中国平安、中国人寿、上汽集团、三星、西门子、WWK保险集团、澳电讯公司、德国铁路、厦门航空、新东方等全球著名企业在内的共40000家企业客户。