【问题标题】:Docker for traditional web application with load balancing?用于具有负载平衡的传统 Web 应用程序的 Docker?
【发布时间】:2015-12-17 04:16:33
【问题描述】:

这是一个概念问题而不是技术问题。

我的问题是:如果我要去

  • 使用 Apache 设置 wordpress eshop (woocommerce)
  • 使用 Docker,
  • 具有负载平衡,使用 HAProxy
  • 实现微服务架构

我应该如何实现它?

这是我想出的:

  • 1 个容器:Apache + PHP
  • 1 个容器:MySQL

但我不知道如何将 HAProxy 集成到架构中。

谁能给我一个想法?

如果所有容器都在一台机器上,如何进行负载平衡?

提前感谢您的帮助。

【问题讨论】:

  • 如果您只打算拥有一个 Apache 实例,您打算在哪些方面进行负载平衡?更典型的是拥有一个数据库和多个 Apache。并且在同一台机器上的多个 Apache 上通常几乎没有点负载平衡;价值来自拥有多台机器。我建议你阅读一些文章,如blog.hypriot.com/post/docker-compose-nodejs-haproxy

标签: php mysql wordpress docker haproxy


【解决方案1】:

我在多台机器上也做过类似的事情。

首先,除非您有多个 Apache+PHP 实例,否则 haproxy 根本不会出现。

否则:理想的设置是:

来自用户的请求-->haproxy-->多个(Apache + PHP)-->MySQL。

在这里,Haproxy 会为您提供一个公共公共 IP(主机的)和端口,供您的应用访问。每当有人访问此 IP 和端口时,请求将被转发到您的 Apache+PHP 容器之一。您必须编辑 haproxy.cfg 文件并列出容器的 IP 和端口。

此链接可能会对您有所帮助: https://serversforhackers.com/load-balancing-with-haproxy

请注意,这里的 Haproxy 是在您的机器上运行,而不是作为 Docker 容器。

【讨论】:

  • 谢谢。那么还有一个问题:你的 php 文件怎么样?是否使用 Docker VOLUMN 语法作为容器可以访问的单个目录加载?
  • 您的意思是您的 Web 应用程序的源代码?好吧,一个好的做法是将它们复制到您的容器中,而不是卷安装。在需要持久化数据的地方应该使用卷挂载。您的 mysql 容器可能就是这种情况。这是因为如果 mysql 容器出现故障,您不想丢失数据。但是,PHP 文件并非如此。
  • 谢谢。我问它的原因是开发人员进行某些维护,例如“更新字符串”或“更新文件”,“添加图像”等是很正常的。如果我们将源代码打包到一个容器中,那么我猜开发人员需要将文件一个一个更新到每个容器。这就是为什么我想问这个。你有过类似的经历吗?
  • 是的,对。在这种情况下,您应该进行卷安装。但是一旦代码稳定且完整,就将其复制到镜像中,而不是挂载。我的经验是,卷安装只能用于动态数据(如您的)和持久数据(数据库)。
猜你喜欢
  • 2010-10-25
  • 2020-09-11
  • 2016-09-28
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多