我有一个低负载网站,平均每天有 1000 名访客。粗略估计,大约 6 个月内每天的用户数量将达到 10,000(甚至 20K)。但我仍然认为这是一个低流量的 CMS 网站。
所有内容都托管在一台具有 8 GB RAM 和 4 核 CPU(我可能会将其增加到 16G/8 核)的单个(CentOS VM)服务器上。
目前我们的设置如下:
Nginx -> Varnish -> HAProxy -> CMS_HTTP_Daemons X 2 -> 1 DB Daemon -> SDD Disk
由于 Varnish 也可以充当简单的循环负载均衡器,我计划从中间移除 HAProxy;又因为在我给出的场景中,nginx 除了 proxy_pass 之外什么都不做,所以我还考虑从链中删除这部分软件,以使设置如下:
Varnish (WebServer+LB+HTTPCache) -> CMS_HTTP_Daemons X 2 -> 1 DB Daemon -> SDD Disk
这是推荐的吗或者这似乎是个好主意吗?
顺便说一下,我的 CMS 是 Zeo/Plone,数据库是 ZopeDB。
答案1
一种替代方法是在 nginx 中设置负载平衡/缓存,并且只运行 nginx 和 CMS HTTP 守护进程。
但是,我不知道 nginx / Varnish 缓存性能的差异。
答案2
我们同时使用 varnish -> haproxy -> plone 和 nginx -> varnish -> haproxy -> plone。
我认为你可以用 varnish 来做所有事情,但我不确定它能给你带来多少好处。你必须花时间重新配置和测试。这些过程不会占用太多的 CPU 或 RAM。对于重写,我们在 CMS 中进行,因此不需要 nginx。
对于您这种规模的服务器,我将运行 4 个 zope 服务器,每个服务器可能使用 2 个线程。如果您真的担心流量高峰,您可以设置缓存,以便页面和文件夹在 varnish 中缓存 1-5 分钟。然后您的设置可以处理大量负载(假设您没有嵌入常用的表单和应用程序)。
答案3
你看过https://docs.plone.org/manage/deploying/index.html?
通常使用 nginx 来重写 URL。Varnish 适合缓存。对于低负载站点,HAProxy 可能确实没有必要。
考虑在 Plone 论坛上发布与 Plone 相关的问题。我已在那里发布了你的问题的链接,网址为https://community.plone.org/t/stack-overflow-varnish-as-a-simple-forwarding-web-server/4489