说明
使用 redisc 可以缓存响应,最长 3600 秒。在多个 CoreDNS 实例共享 VIP 的设置中,Redis 缓存最有用。例如,Kubernetes 集群中的多个 CoreDNS Pod。
如果无法访问 Redis,此插件将变为 noop。可以同时使用 cache 和 redisc 插件,其中 cache 是 L1,redisc 是 L2 级别缓存。如果多个 CoreDNS 实例针对同一项目显示缓存未命中,则所有实例都将从上游获取相同信息并更新缓存,即这些实例之间没有(额外)协调。
如果 Redis 不可用,CoreDNS 根本不会缓存任何内容,如果已启用指标,则这将在 set_errors_total
指标中可见。
语法
redisc [TTL] [ZONES...]
- TTL 最长 TTL(以秒为单位)。如果没有指定,将使用最长 TTL,即无错误响应为 3600,不存在拒绝响应为 1800。如果将 TTL 设置为 300:
redisc 300
,将缓存记录最长 300 秒。 - ZONES 它应该缓存的区域。如果为空,则将使用配置文件中的区域。
Redis 缓存中的每个元素都根据其 TTL(最大值为 TTL)进行缓存。对于负缓存,使用 SOA 的 MinTTL 值。如果没有指定端点,将使用默认值 127.0.0.1:6379
。
如果想要更多控制
redisc [TTL] [ZONES...] {
endpoint ENDPOINT
}
- TTL 和 ZONES 如上。
endpoint
指定用于 Redis 的 ENDPOINT,默认值为127.0.0.1:6379
。
指标
如果已启用监控(通过 prometheus 指令),则将导出以下指标
coredns_redisc_hits_total{server}
- 缓存命中计数器。coredns_redisc_misses_total{server}
- 缓存未命中计数器。coredns_redisc_set_errors_total{server}
- 连接到 Redis 时出错的计数器。coredns_redisc_drops_total{server}
- 已丢弃消息的计数器。
server
标签指示处理请求的服务器,请参阅 metrics 插件了解详细信息。
示例
为所有区域启用缓存,在本地缓存,并在群集范围的 Redis 中缓存最长 40 秒。
. {
cache 30
redisc 40 {
endpoint 10.0.240.1:69
}
whoami
}
代理到 Google 公共 DNS,仅缓存对 example.org(及以下)的响应。
. {
proxy . 8.8.8.8:53
redisc example.org
}
另请参阅
有关 Redis 的更多信息,请参阅 Redis 网站。已存在名为 redis 的外部插件,因此将此插件命名为 redisc,表示“redis 缓存”。
错误
单元测试很少。