我发现了一些负载平衡器,比如NGINX,但是这些工作似乎只能记住CPU使用率和networkingstream量。 我将如何在其他variables(如每个节点上可用的磁盘数量或可用内存量)之间进行负载平衡?
我需要编写自己的请求处理服务,以便在决定将请求发送到哪个节点时利用这些variables吗?
这是我的使用案例,我正在构build一个用于擦除代码的分布式文件系统,并且希望负载平衡器向能够处理stream量,CPU负载,具有用于IO操作的足够磁盘的节点发送文件写入并且具有足够的内存为预期的操作。 据我所知,有一个负载平衡器只能解决交通和CPU部分,但我将如何进一步扩大负载平衡器的要求?
感谢您帮助我的第一个问题。
Rob-d提到负载均衡器必须在后端服务器上执行健康检查,以确保它们健康并可以处理请求。 这是绝对正确的,我认为这是什么能让你做你想做的(检查其他指标,并让LB根据这些做出路由select)。
假设你负载平衡的HTTP,大多数负载平衡器将执行HTTP GET或HEAD到某个页面检查他们的状态作为一个可行的后端。 这个页面可以是一个静态图像,一个CSS文件,甚至是一个HTML页面。
但它也可能是一个PHP / ASP / Java / Python页面。 有人可能会争辩说,它甚至应该是一个页面,可以对你的应用程序的堆栈(SQL,NoSQL,助手服务等)进行一些理智的检查。
没有理由不能写一个脚本来实现你的复杂的负载平衡algorithm,只要返回一个HTTP/1.1 200 OK或者HTTP/1.1 503 Service Unavailable取决于服务器是否能够服务请求。
我知道至less有一个负载均衡器可以执行辅助agent-check ,它可以返回比简单的UP / DOWN更多的细节,允许服务器的权重根据服务器代理决定的任何事情以configuration的间隔dynamic更改。 我认为这将是你正在寻找的。
通常,负载平衡器的负载平衡组件仅仅知道活动networking连接的数量和/或其已经发送到后端服务器的请求,并且不知道在后端系统上生成的实际负载。
您select的负载平衡algorithm决定哪个后端服务器将处理负载均衡器接收的下一个新连接/请求。
最简单的是循环法,其中每个后续的新连接/请求都会转到下一个可用的后端服务器。
除了循环法之外,大多数负载平衡器还支持某些加权负载平衡algorithm,这些algorithm可以按比例发送更多或更less的请求/连接到特定的预定义后端服务器。 (即后端服务器A的权重为1,B权重为2的服务器A将处理所有请求的1/3和服务器B 2/3的新请求 )
通过添加监控组件,某些负载均衡器可以dynamic调整该重量。 即当一台后端服务器相对于其他服务器开始减速时,它将dynamic地获得更less的新连接或更less的新请求。
我会说根据后端服务器的可用磁盘空间调整负载平衡器绝对是一个非标准的性能指标。 🙂
关于基于“预期操作要求”的负载平衡,需要深入理解您正在devise的协议,您是否真的想在负载均衡器中复制这样的逻辑?
您提出的问题是与负载平衡有关的一个非常重要的问题,我们之所以负载均衡有两个主要原因,首先也是最明显的是将客户端请求拆分为2个或更多服务器,其次是使该服务高度可用。 考虑到这两个结果来configuration负载均衡器后,我们进入whatif领域? – 让我们说负载均衡两个Web服务器和主机之间的Apache崩溃,只使用循环等负载均衡algorithm负载均衡器仍然会发送客户端请求崩溃的服务器,所以我们还需要监测客户端的健康检查' – 主要原因是在运行状况检查失败时采取回避措施 – 您可以想象负载均衡器需要在我们的Apache示例上执行的运行状况检查 – 是Apache的吗? 你能ping通你的网关吗? 磁盘已满? 你可以到达你的数据库服务器? 等等
根据客户IP,地理位置或浏览器,负载均衡(如caching,粘滞会话,SSL卸载和networking路由)还有其他许多优点,您可以使用http重写和redirect,修改标题以及基本上所有您要关注的内容(服务器温度)。
至于你提到的指标,这些不是健康检查,而是“性能检查”或“这些持有状态”,负载均衡器当然可以根据你定义的参数来查询服务器的任何指标,并根据你定义的参数发送请求。负载平衡器主要是networking设备,不轮询RAM和CPU,还有一些其他的事情(外部),然后通知负载平衡器,给定的阈值已经越过(例如,使用RAM> 90%)负载平衡器,然后产生一个信号量'不要路由新的请求到服务器1'和(外部服务)继续轮询server1,直到RAM <90% – 但如果所有的服务器报告RAM> 90% – 你可以看到多么迅速变得复杂,在云负载平衡这些度量标准用于dynamic地在负载平衡器后面放大和缩servlets器池。
看看这里的概述https://support.f5.com/kb/en-us/products/em/manuals/product/em-health-monitoring-3-0-0/11.html
– 我把你的问题备份起来,人们应该在投票时提出意见。