Subscribed unsubscribe Subscribe Subscribe

Re: keepalived.confのシンタックスチェックツール「keepalived-check」「haskell-keepalived 」が凄い!

こんなのが出てビルドできませんでした。。。><

http://d.hatena.ne.jp/hirose31/20090929/1254154720

絶賛放置中ですみません。ビルドは大変なのでx86用のバイナリをgzipしたものを置いておきます。kc.gz 直

./kc verify /path/to/keepalived.conf # シンタックスがあっていればOKと出力
./kc dump /path/to/keepalived.conf # parseした結果をdumpする

みたいに使えます。

環境は

な感じなら、動くかもしれません。

ビルドする場合は詳しく検証していませんが、

  • ghc 6.10.4
  • QuickCheck 2
  • parsec 3
  • FileManip
  • uniplate

あたりが入ってないとダメそうです。そのうち、ドキュメントを更新します。

haskell-keepalivedの簡単な紹介

せっかくなのでちょっと紹介をしておきます。

はてなではLVSの設定やVRRPのためにkeepalivedを活用しています。LVSの性能がよいこともあって、一組のLVSでかなり多くのリアルサーバをバランスさせています。(集中が進みすぎると障害が起きたときに怖いので、最近は分割が進んでいます。)一番大きいkeepalived.confをkc dumpすると、実に2000行を超えます。ただしこれはincludeディレクティブを使っているので、実際にはもう少し少ない行数になります。

こうなってくるとシンタックスチェッカの存在はかなり重要になってきます。hirose31さんも言及しているとおり、keepalivedのパーザはなかなか厄介で、シンタックスエラーを適切に扱ってくれません。先日もうろ覚えでvrrp_sync_groupを書いたところ、盛大に間違っていたというのに、keepalivedは何も言わずにスルーしてしまいました。あほかと。

そんなこんなで、haskell-keepalived

  • include対応(必須)
  • 長大な設定でもイラっとしない程度に速い(なるはや的な)
    • 2200行でも1秒以下
  • エラー箇所をファイル名と行数・桁数までやさしく表示(NGといわれても困る)

という風に作ってあります。

技術的にはまだそれほど面白いところがないのですが、日常業務に飽きたときにちょぼちょぼ作っているので、そのうち詳しく書こうかと思います。