Nginx 与 docker 负载平衡应用服务器 (php)

Nginx 与 docker 负载平衡应用服务器 (php)

我还没有找到解决办法,所以在这里问一下:

这是我要锁定解决方案的情况:

我们正在规划一个包含以下组件的架构

  1. Docker 容器(根据负载需要自动进行负载平衡)处理传入数据的应用服务器(导入、后端存储、Web API)
  2. 队列服务器
  3. Docker 容器(根据负载需要自动进行负载平衡)处理队列中每个项目并将其存储到弹性搜索服务器和 MySQL 数据库(ES 用于查询和输出给客户)的应用程序
  4. Docker 容器(根据负载需要自动平衡负载)处理传出数据收集的应用程序

我几乎已经完全设置好了一切。唯一没有解决方案的是前端的负载平衡(前端 Nginx 服务器)。我只需要将其用于与 1 和 4 的通信。它们的数量可能会有所不同,因此 Nginx 应该能够知道存在多少个容器。会话处理正在运行(Redis 后端)(已在 8 个应用服务器上使用负载平衡和压力测试工具进行了测试。)。但我不知道如何处理不同数量的应用服务器和 Nginx 之间的通信。如果有人能告诉我如何配置它。任何有关解决此问题的线索都将不胜感激。

克里斯

答案1

opensvc提供了解决方案https://docs.opensvc.com/latest/agent.configure.gobtw.html

主页上有此类集群的截屏演示

我为什么建议这个解决方案:

  • opensvc集群可以配置为具有私有集群范围的 DNS 管理解决方案。基于 PowerDNS,集群维护opensvc部署在集群中的所有服务的 DNS 记录。一旦生成新的 docker 容器,SRVDNS 映射中就会出现一条新记录。

  • 在这样的设置中,您还必须部署cni+weave以使私有延伸网络 ipam 在整个集群范围内工作,以便为新容器提供私有 IP 地址。

  • opensvc通过部署入口网关来完成整个过程。一方面,它保存应用程序最终用户连接的公共 IP 地址,另一方面,它维护实际为应用程序提供服务的所有 docker 容器的列表。

  • 通过添加一个清洁的docker容器,所有这些东西都变成了动态的opensvc,这个容器监听集群事件(比如“新容器生成”),并自动配置入口网关以在后端添加一个docker容器。

相关内容