升级到Varnish 6.2

VCL

Varnish 6.1的VCL程序可以在没有新版本更改的情况下运行。

VCL加载现在将发出警告,但不会像以前那样失败,如果后端声明使用 .path 字段指定Unix域套接字,但套接字文件不存在或在VCL加载时不可访问。这使得在Varnish启动或加载VCL之后,可以启动在套接字上侦听的对等组件,或设置其权限。如果在尝试回迁时无法访问套接字,则后端回迁失败。

return(miss) 从… vcl_hit{} 现已移除。实施类似功能的一种选择是:

  • return (restart) from vcl_hit{}

  • 在……里面 vcl_recv{} 对于重新启动(当 req.restarts 增加了), set req.hash_always_miss = true;

运行时参数

一些涂脂抹粉的 -p 一段时间以来不推荐使用的参数已被删除。如果您还没有更改它们,那么现在就必须进行更改。它们是:

  • shm_reclen --使用 vsl_reclen 取而代之的是

  • vcl_dir --使用 vcl_path 取而代之的是

  • vmod_dir --使用 vmod_path 取而代之的是

的默认值为 thread_pool_stack 在64位平台上从48k增加到56k,在32位平台上增加到52k。请参阅下面的讨论 参数 在……里面 Varnish 6.2中的更改 了解更多细节。

VMOD标准中的类型转换函数

中的现有类型转换函数 VMOD标准-Varnish标准模块 已经重新制作,使它们更灵活、更易于使用。这些函数现在还接受适当的数字或数量参数。

这些类型转换函数应该完全向后兼容,但应注意以下区别:

  • 这个 fallback 不再需要。方法的情况下转换失败 fallback 参数现在将触发VCL失败。

  • 如果没有或有多个参数(加上可选参数),也会触发VCL故障 fallback )被给出。

  • 转换函数现在只在必要时截断(而不是舍入)。

  • 实数舍入(实数r) 已添加用于显式舍入的。

以下函数已弃用,应由新的转换函数替换:

它们将在未来版本的Varnish中删除。

Varnishadm和CLI

这个 -j JSON输出选项已添加到许多命令中,请参见 JSON输出 在……里面 Varnish 6.2中的更改Varnish-CLI 。我们建议使用JSON格式自动解析CLI响应 (瓦尼沙德姆 输出)。

列出后端

backend.list 增加了一个额外的列,输出已更改,并且字段现在具有动态宽度:

  • 这个 Admin 专栏现在可以准确地声明 probe 仅在后端具有动态确定健康状态的某种手段的情况下。

  • 这个 Probe 列已更改为显示 X/Y ,其中:

    • 整型 X 是最近窗口中良好探测的数量;或者,如果有问题的后端是控制器,则是通过该控制器或任何其他特定于控制器的指标访问的健康后端的数量。

    • 整型 Y 是定义后端总体运行状况阈值的窗口(来自 .window 探头的区域,请参见 VCL );或者在控制器的情况下,通过控制器或任何其他特定于控制器的指标访问的后端的总数。

    如果没有调查或导演没有提供细节, 0/0 就是输出。

  • 这个 Health 添加了一列以包含动态(探测)运行状况状态,并将格式统一为 healthysick

    如果没有探测器, Health 总是以下列形式给出 healthy 。请注意,如 Admin 列具有优先级。

probe_message 领域: backend.list -j 输出,即 ProbeHealth 列显示为数组 [X, Y, health]

看见 Varnish-CLI 了解更多细节。

列出VCLS

的非JSON输出 vcl.list 已更改:

  • 这个 statetemperature 字段显示在单独的列中(以前组合在一列中)。

  • 显示标签和VCL配置之间关系的可选列(在使用标签时)已分为两列。

看见 Varnish-CLI 了解更多细节。在JSON输出中 vcl.list -j ,此信息显示在不同的字段中。

中的列宽 backend.listvcl.list 输出(非JSON)现在是动态的,以适应终端窗口的宽度。

面向VMOD和API客户端的开发人员和作者

现在需要使用Python3.4或更高版本来构建Varnish,或者使用随Varnish一起安装的脚本,例如 vmodtool.py 来制作VMOD或其他Varnish艺术品。不再支持Python2,这种支持可能也会在未来的6.0LTS版本中被删除。

VRT API已升级到版本9.0。变化包括:

  • API中的函数已添加,其他函数已删除。

  • 这个 VCL_BLOB 类型现在实现为 struct vrt_blob

  • 这个 req_bodybytes 领域: struct req 已被移除,现在应作为对象核心属性进行访问。

看见 vrt.h vt.的. change log董事 在……里面 Varnish 6.2中的更改 了解更多细节。

中声明的C标识符中的名称冲突 vcc_if.h 。这可能需要更改您的VMOD代码中的名称。为了便于重命名, vcc_if.h 定义用于为vmod前缀添加前缀以及命名枚举和参数结构的宏。有关详细信息,请参阅 change log ,并检查 vcc_if.h 一代又一代。

展望未来,我们将坚持VMOD方法和函数返回的数据是不变的原则。现在,在某些地方通过使用 const 修改器。一个VMOD可以在它自己的实现中自由地执行它认为合适的操作,但是如果您尝试更改由另一个VMOD返回的内容,结果是不确定的。

eof