web-dev-qa-db-ja.com

マルチキャストなしの神経節

マルチキャストがないネットワークでGanglia3.1.2を実行しています(また、オンにすることもできません)。神経節を正しく機能させるためのエレガントな解決策を持っている人はいますか?私はこれを見つけました:

http://code.google.com/p/ganglia-multicast-hack/

しかし、それはあまりうまくスケーリングしません。

現在、gmetad.confファイルのネットワーク上のホストごとに個別のdata_source行がありますが、それも適切にスケーリングされず、rrdsを上書きし続けるため、正確な要約統計量を取得できません(ただし、ホスト統計量は正常に動作します)。

どんなポインタでも大歓迎です(または私がすでに最良の解決策を見つけたことの確認)。

ありがとう!

5
jedberg

さらに調査した結果、答えが見つかりました。クライアントで、gmond.confに以下を追加しました。

udp_send_channel {
  Host = monitoring-Host
  port = 8666
  ttl = 1
}

udp_send_channel {
  Host = monitoring-Host-backup
  port = 8666
  ttl = 1
}

これにより、ユニキャストUDPを介してデータが監視ホストとバックアップに1秒ごとに送信されます。

次に、監視ホストで、これを追加しました。

udp_recv_channel {
  port = 8666
}

重要なのは、デフォルトで存在するマルチキャストエントリを削除することです。

5
jedberg

これは機能しますが、問題は、すべてのノードが同じデフォルトのデータソースに含まれるため、クラスター情報が失われることです。これは、マルチクラスター環境にはあまり適していません。

私はまだ試していませんが、これに対する可能な回避策は、クラスターごとにUDPチャネルを作成することです。これは、クラスターが多数ある場合はそれほど便利ではありません。

後で編集:

私の現在のセットアップでは、ネットワークの制限のためにクラスターレベルでユニキャストを使用しており、すべてのデータが各クラスターからノードに送信されています。次に、metadを使用している各ユーザーに連絡して、そのクラスターに関するすべてのデータを取得します。

このようにして、クラスターは独自のデータソースに割り当てられ、完全な情報がそこにあります。

構成は次のようになります。

# on each node in the cluster
udp_send_channel {
  Host = 1.2.3.4 # this is a member of the cluster, not a metad server
  port = 8650
}

次に、メタッドについて:

data_source "My Cluster" 1.2.3.4

冗長性を確保するために、data_sourceに複数のudp_send_channelエントリと複数のIPをリストすることができます。私は個人的に各クラスターに2つ使用しています。

フェデレーションには、次のようなものを使用します。

data_source "My Grid" 1.2.3.5:8651

これは、ポート8651でリッスンしているメタドがある場合にのみ有効です。

ネットワークでのマルチキャストの使用を妨げるAmazonEC2クラウドでGangliaを構成しているときに、マルチキャストモードで同じ問題に直面していました。考えられる解決策は、幸いにも機能するユニキャストモードに切り替えることです。

非常に簡潔にするために、マルチキャストモードを取り除くための簡単な手順を以下に示します。

  1. ノードの1つをgmond(gangliaデータコレクター)デーモンを実行するマスターにします。

例:gmondデーモンを実行しているノードが10個あります。 10から任意のノードを選択し、10ノードからすべてのデータを取得するマスターをそれ自体のスレーブにする必要があります。

# Define the cluster.
cluster {
  name = "Yellow"
  owner = "Your Company"
  latlong = "N34.02 W118.45"
  url = "http://yourcompany.com/"
}

# Disable multicast and define the Host, the yellow master, where nodes in the cluster send data.

udp_send_channel {
  # mcast_join = 239.2.11.71  (No need to join as mcast is not being used)
  Host = master.among10node.com  (put the IP/Hostname of server from any 10 nodes to ack as                  master)
  port = 8649
  ttl = 1
}

udp_recv_channel {
  # mcast_join = 239.2.11.71   (Disabled mcast as it is not being used)
  port = 8649
  # bind = 239.2.11.71  (No need to bind as mcast is not being used)
} 

注:gmondデーモンを実行している10ノードすべてに同じ構成をコピーします。最初にマスターを再起動し、次に他のすべてを再起動します。それが機能し、マスターNodeが他のノードからのすべてのデータを取得することを願っています。

次に、マスターNodeをプライマリデータソースとして使用するように、Gangliaデータコンソリデーター(gmetad)デーモンを構成します。

例:

data_source "Yellow" master.among10node.com 

# default port is 8649, define here if you are using non default

ここで、gmetadデーモンを再起動し、魔法を始めましょう。

乾杯モハドモザミルカーン

2

参照:

https://github.com/ganglia/monitor-core/tree/feature/cloud

今日インストールして、マルチキャストを許可しないEC2で動作させました。

0
dmourati