我在Laravel项目中使用beantalkd处理队列中的作业。 Beanstalkd在本地运行。我想要做的是在队列变大时添加一个或多个远程服务器来处理一些作业。我知道使用Laravel可以将作业发送到特定的远程连接,但是通过这种方式,我不知道发送作业之前每个服务器的负载。

我想知道例如当远程作业失败时,beanstalkd是否支持服务器之间的负载平衡和错误处理。

谢谢

最佳答案

Beanstalkd没有负载平衡功能。

您可以在平衡器上设置HAProxy并注册安装了beantalkd的多个服务器。然后,当您从Laravel代码发送作业时,将其发送到HAProxy,然后HAProxy决定将作业放置在哪个子服务器上,因为它知道加载情况以及子系统是否发生事件。

在代码中,您只需要更改IP。
在您的基础结构中,您需要具有通过Beanstalkd服务器池设置的平衡器(HAProxy)。

我们通常有两台机器,它们的配置如下:

- Machine 1: HAProxy, Apache, MySQL, Laravel, Beanstalkd
- Machine 2: MySQL, Laravel, Beanstalkd

10-04 15:40