一文了解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。
一文了解HAProxy主要特性的更多相关文章
- HAProxy安装文档
HAProxy安装文档 [toc][TOC] 一.环境说明 系统环境:CentOS Linux release 7.2.1511 (Core) 系统内核:3.10.0-327.el7.x86_64 软 ...
- HAproxy负载均衡
HAproxy 简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这 ...
- HAProxy从零开始到掌握
转自:https://www.jianshu.com/p/c9f6d55288c0 目录: HAProxy是什么 HAProxy的核心能力和关键特性 HAProxy的安装和运行 使用HAProxy搭建 ...
- Kubernetes基于haproxy实现ingress服务暴露
HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...
- OSCHina技术导向:开源企业ERP系统Opentaps
opentaps Open Source ERP + CRM 基于 Apache OFBiz (The Open For Business Project ) 构建, 是一款设计良好, 逐渐流行起来的 ...
- docker swarm英文文档学习-3-开始
https://docs.docker.com/engine/swarm/swarm-tutorial/ 1)Getting started with swarm mode 本教程向你介绍Docker ...
- python(13)- 文件处理应用Ⅱ:增删改查
用户选择1,增加功能: 用户输入www.oldboy2.org和server 11111 weight 2222 maxconn 3333后, 在www.oldboy2.org下增加一条server信 ...
- Haproxy-4层和7层代理负载实战
目录 HAProxy是什么 HAProxy的核心能力和关键特性 HAProxy的核心功能 HAProxy的关键特性 HAProxy的安装和运行 安装 运行 添加日志 使用HAProxy搭建L7负载均衡 ...
- Elasticsearch 开箱指南
内容概要 ES 基础介绍,重点是其中的核心概念. 基础 API 实践操作. 1. 基础介绍 Elasticsearch (ES) 是一个数据库,提供了分布式的.准实时搜索和分析. 基于 Apache ...
随机推荐
- java解决poi导出excel文字水印,导出excel不可操作问题
首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...
- inotify监听文件
inotify监听文件并通知 static int inotify_dbfile(const char *spFromRule, const char *spDevFile) { int inotif ...
- Nginx解决前端调用后端接口跨域问题
1.项目中遇到的问题描述: 前端调用zuul统一网关服务接口,请求状态码200,但是无返回数据. 浏览器控制台报错信息:No Access-Control-Allow-Origin header i ...
- pytorch入门2.1构建回归模型初体验(模型构建)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- 关于GatewayClient 介绍和使用
GatewayClient ## 源码 https://github.com/walkor/GatewayClient 根据GatewayWorker版本,选择合适的GatewayClient版本,请 ...
- Py中去除列表中小于某个数的值
### Py去除列表中小于某个数的值 print('*'*10,'Py去除列表中小于某个数的值','*'*10) nums = [2,3,4,10,9,11,19,14] print('*'*10,' ...
- JS新界面关闭原界面刷新的多种形式
------------恢复内容开始------------ 1.新界面为当前界面弹出的形式: 第一步:首先原界面的原生JS事件需要放到 (function () { ...... })(); 中 ...
- Consul入门初识
Consul Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由HashiCrop公司用Go语言开发,基于Mozilla Public License 2.0的协议进行开源 ...
- ElasticSearch解决深度分页性能存在的问题使用scoll来解决
现在我们全局搜索全部的数据,每次返回3条, 从 scroll 请求返回的结果反映了 search 发生时刻的索引状态,就像一个快照.后续的对文档的改动(索引.更新或者删除)都只会影响后面的搜索请求. ...
- 使用java类的方式配置spring 需要什么注解?
1.@Configuration 修饰类,声明当前类是一个配置类,相当于applicationContext.xml文件 2.@ComponentScan 用于指定spring在初始化容器时要扫描的包 ...