我们正在进行更大规模的部署,其中多台服务器在 apache2 和 mod_wsgi 下运行 Django 应用程序。
我们正在考虑切换到 apache2 + fastcgi 并将 fcgi 进程移至单独的应用程序服务器“层”。
我的问题是:如何在这些多台后端服务器之间进行适当的负载平衡?我最关心的是动态添加和删除服务器的能力。
答案1
你的建议是可行的;听起来你基本上是在重新创造eins.de 使用的架构安装 Ruby On Rails 一段时间。
但话虽如此,它不会是我的首选。既然 HTTP 如此普遍,为什么还要费心进行负载平衡和添加/删除服务器而不是使用 FastCGI?您认为使用 FastCGI 而不是 HTTP 会带来哪些好处?
我只会使用 HTTP/HTTPS 负载均衡器作为第一台服务器,然后将 HTTP 传达给应用服务器层。应用服务器可以根据您的偏好使用 Apache2+mod_wsgi+Django 或 gunicorn+Django。
有许多不错的 HTTP 负载均衡器可用。搜索此网站。一些常见的开源选择是 Perlbal、nginx、HAProxy 和 Apache 2.2(无特定顺序)。还有商业设备,如 Coyote Point、Loadbalancer.org,或 Amazon ELB for EC2 等服务。
我最关心的是动态添加和删除服务器的能力。
这是一个很好的观点,既可以让应用服务器停止服务,也可以在运行中完全重新加载负载均衡器配置。我首先想到的是,Perlbal、nginx 和 HAProxy 都可以在运行时重新加载其配置文件;但我还没有验证这一点。