s_tajima:TechBlog

渋谷で働くインフラエンジニアのTechブログです。

Fluentd forwardを先の名前解決結果によって切り替える

やりたいこと

以下のような図で表されるような構成をとっている場合に、
aggregator A -> aggregator Bへのforward先切り替えを、名前解決によって行いたい。

f:id:s_tajima:20140219182131j:plain

検証

以下の様な設定でテスト

この設定をした上で名前解決されるIPを変更してみる。
結果は失敗。しばらく待ってみてもaggregator Aにforwardされ続けてしまう。

この辺りの実装を追うためにソースを確認。
処理を追っていくと怪しそうなのは以下のあたり

fluentd-0.10.39/lib/fluent/plugin/out_forward.rb

@expire_dns_cacheによってキャッシュの挙動がかわりそう。
肝心のexpire_dns_cacheの初期値は...

 config_param :expire_dns_cache, :time, :default => nil  # 0 means disable cache 

nil。# persistent cache になる模様。

forwardの設定に

expire_dns_cache 0

を追加したら無事名前解決の変更を反映してくれるようになった。