我想在数字海洋上为我的锻造厂添加一个负载均衡器。
我喜欢的配置
负载均衡器 (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 一样将更多的工作交给它。但这完全取决于您。
您甚至可以部署单个/更少的大型实例(或专用服务器),并在更少的物理服务器下运行所有这些逻辑服务器。这听起来可行,因此可能会节省资金(我不了解您的应用程序,可能错了)。