PeerNest を使用した作業

BigFix クライアントには PeerNest という新機能が搭載されており、この機能を使用すると、同じサブネット内にあるクライアント間でバイナリー・ファイルを共有できます。この機能は、BigFix バージョン 9.5 パッチ 11 以降で使用可能です。

実用的なユース・ケースは、低速リンクを介してデータセンターに接続された支店です。以前の BigFix バージョンで提案された構成では、大きなペイロードをダウンロードしてキャッシュするには、支店でリレーをダウンロードする必要がありました。

PeerNest では、BigFix クライアントはダウンロードしたバイナリーを共有できるため、リレーがローカルにインストールされていない場合でも、支店から送信される通信の数が削減されます。このようにして、リレー上で複数のクライアントが単一クライアントのダウンロード負荷を生成します。1 つのクライアントのみがリレーからダウンロードし、ダウンロードをピアと共有できるためです。

注: BigFix 10.0.7 までは 、異なる BigFix デプロイメントに属するクライアントもホスティングするサブネット上にある BigFix クライアントで有効になっている場合、PeerNest 機能は機能しません。BigFix 10.0.7 以降、異なるデプロイメントに属するクライアントからのピア要求は無視されるため、この制限は適用されなくなります。

PeerNest を使用すると、一部の複雑な BigFix デプロイメント・シナリオでリレーの数を削減できるため、インフラストラクチャー・コストを削減できます。

概要ビデオは、次のリンクから確認できます: https://www.youtube.com/watch?v=tXRX3zlw1aQ

PeerNest の有効化

PeerNest 機能を有効にするには、クライアントで次の構成設定を 1 に設定します。

_BESClient_PeerNest_Enabled = 1

クライアントは、バイナリーのダウンロードをローカルに最適化するために、すべての PeerNest 機能を有効にします。

この構成設定を有効にするには、クライアントを再起動する必要があります。

注: アクションの実行に必要なバイナリーのダウンロードを最適化するために BigFix を必要とする場合、ファイルのハッシュがプリフェッチ・ステートメント内で指定されていることを確認します。

PeerNest の構成設定

利用可能なすべての設定について詳しくは、『ピアツーピア・モード』を参照してください。

PeerNest の詳細

複数のクライアントがバイナリー・ファイルのプリフェッチを必要とするアクションを実行する場合、クライアントはファイルがサブネット内で既にキャッシュされているかどうかピアに確認します。バイナリーがキャッシュされていない場合、次にクライアントはリレーからのダウンロードを担当するクライアントを 1 つ選択できます (図 1)。ファイルを必要とするピアの中で、優先順位が最も高いピアがダウンロードを管理します。すべてのピアが同じ優先順位を持つ場合、ID が最も若いコンピューターがリレーからファイルをダウンロードします。これにより、特定のアクションに対して、すべてのファイルが同じコンピューターによってリレーからダウンロードされる可能性が高いため、ダウンロードが直列化されます (一度に 1 つのファイルが対象)。したがって、リレーとコンピューターの間のリンクで最小帯域幅の占有率が確保されます。

以下の図は、マスター選択プロセスの詳細を示しています。
  • A がマスターとして選択されます。これは、ファイルを必要とするピア (ABE) の中で最も優先順位が高いためです。
  • C および D はファイルを必要としないため、D の優先順位が A より高くても、D はマスター選択プロセスに関与しません。

図 1: マスター選択

選択したマスター (A) がリレーからのファイルのダウンロードを開始するとすぐに (図 2)、ダウンロードが進行中であることを他のピアに通知するため、追加のアクションを実行せずに待機します。マスターは、ダウンロードに関する定期的な通知を送信します。

図 2: ダウンロード進行中

ピアがダウンロード進行中のメッセージを受け取らなかった場合 (ダウンロードの失敗、クライアントのダウン、ネットワークの問題)、新しい選択プロセスが開始され、別のピアがマスターになります。

選択したマスターは、ダウンロードを終了すると、ファイルを PeerNest キャッシュに移動し、その可用性について他のピアに通知します。ファイルに興味を持つピアは、同じメカニズムを使用してマスターからダウンロードを開始し、共有します (図 3)。このようにして、リレー上で複数のクライアントが単一クライアントのダウンロード負荷を生成します。1 つのクライアントのみがリレーからダウンロードし、ダウンロードをピアと共有できるためです。

