Apache NiFiクラスターを動的に作成する

Apache NiFiは、さまざまなデータをリアルタイムで操作するための便利なプラットフォームであり、これらのプロセスを視覚的に構築できます。 この記事の目的は、Apache NiFiクラスターを作成する可能性を説明することです。



画像 図 1. GUI Apache NiFi。



機能:





詳細はこちら



Apache NiFiクラスターを構成する



Apache NiFiクラスターを起動するには、組み込みまたは外部のApache Zookeeperを使用できます。設定でconf / nifi.propertiesを設定できます。 ビルトインを使用します。

画像 図 2. Apache NiFiクラスター図



Apache NiFiクラスターをセットアップするには、クォーラムを提供するために少なくとも3つのノードが必要です。 通常、ZooKeeperを3つまたは5つのノードで実行することをお勧めします。 3ノード未満で動作すると、障害が発生するまでの寿命が短くなります。 通常、5つ以上のノードで実行すると、必要以上のネットワークトラフィックが発生します。 3つすべてのインスタンスについて、クラスターの一般的なプロパティはデフォルト設定のままにしておくことができます。 ただし、これらのパラメーターを変更する場合、将来のクラスターノードごとに同じにする必要があることに注意してください。



Apache NiFiクラスターの構成を最小化するには、将来のクラスターの各ノードで次の操作を実行する必要があります。



  1. nifi.propertiesに必要なパラメーターを設定します
  2. zookeeper.propertiesでクラスターサーバーを指定する
  3. ローカルノードでZookeeperのIDを設定します
  4. state-management.xmlでZookeeperクラスターへの接続文字列を指定します


各ステップについて詳しく説明します。

1. nifi.propertiesで設定します。

nifi.cluster.is.node=true

nifi.cluster.node.address=<local-ip>

nifi.cluster.node.protocol.port=3030

nifi.state.management.embedded.zookeeper.start=true

nifi.remote.input.host=<local-ip>

nifi.web.http.host=<local-ip>

nifi.zookeeper.connect.string=<connect-string>







zkがコンマで区切られたサーバーの接続文字列リスト。

例:nifi01:2181、nifi02:21818、nifi03:2181



2. zookeeper.propertiesでクラスターサーバーを登録します。

server.1=<nifi-node1-ip>:2888:3888

server.2=<nifi-node2-ip>:2888:3888

server.3=<nifi-node3-ip>:2888:3888

initLimit=5

syncLimit=2








3.ローカルノードがZookeeperクラスターの一部である場合、。/ state / zookeeper / myidファイルでidを設定します。

4. state-management.xmlファイルにクラスターへの接続文字列を登録します



各ノードでApache NiFiを起動するには、次のコマンドを実行します。



 bin/nifi.sh start
      
      





Apache NiFiが各ノードで起動される順序は関係ありません。 logs / nifi-app.logファイルを使用して、クラスターの起動プロセスを監視できます。



仮想環境でのローカルクラスターの起動



クラスターの操作を学習するには、仮想環境でApache NiFiクラスターをローカルで起動する機能が必要です。 Hashicorp VagrantとOracle VM VirtualBoxを使用して、仮想環境で実行しました。 vagrant-vbguestおよびvagrant-hostmanagerプラグインをインストールする必要があります。 起動プロセスを高速化し、促進するために、1つのコマンドで仮想環境でApache NiFiクラスターを起動できる特別な浮浪者プロビジョニングスクリプトが作成されました。



 vagrant up
      
      





開始後、5〜7分以内に、 localhostのブラウザーでユーザーインターフェイスが利用可能になります:8080 /。 VirtualBoxを開いて確認することもできます。nifi01、nifi02、nifi03を実行している3つの仮想マシンが表示されます。



NiFiクラスターを起動するためのvagrantプロビジョニングスクリプトのソースコードはgithubで入手できます。



動的クラスター形成



状況によっては、接続されたデバイスがネットワーク上のクラスターを見つけて接続する必要がある場合があります。 これらの目的のために、ネットワーク上のデバイスを検索する「エージェント」プログラムが作成され、クラスターが検出されると(Apache NiFi REST APIを介してチェックします)接続します。 このプログラムのソースコードはgithubで入手できます。



エージェントを開始する例:



 java -cp cluster-joiner-0.0.1-jar-with-dependencies.jar ru.itis.suc.NodeAgent /home/user/nifi/nifi-1.2.0 8085
      
      





引数は、Nifiへのパスと、エージェントが新しいクラスターを作成するときにリッスンするポートです。



開始後、クラスターはローカルネットワーク上で検索され、接続されます。 クラスターが見つからない場合、新しいクラスターの一部になる準備ができているデバイスがさらに2つあると、クラスターを作成しようとします。





図 3.クラスターで実行されているGUI Apache Nifi。





図 4.クラスターノードのリスト。



おわりに



この作業は、ローカルネットワーク上にApache NiFiクラスターを自動的に作成する可能性を実験および検証するために行われました。



もちろん、プリミティブアルゴリズムは検索と接続に使用されましたが、作業の目的はこの可能性を確認することだけでした。



All Articles