一文了解HAProxy主要特性

摘要:
这将允许您在请求中使用数据发现将流量从一个服务发送到另一个服务。这意味着您可以使用Ingress对象为许多不同的应用程序定义路由。无论何时添加或删除路径、更新机密或更改Ingress规则的注释,流量都不会受到影响。默认Ingresscontroller将要求您安装krew以查看此信息。您将找到跟踪请求率、响应时间、活动连接、成功和错误响应以及传递的数据量的统计信息。

本文转自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主要特性第1张

HAProxy Ingress Controller的特性

你可以在Rancher应用商店中找到HAProxy,此外你还可以在HAProxy的官方文档(https://www.haproxy.com/documentation/hapee/latest/installation/rancher/ )中找到HAProxy的安装细节。设置完成之后,HAProxy将会自动监听和实现Ingress规则。此时,你可以选择禁用NGINX Ingress Controller或保持两个Ingress controller都运行并通过名称指定其中一个。

一文了解HAProxy主要特性第2张

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主要特性第3张

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。

免责声明:文章转载自《一文了解HAProxy主要特性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)创新券功能介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

阿里云-容器服务之集群服务 k8s(Jenkins+gitlab+k8s的devops)- 01

由于docker官方停止更新Swarm,另外swarm在使用期间出现了很多bug,所以阿里云也在2019年7月发布公告:于2019年12月31日起停止技术支持,请您尽快迁移至容器服务Kubernetes版。 swarm这里不再赘述; 现在阿里云推荐Kubernetes集群服务; 本人从2019年7月开始学习使用,目前服务还是比较稳定,除了有些小问题,在此期...

令牌桶(Token Bucket)

概要   限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。 令牌桶算法   令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请...

RocketMQ系列:单机快速搭建单broker环境

本文使用rocketmq的fast-try.sh快速在centos7上搭建一个单机版的rocketmq,单机版仅用于本地调试,不能用于生产环境。 1. 支持系统 Centos7/Ubuntu16/Mac/Windows 2. 配置建议 cpu:4核以上 内存:8G以上 硬盘:20G以上 3. 下载&解压Rockmet 3.1 下载 访问:http:...

linux虚拟机环境快速搭建redis5.x版本的主从集群总结

文/朱季谦 我在阿里云服务器上曾参与过公司redis集群的搭建,但时间久了,都快忘记当时的搭建过程了,故而决定在虚拟机centOS 7的环境,自行搭建一套redis5.x版本的集群,该版本集群的搭建比较方便,不用再像以前版本那样还得再搞一个 Ruby,5.x版本可直接使用 redis-cli的方式来构建集群。 提前准备六台虚拟机: 192.168.200....

开启 awe功能 步骤 SQL 2005 ent x86

系统: win2003 x86数据库:SQL 2005 ent x86开启 awe功能 步骤1、在boot.ini 开启 PAE (*重启电脑才能生效) [boot loader]timeout=3default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)d...

Kafka Manager安装部署及使用

 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。本文对其进行部署配置,并安装配置kafkatool对kafka进行监控、查询 一、kafka-manager 简介        为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kaf...