以下の図は、ファイル (BE) に関心のあるピアが、リレーからダウンロードするのではなく、ピア A から直接ダウンロードを開始する方法を示しています。ダウンロードが完了すると、ファイルはキャッシュされ、今後のために使用できるようになります。したがって、クライアント ABE は、ダウンロードしたファイルを C および D と共有します。

図 3: ファイルの共有

ピアが有効になっているクライアントは、ポート 52311 でピア転送をリスンする HTTP サーバーを開始します。各クライアントは、_BESClient_PeerNest_MaxActiveFileDownloads の他のピアの最大数を同時に使用できます (デフォルト値は 5)。

クライアントの優先順位は、同じファイルを共有できるピアが 2 つ以上ある場合にも機能します。ファイルをダウンロードするクライアントは、ファイルを提供するピアのメモリー・リストを作成します。優先順位に基づいて、重み付けされた確率でランダムにピアをピックアップします。例えば、メモリー・リストが優先度 W の C1 と優先度 2W の C2 の 2 つのピアで構成されている場合、C2 のピッキングは C1 の 2 倍の可能性があります。この場合、従来の retry-behavior が適用されます。_BESClient_Download_RetryMinutes_BESClient_Download_RetryLimit のクライアントの設定によってルール化されており、以下の点が追加されます。
  1. ダウンロード試行の失敗が発生したピアは、メモリー・ピア・リストから削除されるため (そのピアがメモリー内の唯一のピアでない限り)、次の試行は別のピアで行われます。
  2. retry-count が制限に達すると、クライアントはリレーから直接ファイルをダウンロードします。

クライアントが接続しようとしたピアが既にダウンロードを 5 回提供しているためにファイルのダウンロードに失敗した場合 (デフォルトの事例)、再試行カウントは増加せず、ピアはメモリー・ピア・リストから削除されません。

PeerCache サイズより大きいファイルの PeerNest 動作

バージョン 10 パッチ 2 以降、新機能により、大きなファイルのプリフェッチを必要とするアクションの時間最適化が可能になりました。この機能により、ダウンロード用に選択されたピアが、単に優先順位が高いファイルではなく、実際にファイルを保管できるピアであることが保証されます。

実際には、バージョン 10.0.2 より前の PeerNest 構成で BigFix クライアントがバイナリー・ファイルのプリフェッチを必要とするアクションを実行している場合、ファイルがサブネットに既にキャッシュされているかどうかを確認します。バイナリー・ファイルがまだキャッシュされていない場合、BigFix クライアントは BigFix リレーからのダウンロードを担当するクライアントを 1 つ選択し、ピアと共有できます。通常、選択されたピアは、割り当てられた優先順位が最も高いピアです。選択されたピアにペイロードを保管するための十分なキャッシュがない場合、配布は失敗し、他のすべてのピアは不必要に待機を行います。

バージョン 10 パッチ 2 以降では、_BESClient_PeerNest_UseNoSpaceDownload 設定を使用して PeerNest を構成して、ペイロード・サイズよりも高いキャッシュ制限を持つピアのみをダウンロード対象として選択できます。同じオプションを使用すると、高優先度のピアが強制的に有効になりますが、パッシブ・モードではキャッシュ制限が十分ではありません。このようにして、ピアが無駄な待機を行ってファイルが順次ダウンロードされることを回避できます。このオプションを使用すると、最終的に失敗する可能性のある他のピアを待たずに、BigFix リレーから直接ファイルをダウンロードする機能もピアに提供されます。

サブネットのリストの除外

バージョン 10 パッチ 4 以降、新機能により、特定のサブネットに接続されている BigFix クライアン トの PeerNest メカニズムを無効にできます。

PeerNest メカニズムを利用するデバイスでは、UDP 通信プロトコルを用いてメッセージの送受信を行います。同じサブネット上に多数のデバイスが接続されている場合、それらのデバイスはネットワーク・トラフィックを共有します。これにより、ネットワーク・リソースが過剰に消費される可能性があります。特定のニーズに応じて、一部の特定のネットワーク・サブネット上の UDP トラフィックを制限できます。例えば、VPN インフラストラクチャーで BigFix クライアントを実行している場合などです。

