跨多个服务器共享Varnish缓存

时间:2014-10-21 19:53:48

标签: varnish

我们在负载均衡器后面有4个Varnish服务器。默认情况下,每个Varnish服务器都有自己的缓存。它们不共享缓存。这是一个问题,因为它需要5-6个页面加载特定页面才能将其缓存在每个服务器中。

为了解决这个问题,我将Varnish存储从内存更改为文件。该文件存储在磁盘驱动器上,该磁盘驱动器在所有Varnish服务器之间共享。所有Varnish服务器都能够正确启动,但不知何故,它们仍在使用自己的缓存。我确实确认了Varnish正在写入缓存文件。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我知道这个问题已经过时了,但供将来参考:

  

文件后端将对象存储在由磁盘上未链接文件支持的内存中,并使用mmap。

(来自https://www.varnish-cache.org/docs/4.0/users-guide/storage-backends.html

这里的重要词是unlinked,这意味着一旦发生,该文件就不再可用于该过程之外。它仍然可以由创建过程使用,该过程在mie mmap上保存句柄。 从unlink(2)手册页:

  

如果名称是文件的最后一个链接但任何进程仍然打开文件,则文件将保持存在,直到引用它的最后一个文件描述符被关闭。

简而言之:不,相同的文件后端无法共享,除此之外,目前还没有已知的方法在多个varnish实例之间共享缓存本身(大多数现有技术涉及链接实例以复制缓存内容,但这是复制,而不是分享。)