概述
了解缓存层次结构
缓存层次结构由彼此通信的缓存级别组成。ats支持多种类型的缓存层次结构。
所有缓存层次结构都识别父和子的概念。 父缓存是层次结构中较高的缓存, ats可以
将请求转发到该缓存。子缓存是ats作为父缓存的缓存。
Parent Caching
如果ats节点无法在其缓存中找到请求的对象,则它会在最终从源服务器检索对象
之前搜索父缓存(它本身可以搜索其它缓存). 可以将ats节点配置为使用多个父缓存,以
便在一个父缓存不可用时,将依次检查其他父缓存,直到请求得到正确服务或者没有
其它父缓存可用时能够联系到原始服务器。称为故障转移。ats支持http和https请求的
父缓存。
如果您不希望所有请求都转到父缓存,则只需将ats配置为将某些请求(包含特定URL
的请求)直接路由到源服务器。可以通过在parent.config中设置父代理规则来实现。
下图说明了一个简单的缓存层次结构,其中ats节点配置为使用父缓存。在以下
方案中,客户端将请求发送到作为缓存层次结构中的子节点的ats节点(因为它配置为将
丢失的请求转发到父缓存)。该请求是缓存未命中,因此ats然后将请求转发到父缓存中
命中。父缓存将内容的副本发送到ats流量服务器,然后将其缓存并提供给客户端。后续
的请求可以直接从ats缓存(直到数据过期或失效)提供相应的服务。
如果请求是父级的缓存未命中,则父级将从源服务器(或从另一个缓存中检索内容,具体取决于父
级的配置). 父级缓存内容,然后将副本发送到ats(其子级), 在该级别将其复制并提供给客户端。
Parent Selection Policies
ats子节点可以使用多个父选择策略;
1. 一致性hash. 子节点为每个URI选择特定父节点。这有效的使父缓存大小成为每个父缓存大小的
总和;
2. 轮询. 子节点循环访问父节点。孩子可以根据客户端IP("true")或严格循环("严格")选择父级。
3. 未命名的。子节点选择列出的第一个活动父节点。这种策略有两种变体.当策略设置为"false"
时,子节点将使用第一个列出的父项(称为p1),直到它标记为关闭,此时子节点将切换到
第二个父项。然后,当重新测试并发现p1时,子节点将重新启用p1. 当选择策略设置为"
已锁定"时,子项将使用p1直到它被标记为关闭,此时它将切换到p2. 当重新测试并发现
p1可用时,子节点将继续使用p2直到它被标记为关闭。
与remap.config进行交互
如果需要重映射规则(proxy.config.reverse_proxy.enabled), 当请求进入子节点时,将在
父选择之前评估其remap.config。这意味着客户端请求是根据重映射规则进行转换的,因此,
应该根据重新映射的主机名进行任何父选择。无论是否启用了pristine主机头(proxy.config.
url_remap.pristine_host_hdr), 都是如此。父节点将接收已转换的请求(因此需要配置为接受它).
Example
客户端向ats请求http://example.com.请求的原始服务器是http://origin.example.com;
父节点是 parent1.example.com, 子节点配置为反向代理。
子节点中的remap.config配置
map http://example.com http://origin.example.com
子节点的parent.config 配置
dest_domain=origin.example.com method=get parent="parent1.example.com:80
父缓存(parent1.example.com)需要一个类似于remap.config行:
map http://origin.example.com http://origin.example.com
在此示例中,如果parent1.example.com已下线,则子节点将在缓存未命中时自动直接联系
origin.example.com .
Parent Failover
ats支持使用多个父缓存。这可确保如果一个父缓存不可用,则另一个父缓存可以为客户端请求
提供服务。
将ats配置为使用多个父缓存时,ats会检测父缓存不可用并将miss请求发送到另一个父缓存。如果指定两个以上的父缓存,则查询父缓存的顺序取决于parent.config配置文件中配置的父代理规则。默认情况下,将按照配置文件中列出的顺序查询父缓存。
Configuring Traffic Server to Use a Parent Cache
要将ats配置为使用一个或多个父缓存,必须执行下面详述的配置调整。
只需配置子缓存。假设父节点配置为服务器于子服务器的源服务器, 则作为ats父缓存的节点不
需要其他配置。
1. 设置records.config
CONFIG proxy.config.http.parent_proxy_routing_enable INT 1
2. 标识要用于miss的请求提供服务的父缓存。要使用父故障转移,必须标识多个父缓存,以便于
在父缓存不可用时,将请求发送到另一个父缓存;
3. 编辑parent.config以设置父代理规则,该规则指定希望转发请求的父缓存;
以下示例将ats配置为将包含正则表达式和路径/viewpoint的所有请求直接路由到源服务器(绕过
父层次结构);
url_regex=politics prefix=/viewpoint go_direct=true
以下示例将ats配置为将包含http://host1开头的url的所有未命中请求定向到父缓存parent1.如果
parent1无法提供请求,则请求将转发到parent2. 因为round-robin=true, ats会根据客户端ip地址循环
访问父缓存列表。
dest_host=host1 scheme=http parent="parent1;parent2" round-robin=strict
traffic_ctl config reload
转载于:https://www.cnblogs.com/yx2016542/p/9319359.html
最后
以上就是酷炫纸鹤为你收集整理的ats 分层缓存的全部内容,希望文章能够帮你解决ats 分层缓存所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复