バージョン 10 パッチ 4 以降、サブネットのリストを含む _BESClient_PeerNest_ExcludedSubnetList 設定を使用して (例: 192.1.77.0/25;192.1.77.129/25)、リストに指定されたサブネットのいずれかに属するクライアントを PeerNest メカニズムから除外できます。PeerNest が有効になっているクライアント (_BESClient_PeerNest_Enabled = 1) が BigFix リレーに登録されている場合、新機能はクライアントのサブネットを識別し、そのサブネットがこのリストに属しているかどうかを確認します。属している場合、PeerNest メカニズムはクライアントに対して無効になります。

さらに、クライアントサブネットを変更する必要がある際 (例: VPN に接続する際)、新しいサブネットが既に除外サブネット・リストに含まれている場合は、次の図に示すように P2P メカニズムが自動的に無効になります。

新しい設定の値を追加/変更/削除するには、BigFix クライアントを再起動する必要があります。

ベスト・プラクティス

リレーへのより適切なリンクとサブネットの他のピア (そして、場合によっては安定した電源) にサービスを提供するのに十分なリソースを持つコンピューターに、より高い優先順位を割り当てることをお勧めします。

PeerNest では、ファイルをキャッシュするためにディスク・ストレージ・スペースを増やす必要があります。デフォルトの PeerNest キャッシュ・サイズは 2GB で、多くのシナリオで十分な量です。キャッシュに収まるように大きなファイルを転送する場合 (パッチ管理、ソフトウェア配布など) は、サイズを増やす必要があります。PeerNest キャッシュは一時ストレージを目的としているため、以下のパラメーターを使用して使用量と有効期間を微調整できます。_BESClient_PeerNest_DownloadsCacheLimitMB_BESClient_PeerNest_MinimumDiskFreeMB_BESClient_PeerNest_MinimumCacheDays_BESClient_PeerNest_MaximumCacheDays

PeerNest では、BigFix クライアント同士が通信できるようにする処置として、UDP 通信 (ポート 52311) を有効にする必要があります。

また、BigFix クライアントがピアからファイルをダウンロードできるようにする TCP (ポート 52311) と、マルチキャストをサポートするサブネットも必要です。

このポートを開けないクライアントや、キャッシュのために追加のディスク領域を使用したくないクライアントでは、PeerNest をパッシブ・モードで (_BESClient_PeerNest_IsPassive 構成設定を使用して) 設定することが推奨されます。パッシブ・クライアントは他のピアからのみダウンロードしますが、コンテンツは共有しません。次の図は、構成の例を示しています。

帯域幅スロットリング

ピアが有効になっているクライアントは、HTTP サーバーを起動します。他のピアはダウンロードのために接続できます。

他のピアにファイルを提供する各クライアントは、その目的のために割り当てられる帯域幅の量を制御できます。この _BESClient_HTTPServer_ThrottleKBPS 設定は、クライアントが 1 秒あたりに結合されたすべてのピアに与える合計キロバイト数を定義します (0 は制限なしを意味します)。値が 1000 KB/秒で、10 のピアが同時にダウンロードしている場合、クライアントは各ピアに 100 KB/秒でデータを送信します (合計 1000 KB/秒)。

トラブルシューティング・シナリオ 1

インターネット・プロトコル・バージョン 6 (IPv6) が無効または構成されていないオペレーティング・システムでホストされる BigFix クライアント:

PeerNest 機能を使用する場合は、以下を行う必要があります。

  1. これらのクライアントで、_BESClient_Comm_IPCommunicationsMode 構成設定を次のように設定します。
    _BESClient_Comm_IPCommunicationsMode = OnlyIpv4
  2. 変更内容を有効にするために、クライアントを再起動します。

トラブルシューティング・シナリオ 2

_BESClient_Comm_CommandPollEnable および _BESClient_Comm_CommandPollIntervalSeconds 構成設定を使用して、アクティブなポーリングが設定されている BigFix クライアント:

PeerNest 機能を使用する場合、これらのクライアントを「パッシブ」PeerNest エージェントになるように構成しないでください。これらのクライアントで _BESClient_PeerNest_IsPassive 構成設定を有効にしないでください。有効にすると、ポーリングのタイミングによっては、サブネット内の複数のクライアントが同じバイナリーを共有せずにダウンロードできてしまいます。