Gangliaのカスケード接続を行ってみた
筆者の環境では、ルーター, F/W のパフォーマンス管理のために、Gangliaを使用しているのだが、DMZ側から直接管理PCに通信させたくなかったため、参考リンクの構成に従って、Gangliaをカスケード接続してみた。この構成だと管理PCからDMZ側に能動的に取りにいく方式になるため、DMZ側から内部に向けてF/Wを開放する必要がなくなる。<<参考リンク>>
http://www.ibm.com/developerworks/wikis/display/WikiPtype/ganglia
カスケード接続を行うためには、DMZ側にgmetadを置くノードが1台必要になる。
まず、F/Wを閉じることになるので、DMZ内のクライアントは全てDMZ内のgmetadサーバーにデータを送るように構成する。また、ネットワークごとにclusterを分割するため、clusterに適切な値を記入する。このため、DMZ側のクライアントの設定は次のようになる。
udp_send_channel { host = fedora-virt6.jp.example.org <== DMZ内のgmetadサーバーを記入 port = 8649 } cluster { name = "vlan251" <== cluster名を記入 owner = "unspecified" latlong = "unspecified" url = "unspecified" }
DMZ内のgmetadサーバーでは上記と同じcluster, udp_send_channelに加えて、UDP8649, TCP8649をListenするための設定を追加する。(各設定は、それぞれgmetadサーバー自身のデータ取得のため、DMZクライアント(と自分)からのデータを受けとるため、管理PC(gmetad)に取得した情報を提供するため、、となる。)
udp_recv_channel { bind = 192.168.251.136 <==gmetadのIPにデータを送付 port = 8649 } tcp_accept_channel { bind = 127.0.0.1 port = 8649 } tcp_accept_channel { bind = 192.168.251.136 <== gmetadのIPをListen port = 8649 }
更に、gmetad.confで、対象のクラスタ向けのdata_sourceを追加する。(この設定を忘れると、DMZ gmetad の/var/lib/ganglia 以下にデータが置かれず、設定のデバッグに苦労する。。 orz)
data_source "vlan251" localhost
設定が終わったら、gmond, gmetadを再起動する。ここまでの設定で、DMZ側のgmetadサーバーの /var/lib/ganglia/rrds に該当クラスタのデータが来ているはずである。。(ただし、あらかじめ逆引きができるようにしておかないと、上手くホスト名が表示されない。。 orz)
$ ls /var/lib/ganglia/rrds/ __SummaryInfo__ vlan251 $ ls /var/lib/ganglia/rrds/vlan251/ 192.168.251.136 fedora-virt4.jp.example.org 3fff:ffff::192:168:251:136 fedora-virt6.jp.example.org __SummaryInfo__ localhost
ここまででキャパシティ情報の収集は終わりなのだが、更に内部セグメント内のganglia-webでこちらのクラスタを表示させるには、内部セグメントのgmetadサーバーで、gmetad.confにdata_sourceとして上記のノードを記述する。
data_source "vlan11" localhost <== 内部セグメント用クラスタ data_source "vlan251" fedora-virt6.jp.example.org <== DMZ用クラスタ
上手くいくと、http://localhost/ganglia に、vlan11, vlan251 が分割されて表示されるはずである。(上手くいかない場合には、gmetad, gmondを何回か再起動してみると上手くいくかも。。 orz どうもgmond, gmetadに微妙な再起動順序があるらしく、どの時に上手くいくのかよくわからなかった。。 )
通信要件としては、次のようになっている。DMZ=>内部の通信が発生しないので、F/Wの管理はしやすい。
DMZ一般サーバー=>DMZ gmetadサーバー: UDP 8649 内部 gmetadサーバー=> DMZ gmetadサーバー: TCP 8649
Gangliaはかなり使いやすいツールなのだが、F/Wの要件で導入しにくいことがある。カスケードを行うことで、内向き通信は排除できるので、F/Wの管理が厳しい環境では、こちらの構成を使ってみるとよさそうだ。。