Beanstalkd 支持多服务器和负载均衡

Beanstalkd support for multiple servers and load balancing

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

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

谢谢

Beanstalkd 没有负载平衡功能。

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

在代码中你只需要更改IP。 在你的基础设施中,你需要有一个平衡器(HAProxy),它是用一个 Beanstalkd 服务器池设置的。

我们通常有2台机器,它们的配置是这样的:

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