我在Laravel项目中使用beanstalkd来处理队列中的作业。 Beanstalkd在本地运行。我想要做的是添加一个或多个远程服务器来处理队列变大时的一些工作。我知道,使用Laravel,我可以将作业发送到特定的远程连接,但这样我在发送作业之前就不知道每个服务器的负载。
我想知道当远程作业失败时,beanstalkd是否支持服务器之间的负载平衡和错误处理。
谢谢
答案 0 :(得分:4)
Beanstalkd没有负载均衡功能。
您可以在平衡器上设置HAProxy,并在安装了beanstalkd的情况下注册多个服务器。然后,当您从Laravel代码发送作业时,您将发送到HAProxy,HAProxy将决定哪个子服务器放置作业,因为它知道加载以及是否存在子系统事件。
在代码中,您只需要更改IP。 在您的基础架构中,您需要具有使用Beanstalkd服务器池设置的平衡器(HAProxy)。
我们通常有2台机器,它们的配置如下:
- Machine 1: HAProxy, Apache, MySQL, Laravel, Beanstalkd
- Machine 2: MySQL, Laravel, Beanstalkd