如果我的 dns 后面的主机服务器发生变化,我是否需要重新启动 td-agent 转发器?

Do I need to restart td-agent forwarders if the host server behind my dns changes?

使用 td-agent 将我的日志转发到日志聚合节点 运行 kibana/elasticsearch/td-agent,我的转发器配置如下:

  <match mytag.**>
    type forward
    flush_interval 10s
    <server>
      host myserver.com
      port 24224
    </server>
  </match>

我的日志聚合节点通过 DNS 映射到 myserver.com

我配置了一切,日志在我的聚合节点上收集得很好。然后我决定启动一个新的聚合节点来测试不同的配置。我更改我的 dns 以将 myserver.com 发送到这个新节点。

我可以通过 dns 访问新节点上的新 Kibana 实例,但我的转发器似乎都存在连接问题。转发器上的 td-agent 日志显示:

2015-12-24 16:11:26 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2015-12-24 16:20:30 +0000 error_class="RuntimeError" error="no nodes are available" plugin_id="object:3fd1a993acf0"

"no nodes are available" 部分告诉我它无法连接到转发服务器。我给了它一些时间,但每次 td-agent 重试时都有相同的结果。我重新启动了 td-agent,一切正常。

我真的需要在每台正在转发的服务器上重新启动 td-agent 才能连接到新的聚合节点吗?我真的希望 td-agent 可以使用 DNS 来动态转移。

有什么办法吗?也许我需要一个负载均衡器来处理交换?

expire_dns_cache 参数可能有帮助。

http://docs.fluentd.org/articles/out_forward#expirednscache