如何在添加/删除租户时避免httpd restart / relaod(mod_wsgi)

时间:2017-01-09 06:29:15

标签: django apache mod-wsgi multi-tenant

在我们的多租户架构(apache,django,mysql)中

对于我们创建的每个新租户,我们添加一个conf文件(/etc/httpd/conf.d/),例如customer1_http.conf

我们尝试了mod_wsgi,触摸wsgi(mod_wsgi),但Apache能够选择新添加的租户(除非我们重新加载)

  • WSGISocketPrefix run / wsgi
  • WSGIDaemonProcess customer1.com processes = 2 threads = 15 display-name =%{GROUP}
  • WSGIScriptAlias / /opt/org/site/dc/customer1_wsgi.wsgi

是否有更好的替代方法(重启/重新加载除外)使Apache知道新添加/删除的conf文件。

1 个答案:

答案 0 :(得分:0)

不要使用单个Apache,而是考虑使用mod_wsgi-express(https://pypi.python.org/pypi/mod_wsgi)为每个WSGI应用程序使用单独的实例。然后将Apache或nginx作为前端负载均衡器。这样可以更好地控制每个实例,重新启动前端以添加/删除站点不会导致WSGI应用程序重新启动。

另一个选择是使用Docker来运行每个实例,因为这可以简化每个站点的设置和管理。

关于使用Apache代理使用多个mod_wsgi-express实例(使用Docker,但如果不使用Docker仍然相关)的讨论,请参阅:

根据您需要管理的站点和计算机的数量,以及您需要运行的其他类型的基础架构,您可能需要查看Kubernetes和OpenShift等系统来帮助您管理此类东西。