跨应用程序服务器负载平衡

这更多的是理论问题,以帮助我作为开发人员了解我们的系统pipe理员将在应用程序部署中使用的stream程来分发我们的应用程序。 我真的很感谢一些见解,因为这有助于我计划可能的最终陷阱(并且可能最终成为其他有关该主题的入门级问题的宝贵资源)。

假设有几个有效的主机可以回应任何传入的HTTP请求,那么在它们之间进行负载平衡最基本的方法是什么? 我作为一个程序员的基本猜想可能会提出一些利用DNS的东西,直到交通变得如此之高,需要更强大的东西。 我假设在某种程度上利用代理来检查哪些主机忙于应答正在进行的处理,哪些正在空闲。

我有一个完全使用WSGI在Python中构build的应用程序数据层,并且在testing中我们刚刚在Apache中使用了mod_wsgi。 如果有人从理论上将它部署在几台相同的机器上,所有这些机器都连接到应用层中相同的数据库/资源​​,那么将业务的第一阶段分发到整个域中的请求将是什么? 只需在dns中列出多个Alogging?

对于模糊性,我感到抱歉,从开发者的angular度来看,还没有find一个合适的主题。 我感谢帮助!

一个典型的安装程序实际上将与您提出的build议相反 – 首先实施一个前端负载平衡器(例如HAProxy,Nginx,甚至是Varnish等,或基于硬件),并且只在以后使用DNS。

传入请求将到达负载均衡器,通常可以执行多个function,包括:

  • 跟踪后端服务器的状态(即健康状况)
  • 智能地决定select哪一个(例如最低负载,循环,特定请求types等)
  • 如果第一台服务器没有正确响应,请尝试另一台服务器
  • 屏蔽您的后端服务器

这种方法有几个优点:

  • 您可以保留对设置各个方面的控制权
  • 您可以轻松地添加和删除后端服务器
  • 负载平衡“智能化”

但是,问题是所有stream量都必须通过单个负载均衡器。 在一个层面上,这是一个重要的失败点(但你可以通过故障转移来减less影响)。 更重要的是,在某个点上,单个节点将无法处理需要stream经的stream量。 后者是DNS解决的问题 – 这样请求返回不同的IP,对应于不同的负载均衡器。

负载平衡方法完全取决于您希望提供给pipe理员的devise规范。 没有“这是如何负载平衡”的指南,因为有多种方式来做到这一点,取决于网站和所需的解决scheme的健壮性。 EG的静态网站只需要冗余,没有业务影响循环DNS将没事的。 如果你只需要冗余,那么一个集群就可以。 如果您需要基于响应时间的99.999可靠性和负载平衡,您将需要冗余的专用硬件networking负载平衡器。

作为一名pipe理员,我需要知道你的应用程序究竟做了什么,以及在哪里增加负载,以确定如何最好地实现负载平衡。 另外如果这有一个数据库后端,它也需要是多余的。 这些都是你应该被问到的,或者你应该提供给pipe理员的,以便充分devise服务器基础设施。

负载均衡HTTP请求可以通过几种方式完成。 DNS循环是一个办法,但你没有太多的控制权。

另一种更好的方法是使用专用的硬件进行负载均衡。 例如,您可以运行Linux机器并安装haproxy等负载平衡软件。

您需要注意的一个重要问题是从客户端获得相同的视图,而不pipe从服务器云中select哪个服务器。