在Forge上负载平衡的Laravel应用程序configuration

我想添加一个负载平衡器到我的数字海洋上锻造。

我想要的configuration

负载平衡器(nginx)Web服务器@ 2-4数据库服务器

我想知道这些实例需要什么configuration。

我有Web服务器@最小的实例和停止/卸载mariadb 512 MB / 20 GB

数据库服务器是2GB / 40 GB

我不知道负载平衡器的configuration应该是什么。

我知道这取决于网站将要获得的stream量,但如果能够了解一个起点,这将是一件非常棒的事情。 如果您每天有10万次点击,或者负载平衡器突破点在哪里。

我正在考虑使用redis来pipe理会话状态。 我是否需要设置一个单独的服务器来运行它,还是可以在我的负载平衡器上运行它?

我不完全确定要问什么,但我会尽力解决每个部分我可以。

通常情况下,通过nginx进行负载平衡的方式如下:负载平衡器> Web服务器>数据库服务器。 也就是说,负载均衡器要求来自Web服务器的页面,Web服务器从数据库服务器获取数据。

从逻辑上讲,它看起来像这样(尽pipe它比你需要的多)

在这里输入图像说明

但是它是如何设置的,看起来像这样

在这里输入图像说明

所以,它将在同一个vlan下。 你可以设置不同的,但它只是最常见的设置。


对于如何设置configuration的问题,digital-ocean其实已经有了一个指导。 https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing

最重要的部分是上游。 它定义了它将要运行的Web服务器和权重,有多less是在某个地方定向的。


关于负载平衡器可以处理多less负载的问题取决于您对负载平衡器的要求。 nginx中的规则可以变得相当复杂和冗长。 甚至有可能出现这样的情况:你必须编写丑陋的if语句。 对于某些IP,您可能有许多自定义scheme。 所有这些configuration需要经过的东西都会增加每个请求的负载。

尽pipe最简单的configuration,对于大多数服务器来说,每天100,000个请求是一个很小的数量。 单独的负载平衡并不是很多工作。 所以完全可能的是,最小的实例可以轻松处理10万个请求(假设没有带宽瓶颈),但是我并不熟悉数字海洋软件包的确定性。

所以如果你觉得在服务器上单独运行负载平衡器会浪费资源,那么你可以像redis那样做更多的工作。 但这完全取决于你。

您甚至可以部署一个/更less的更大的实例(或专用服务器),并在更less的物理服务器上运行所有这些逻辑服务器。 它可能会省钱,因为它听起来是可行的(我不知道你的应用程序,可能是错的)。