CLI —— 向varnish下发指令

一旦 varnishd 启动,您就可以使用命令行接口来控制它。

最简单的方法是在运行 varnishd 的机器上面运行 varnishadm

varnishadm help

如果您想在远程系统运行 varnishadm ,那么你有两种方法:

你可以使用ssh登录到运行 varnishd 的机器,并运行 varnishadm

ssh $http_front_end varnishadm help

您也可以配置 varnishd 来接收远程CLI连接(使用-T-S参数):

varnishd -T :6082 -S /etc/varnish_secret

然后在您的远程系统中运行 varnishadm

varnishadm -T $http_front_end -S /etc/copy_of_varnish_secret help

您可以看到,ssh连接更为方便一点。

如果您运行 vanishadm 的时候没有添加参数,那么它将会从标准输入中读取cli命令。如果您指定了参数,那么它将这些参数作为单一的CLI命令执行。

CLI总是会返回一个状态码,告诉你执行的结果,200代表成功,返回其他状态码的话说明有问题。

varnishadm 退出时的状态是1,如果不是200的话,它会在标准错误输出中显示状态码。

使用CLI您可以做什么?

CLI提供给你几乎所有对 varnishd 的控制,甚至是一些重要的操作你也可以执行:

  • 加载/使用/禁用VCL程序
  • 禁止缓存
  • 改变参数
  • 启动/停止 worker进程

接下来我们就简单讨论一下:

加载/使用/禁用VCL程序

所有缓存以及处理策略的定义都是通过VCL程序。

您可以批量载入VCL程序,但是只有一个会被指定为“active”的VCL程序,这就是所有新请求开始的地方。

加载新的VCL程序:

varnish> vcl.load some_name some_filename

加载过程将会从文件中读取VCL程序,并且编译。如果编译失败,您将会看到错误信息:

.../mask is not numeric.
('input' Line 4 Pos 17)
                "192.168.2.0/24x",
----------------#################-

Running VCC-compiler failed, exit 1
VCL compilation failed

如果您编译成功,VCL程序将会被加载,并且你现在可以激活它,在任何你需要的时候:

varnish> vcl.use some_name

如果测试后有异常,您可以回滚到之前的VCL程序:

varnish> vcl.use old_name

这种转换是瞬间就完成的,新的请求都会使用你新激活的VCL程序,而现在正在处理的请求将会还使用旧的VCL。

一个很好的方法是您提前设计一个紧急使用的VCL, 同时始终加载它,那么当你需要使用它的时候那就是一个vcl.use一个命令那么简单的事了。

禁止缓存

varnish提供了"purges"来从缓存中删除东西,只要您明确知道他们是些什么。

但是有时候无需知道是什么也可以来清除缓存,这个也是非常有用的。

想象一下,比如公司的logo更换了,那么你现在就需要让varnish停止从旧的缓存中来返回内容:

varnish> ban req.url ~ "logo.*[.]png"

就是这么简单,是的,就是正则表达式。

我们之所以称之为“禁止”是因为对象仍然在缓存中,只不过我们禁止分发了。

当请求过来的时候我们仅仅是使用正则来匹配每个对象,而不是立即检查每一个缓存了的对象。

这种实现方式比那种重启varnish的方式是要方便的多的。

修改参数

在命令行中可以使用-p参数来设置参数,但是也可以从运行的CLI中对其进行检查和修改。

varnish> param.show prefer_ipv6
200
prefer_ipv6         off [bool]
                    Default is off
                    Prefer IPv6 address when connecting to backends
                    which have both IPv4 and IPv6 addresses.

varnish> param.set prefer_ipv6 true
200

一般而言,修改参数并不是一个好主意,除非您有一个好的理由,比如性能优化和安全配置等等。

大多数参数是立即生效的,或者有一些时间上的延迟。

其中有一些还需要你重启子进程才能生效,这些总是会在参数的描述中进行说明。

启动和关闭worker进程

一般来说,您应该保持worker进程是工作状态,但是如果您需要停止或者启动它,您可以这样做:

varnish> stop

varnish> start

如果您启动 varnishd 的时候带了-d参数,那么您可能需要显式的去启动它。

如果子进程挂了,主进程将会自动重启,但是您也可以禁用“auto_restart”参数。

results matching ""

    No results matching ""