ArcGIS GeoEvent Server は、Apache Kafka を利用して、入力からジオイベント サービスまで、およびジオイベント サービスから出力までの、すべてのイベントのトラフィックを管理します。Kafka は、公開されるイベント用の Topic (メッセージ キュー) およびそれらのイベント メッセージを受信する Consumer 用のトピックのセットを提供します。Kafka Topic キューは、永続的格納のため、およびシステム障害の発生時のメッセージ キューの回復のために、ディスク上で管理されます。
GeoEvent Server の Kafka Topic の基礎
GeoEvent Server の入力および出力は、それぞれ独自の Kafka Topic を持っています。
各 Kafka Topic は、複数のパーティションに分割されます。各パーティションは、並列処理のために、イベントを 3 つに分かれたメッセージ キューに分類します。各 Kafka Topic は、デフォルトで 3 つの Topic のパーティションを作成するように構成されます。Topic の Subscriber は、パフォーマンスを改善するために並列に実行される複数のイベントの Consumer を起動します。
Kafka が Consumer offset Topic 用のパーティションの大きいセットを作成して管理することに、注意してください。この多数のパーティションは、並列処理によってシステムのパフォーマンスを改善します。
一般的なディスク サイズの推奨
GeoEvent Server の新規インストールの場合、ArcGIS GeoEvent Gateway サービスは、1 GB 以上のディスク容量を必要とします。追加する各入力および出力は、イベントを処理する前に、360 MB 以上の追加のディスク容量を必要とします。なお、これらすべてのサイズは最小の推定値であり、GeoEvent Server でさらに多くの要素を構成するにつれて、増える可能性があります。
GeoEvent Server の Kafka の設定
Kafka プロパティ ファイルを編集することによって、GeoEvent Server の Kafka インスタンスの動作を変更できます。このプロパティ ファイルを変更する主な理由は、ディスク上のファイルの場所を変更するためです。ただし、まれに、他のプロパティの更新が必要になる場合があります。
Kafka プロパティ ファイル
GeoEvent Server の Kafka 設定を含んでいるプロパティ ファイル (kafka.properties) は、使用しているオペレーティング システムに応じて、次のディレクトリのいずれかにあります。
- Windows (デフォルト) - C:\Program Files\ArcGIS\server\geoevent\gateway\etc\kafka.properties
- Linux (デフォルト) - /home/arcgis/server/GeoEvent/gateway/etc/kafka.properties
このファイルのデフォルト設定は、ディスク使用量の増加を代償にしてパフォーマンスを最適化するように設定されます。
トピックの格納
GeoEvent Server の Kafka トピックは、使用しているオペレーティング システムに応じて、次のディレクトリのいずれかに格納されます。
- Windows (デフォルト) - C:\ProgramData\ESRI\GeoEvent-Gateway\kafka\logs\
- Linux (デフォルト) - /home/arcgis/.esri/GeoEvent-Gateway/config.[machine name]/kafka/logs (たとえば、/home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01/kafka/logs)
Kafka Topic の保存場所を変更するには、使用しているオペレーティング システムに応じて、次のプロパティを更新します。
Windows のデフォルト プロパティ:
- gateway.data.dir=C://ProgramData//Esri//GeoEvent-Gateway//
- log.dirs=kafka/logs
Linux のデフォルト プロパティ:
- gateway.data.dir=/home/arcgis/.esri/GeoEvent-Gateway/config.[machine name] (たとえば、/home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01)
- log.dirs=kafka/logs
Topic パーティション
GeoEvent Server では、Topic パーティションのデフォルトの数は 3 です。そのため、トピックが格納されているフォルダーを調べる場合、同じ名前の末尾にインデックス (-1、-2、および -3) の付いた 3 つのフォルダーがあります。各パーティションフォルダ内では、Kafka がその時点での Topic パーティション内のすべてのデータのログを保持します。Topic パーティション数を変更するには、次のプロパティを変更します。
- num.partitions=3
Topic パーティションのファイル サイズ
デフォルトでは、各 Kafka Topic パーティションのログは、ディスク上で 20 MB の最小サイズから開始して、100 MB の最大サイズまで増加し、その後、新しいログ ファイルが作成されます。どの時点でも、パーティション内に複数のログ ファイルが存在することができます。高速なイベント ストリームの極端なケースでは、各トピックのパーティション フォルダーが、最大ログ ファイル サイズの 3 ~ 4 倍 (300 MB ~ 400 MB) に増えることがあります。3 つのパーティションを含む単一のトピックの場合、合計ディスク容量は、ある時点で 900 MB ~ 1200 MB に増える可能性があります。この最大サイズに、構成した入力および出力の数を掛けた値が、GeoEvent Server で Kafka に利用可能である必要があるディスク上のサイズになります。以下のプロパティは、新しいファイルに切り替わる前のログ ファイルの最大サイズ (デフォルトは 100 MB) を制御します。
- log.segment.bytes=104857600
高速のデータが存在する場合、最終的に複数の 100 MB のログ ファイルが存在する可能性があり、そうでない場合は、1 つのログ ファイルのみが存在することがあります。低速のイベント データの場合、このプロパティをさらに小さいサイズに設定できます。高速のイベント データの場合、このプロパティをさらに大きいサイズに設定する必要があります。小さすぎるサイズに設定した場合、Kafka が頻繁にファイルを切り替えます。大きすぎるサイズに設定した場合、Kafka がログ ファイルを新しいファイルにめったに切り替えなくなり、古いイベントが不必要に長くキュー内に保持されるようになります。
Kafka Topic パーティションによって消費されるディスク容量に影響を与える別の設定は、保持バイトです。このプロパティは、最小量のデータを常に保持するように Kafka に指示します。デフォルトでは、このプロパティの値は 100 MB です。そのため、Kafka が古いデータを削除することができ、削除するべきであると決定した場合でも、残るデータのサイズは 100 MB を下回りません。上の segment bytes プロパティと同様に、低速のデータを操作する場合、このプロパティの値を小さくすることができます。高速のデータを操作する場合は、デフォルトの 100 MB を使用する必要があります。
- log.retention.bytes=104857600
Topic パーティションのファイル管理
Subscriber がパーティション キューからイベントを消費する際に、イベントは、すべての Subscriber によって消費されたとしてマーク付けされたときに、古くなります。Kafka が古いメッセージを保持する時間および Kafka が古いメッセージを消去する頻度は、次のプロパティを使用して設定できます。
- log.retention.hours=1
- log.retention.check.interval.ms=30000
デフォルトの保持ポリシーは 1 時間です。1 時間より古い、現在アクティブなデータを格納していないすべてのデータ ファイルは、削除されます。ファイルが、データを格納するためにまだアクティブに使用されている場合 (少量/低速のデータの場合など)、そのファイルは削除されません。Kafka は、デフォルトでは 30 秒おきに古いデータ ファイルをチェックして削除します。
Topic パーティションのファイル管理に関するオプション プロパティ
以下のプロパティを Kafka プロパティ ファイルに追加して、パーティション ファイルが切り替えられる頻度を増やすことができます。これによって、ディスク使用量を改善することができますが、高く設定しすぎると、パフォーマンスに影響を与えることがあります。
- log.roll.ms=1800000
- log.roll.jitter.ms=180000
1 番目のプロパティは、30 分ごとにデータ ファイルを切り替え、基本的に、新しいデータ ファイルに置き換えるように、Kafka に指示します。この設定を追加した場合、Kafka は、古いデータ ファイルのサイズにかかわらず、新しいデータ ファイルを 30 分ごとに作成します。低速のデータ ストリームでは、この設定によって、データ ファイルがめったに満杯にならない場合に、古いデータを維持する必要性をなくすことができます。2 番目のプロパティは、データ ファイルの切り替えに関して Kafka がどの程度持続的であるかを決定します。推奨値は 3 分です。この値は、データ ファイルを切り替える必要があるかどうかを Kafka が 3 分ごとにチェックするということを意味します。