Forge 上的负载平衡 Laravel 应用程序配置

Forge 上的负载平衡 Laravel 应用程序配置

我想在数字海洋上为我的锻造厂添加一个负载均衡器。

我喜欢的配置

负载均衡器 (nginx) Web 服务器 @ 2-4 DB 服务器

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

我有最小实例的网络服务器,正在停止/卸载 mariadb 512 MB / 20 GB

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

我不知道负载均衡器的配置应该是什么样子。

我知道这取决于网站将获得的流量,但如果能知道一个起点就更好了。如果您每天有 100,000 次点击,或者负载平衡器的断点在哪里。

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

答案1

我不完全确定要求的是什么,但我会尽力解决每个部分。

通常,通过 nginx 进行负载平衡的设置如下:负载平衡器 > Web 服务器 > 数据库服务器。也就是说,负载平衡器从 Web 服务器请求页面,而 Web 服务器从数据库服务器获取数据。

从逻辑上讲,它看起来像这样(尽管它包含的内容超出了你的需要)

在此处输入图片描述

但它的物理设置是这样的

在此处输入图片描述

所以,它将位于同一个 vlan 下。您可以进行不同的设置,但这只是最常见的设置。


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

最重要的部分是上游。它定义了数据流将流向哪个 Web 服务器,以及其中的多少数据流将通过权重流向其他服务器。


负载均衡器可以处理多少负载取决于您对负载均衡器的要求。nginx 中的规则可能非常复杂且冗长。甚至可能存在您必须编写丑陋的 if 语句的情况。您可能针对某些 IP 有许多自定义场景。配置需要处理的所有这些事情都会增加每个请求的负载。

不过,在最简单的配置下,每天 100,000 个请求对于大多数服务器来说都是微不足道的。单靠负载平衡并不能完成很多工作。因此,最小的实例完全有可能轻松处理 100k 个请求(假设没有带宽瓶颈),但我对 digital ocean 的软件包并不熟悉,因此无法肯定地说。

因此,如果您觉得在服务器上单独运行负载均衡器会浪费资源,那么您当然可以像 redis 一样将更多的工作交给它。但这完全取决于您。

您甚至可以部署单个/更少的大型实例(或专用服务器),并在更少的物理服务器下运行所有​​这些逻辑服务器。这听起来可行,因此可能会节省资金(我不了解您的应用程序,可能错了)。

相关内容