1.The Big Varnish Picture

本文编译自:
[users-guide][1]
[1]:https://www.varnish-cache.org/docs/4.0/users-guide

启动和运行 Varnish


Varinsh 的两个主要部分是 varnishd 程序的两个进程。第一个进程是 “manager” 进程,其工作是与作为管理者的我们进行交流,并完成我们交代它的事情。

第二个进程是 “worker” 进程 或者 “child” 进程。这是负载处理 HTTP 流量的进程。

当你启动 varnishd 程序,你会启动 “manager” 进程,当它处理完命令行 flags,它会为你启动 “child” 进程。而当 “child” 进程死去,“manager” 进程会自动立即重新启动它。

如此分工的目的是为了安全考虑:管理进程会以 root 权限运行,这是为了打开 TCP socket 端口 80,但以最小化的权限启动子进程,这是一个防御措施。

管理进程是交互式的,它提供一个 CLI - 命令行接口给管理者使用,我们可利用它在脚本或者程序中,对 Varnish 进行管理。命令行所提供的功能,基本上覆盖了 Varinish 对 HTTP 流量可作的所有操作,当需要做一些调整时,我们基本上不需要重启 Varnish,因为都可以通过命令行接口进行在线调整,除非你需要改变很基础的东西。

命令行接口可以通过使用 PSK - Pre Shared Key 访问控制体系,进行安全的远程访问,因此 Varnish 很容易被集成到你的操作管理平台中,或是与你的 CWS 绑定到一起。

这些就是 启动和运行 Varnish 讲述的内容。

VCL - Varnish 配置语言


对于这一类的事情,像:子进程如何处理 HTTP 请求,缓存什么,移除哪个 headers,都是通过 VCL - Varnish 配置语言,来指定的。管理进程会编译 VCL 程序,并检查是否有错误。真正执行 VCL 程序的是子进程,子进程将 VCL 程序的定义应用到每一个 HTTP 请求之上。

因为 VCL 被编译为 C 代码,然后 C 代码被编译为二进制程序,所以其执行效率都很高,即使很复复杂的 VCL 程序也只需要几个微妙的执行时间,对于整体性能几乎没有影响。

如果你不是真正的程序员,也不用担心,VCL 是一个很简单的语言,用来做简单的事情:

sub vcl_recv {
        # Remove the cookie header to enable caching
        unset req.http.cookie;
}

命令行接口允许你在任何时候编译和加载 VCL 程序,而且你可以在加载的 VCL 程序之间进行实时切换,而不用重启子进程,因而不会丢失任何一个 HTTP 请求。

VCL 代码可通过外部模块进行扩展,被称为 VMODs,甚至也可以使用内联的 C 代码进行扩展(如果够胆量的话),所以 Varnish 在可对 HTTP 流量作什么样的处理这一点上,真的没有什么限制。

VCL - Varnish 配置语言 对 VCL 语言以及能做什么做了详尽的介绍

报告与统计数据


Varnish 使用“共享内存”的一段内存来报告和记录它的活动和状态信息。对于每个 HTTP 请求,都有很多详细的记录被添加到日志内存段中。其他进程可订阅 Varnish 的日志记录,对其进行过滤,进行格式化,比如格式化为 Apache/NCSA 风格的日志记录。

Varnish 使用“共享内存”的另一段内存来记录统计计数信息,因此可对缓存的命中率、资源使用、指定的性能矩阵进行实时的,微妙级别的记录。

Varnish 提供了很多工具,它们根据从共享内存中得到的信息提供报告,比如 varnishlog, varnishstats, varnishncsa etc;Varnish 还提供了 API 可供调用,因此你可以编写自己的工具。

报告与统计数据 小节解释了这一切是如何工作的。

Varnish 以及 Web 站点的性能


你对 Varnish 感兴趣的原因,大概是因为它可以让你的网站更好的工作。网站性能的调优有很多方面,比如,到底缓存哪些内容,使用 ESI 设计一个基于地域的多元化多层次的 CDN,自动的故障转移等等。

Varnish 以及 Web 站点的性能 这一小节会带你了解 Varnish 带来的可能性,以及它所提供的配套设施。

Varnish 问题诊断


最后,引用一下墨菲定律:事情总会变糟,而且常常是在你最不希望的时刻发生问题。比如你的电池正好没电,正好在进行结婚周年纪念时,或是遇到台风来的时候。

是的,总是在那种时候发生,不是吗?

当出了问题时,Varnish 问题诊断 小节或许能提供一点帮助。

你可能感兴趣的:(1.The Big Varnish Picture)