web-dev-qa-db-ja.com

パブリッククラウドでサーバーを検出する最良の方法は?

同じイメージの他のサーバーがいつオンラインになるかを検出するパブリッククラウドで実行するubuntuサーバーイメージを作成したいと思います。私はこの解決策のリストを思いついたが、何が最善かわからない?

可能な解決策:

  • CDPによく似たLinkLayer Discovery Protocol(LLDP)を使用したレイヤー2マルチキャスト
  • リンクローカルアドレスを自分自身に割り当ててから、ブロードキャストを送信します
  • Avahi(AppleのBonjourによく似たLinux上のzeroconf実装)
  • DHCPサーバーを使用するサーバーを追跡する

より可能な解決策:(サーバーはすでにIPアドレスを持っている必要があります)

  • SNMPブロードキャスト/マルチキャスト
  • SSDPマルチキャストメッセージ(Simple Service Discovery Protocol)(UPnPで使用)
  • よくわかりませんが、m(ulticast)DNSまたはDNS-SD(サービスディスカバリ)かもしれません

ノードを検出する方法は他にありますか?大規模なクラウドクラスターで一般的に行われていることは何ですか?

1
dan

パブリッククラウドプロバイダーは通常、ブロードキャスト/マルチキャスト方式をサポートしていないため、これらに依存するソリューションは「最良」ではありません。少なくとも、プラットフォームの独立性の重要な要素を含む「最良」の値については。

ユニキャストランドでは、さまざまなオプションがあり、それらの画像で何をしたいのか、実際にどのサービスが検出を行っているのかによって大きく異なります。

完全に単一のクラウドインフラストラクチャプロバイダー内にいる場合、一般的な方法はインフラストラクチャに何があるかを尋ねるです。 IPアドレスを含むサーバーのリストが表示され、動的クラスターの構築に使用できます。

何らかの理由でそれができない場合、おそらく複数のプロバイダーを使用している場合、または既知の稼働中のホストのリストが必要な場合は、動的クラスターを構築するためのある種のアプリケーション固有の方法に進む必要があります。このための方法はさまざまですが、私は見ました:

  • ノードがオンラインになったときにチェックするためのヒントをいくつか提供します。アプリケーションはチェックインのリストを維持し、ハートビートを実行して、ライブノードのみがリストに含まれるようにします。ビットトレントシーダーのように考えてください。
  • 実際のサービス登録サービスを使用したサービス登録。そのうちのいくつかをリストしました。
  • Redisから石畳にされたものなど、自作の登録サービスを使用したサービス登録。

あなたにとって何が最善かは、あなたが何をしているかによって異なります。ただし、最初にAPIルックアップを実行し、それらが機能しない場合にのみ空想を得てください。

6
sysadmin1138

私が理解しているように、これを行う適切な方法は、クラウドプロバイダーが提供するAPIを使用することです。ホストからこれを行おうとするのは、少し「石の斧」の領域です。あなたが支払っている素敵な宇宙時代のインフラストラクチャを使用してください。

3
mfinni