gangliaとbridge

注意:手元の環境で試した結果であり、すべての環境に当てはまるとは限りません


手元の試験環境を先日入れ替えた。
RHEL6.1がリリースされたが、CentOSは5.6がラストリリース。
プロジェクト周辺からはあまり順調ではない噂も聞こえてくるので、備えとしてScientific Linuxを触ってみることにしたのだ。


ハードウェアの各種検証を実施するには個人では負担が大きすぎるので、手元の試験環境は仮想化している。
以前はVMware ESXiを使っていたのだが、現在は学習をかねてKVMを使用している。



テスト環境を入れ替えるにあたって、テスト環境内の可視化と仕事の検証作業を兼ねてGangliaをインストールした。


構成は下記のようにした。

hostA(kvm,gmetad.gmond)
|bridge*(br0)
+ hostB[on hostA'kvm](gmond)



hostAを構築した段階では順調だったのだが、bridgeとhostBを追加したあたりから雲行きが怪しくなった。
具体的には、

  • HostAがgangliaグラフ上でdown、グラフが更新されない
  • HostBがgangliaに登場しない
  • HostA上でgmondが正常に動作しない

下記のように、起動でOKがでても実際は起動できていない。

[root@sl ~]# /etc/init.d/gmond status
gmond は停止していますがサブシステムがロックされています
[root@sl ~]# /etc/init.d/gmond restart
Shutting down GANGLIA gmond:                               [失敗]
Starting GANGLIA gmond:                                    [  OK  ]
[root@sl ~]# /etc/init.d/gmond status
gmond は停止していますがサブシステムがロックされています
[root@sl ~]#
[root@sl ~]# ps -ef |grep dmond
root      2188  2071  0 00:37 pts/0    00:00:00 grep dmond


調査の結果、bridgeを設定したことで、gmetad <->gmondで使用しているマルチキャスト通信ができない状態になっていることがわかった。

ブリッジなんだからそのまま通信してくれると思っていたが、甘かったようだ。
gangliaが使っているマルチキャストアドレスは239.2.11.71がデフォルトだ。
このアドレスを使えるようにしてやる。


経路情報を追加 239.2.11.71宛はbridgeIFに向ける(例ではbr0)

[root@sl ~]# route add -host 239.2.11.71 dev br0
[root@sl ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
239.2.11.71     0.0.0.0         255.255.255.255 UH        0 0          0 br0
192.168.171.0   0.0.0.0         255.255.255.0   U         0 0          0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0
[root@sl ~]# /etc/init.d/gmond status
gmond は停止しています
[root@sl ~]# /etc/init.d/gmond start
Starting GANGLIA gmond:                                    [  OK  ]
[root@sl ~]# /etc/init.d/gmond status
gmond (pid 2307) を実行中...
[root@sl ~]#


これで解決。グラフも正常に描画されるようになった。
route addでは再起動時に初期化されてしまうので、ファイルに記載したほうがよい。

私はこんな感じでやっている

[root@sl ~]# cat /etc/sysconfig/network-scripts/route-br0
239.2.11.71 dev br0


追記 2011/6/1
検証環境ではデフォルトゲートウェイを設定していなかった。
そのため上記のような問題が発生した可能性が高い。

デフォルトゲートウェイを指定せずに使うケースはかなり限られていると思うので、上記の手順はあまり意味がないかもしれない。
しかし、特定のインターフェースを使用してのマルチキャスト指定などの場合には有効であると考えられるので、このまま記録しておく。

以上。