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
検証環境ではデフォルトゲートウェイを設定していなかった。
そのため上記のような問題が発生した可能性が高い。
デフォルトゲートウェイを指定せずに使うケースはかなり限られていると思うので、上記の手順はあまり意味がないかもしれない。
しかし、特定のインターフェースを使用してのマルチキャスト指定などの場合には有効であると考えられるので、このまま記録しておく。
以上。