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 Topic パーティションは 2 回複製されます。 ディスク上の 3 つの異なるフォルダーにレプリカが分散されます。
Kafka が Consumer offset Topic 用のパーティションの大きいセットを作成して管理することにも注意してください。 この多数のパーティションは、並列処理によってシステムのパフォーマンスを改善します。
一般的なディスク サイズの推奨
GeoEvent Server の新規インストールの場合、ArcGIS GeoEvent Gateway サービスは、1 GB 以上のディスク容量を必要とします。 追加する各入力および出力は、イベントを処理する前に、720 MB 以上の追加のディスク容量を必要とします。 なお、これらすべてのサイズは最小の推定値であり、GeoEvent Server でさらに多くの要素を構成するにつれて、増える可能性があります。
GeoEvent Server Kafka の設定
Kafka プロパティ ファイルを編集することによって、GeoEvent Server の Kafka インスタンスの動作を変更できます。 このプロパティ ファイルを変更する主な理由は、ディスク上のファイルの場所を変更するためです。 ただし、まれに、他のプロパティの更新が必要になる場合があります。
注意:
以下のプロパティ ファイルを編集する前に、お使いのオペレーティング システムに応じて、GeoEvent Server Windows サービスまたは Linux デーモンを停止する必要があります。 ファイルを保存して閉じた後、GeoEvent Server サービスを開始すると、更新されたプロパティが使用されます。
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 Topic は、使用しているオペレーティング システムに応じて、次のディレクトリのいずれかに格納されます。
- Windows (デフォルト) - C:\ProgramData\ESRI\GeoEvent-Gateway\kafka\
- Linux (デフォルト) - /home/arcgis/.esri/GeoEvent-Gateway/config.[machine name]/kafka/ (例: /home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01/kafka/)
kafka\ フォルダーに log\、log1\、log2\ の 3 つのログ フォルダーが作成され、パーティション レプリカが保存されます。
Kafka Topic の保存場所を変更するには、使用しているオペレーティング システムに応じて、次のプロパティを更新します。
- Windows のデフォルト プロパティ:
- gateway.data.dir=C://ProgramData//Esri//GeoEvent-Gateway//
- log.dirs=kafka/logs,kafka/logs1,kafka/logs2
Linux のデフォルト プロパティ:
- gateway.data.dir=/home/arcgis/.esri/GeoEvent-Gateway/config.[machine name] (例: /home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01)
- log.dirs=kafka/logs,kafka/logs1,kafka/logs2
Topic パーティション
GeoEvent Server では、Topic パーティションのデフォルトの数は 3 です。 Topic が格納されているログ フォルダーを調べる場合、同じ名前の末尾にインデックス (-1、-2、および -3) の付いた 3 つのフォルダーがあります。 各パーティション フォルダー内では、Kafka がその時点での Topic パーティション内のすべてのデータのログを保持します。 Topic パーティション数を変更するには、次のプロパティを変更します。
num.partitions=3Topic のレプリケーション
GeoEvent Server では、Topic パーティション レプリカのデフォルトの数は 2 です。 Topic が格納されている各ログ フォルダーを調べる場合、同じ名前の末尾にインデックス (-1、-2、または -3) の付いた 2 つのフォルダーがあります。 log\、log1\、log2\ の各フォルダーには、2 つのパーティション フォルダーの 1 つのレプリカが保存されます (各フォルダーに保存される 2 つのパーティションはランダム)。 Topic パーティション レプリカの数を変更するには、次のプロパティを変更します。
replication-factor=2Topic パーティションのファイル サイズ
デフォルトでは、各 Kafka Topic パーティションのログ ファイルは、ディスク上で 20 MB の最小サイズから開始して、100 MB の最大サイズまで増加し、その後、新しいログ ファイルが作成されます。 どの時点でも、パーティション レプリカ内に複数のログ ファイルが存在することができます。 少なくとも、入力/出力あたり 720 MB [ (100 MB + 20 MB) x 3 パーティション x 2 レプリカ = 720 MB ] 以上を計画してください。 高速なイベント ストリームの極端なケースでは、各 Topic パーティション レプリカ フォルダーが、最大ログ ファイル サイズの 3 ~ 4 倍 (パーティション レプリカあたり 300 MB ~ 400 MB) に増えることがあります。 3 つのパーティションを含む単一のトピックの場合、合計ディスク容量は、ある時点で 1800 MB ~ 2400 MB に増える可能性があります。 この最大サイズに、構成した入力および出力の数を掛けた値が、GeoEvent Server で Kafka に利用可能である必要があるディスク上の推定サイズになります。 次のプロパティは、新しいファイルに切り替わる前のログ ファイルの最大サイズ (デフォルトは 100 MB) を制御します。
log.segment.bytes=104857600高速のデータが存在する場合、最終的に複数の 100 MB のログ ファイルが存在する可能性があり、そうでない場合は、1 つのログ ファイルのみが存在することがあります。 低速のイベント データの場合、このプロパティを小さいサイズに設定するほど、パフォーマンスが向上します。 高速のイベント データの場合、大きいサイズに設定するほど、パフォーマンスが向上します。 小さすぎるサイズに設定した場合、Kafka が頻繁にファイルを切り替えます。 大きすぎるサイズに設定した場合、Kafka がログ ファイルを新しいファイルにめったに切り替えなくなり、古いイベントが不必要に長くキュー内に保持されるようになります。
Kafka Topic パーティションによって消費されるディスク容量に影響を与える別の設定は、保持バイトです。 このプロパティは、最小量のデータを常に保持するように Kafka に指示します。 デフォルトでは、このプロパティの値は 100 MB です。 そのため、Kafka が古いデータを削除することができ、削除するべきであると決定した場合でも、残るデータのサイズは 120 MB を下回りません (古いログ ファイルに 100 MB、新しいログ ファイルに 20 MB)。 上の segment bytes プロパティと同様に、低速のデータを操作する場合、このプロパティの値を小さくすることができます。 高速のデータを操作する場合は、デフォルトの 100 MB を使用する必要があります。 次のプロパティは、ログ ファイルに残すデータの最小量を制御します。この量に達すると、古いデータは削除されます (デフォルトは 100 MB)。
log.retention.bytes=104857600Topic パーティションのファイル管理
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 分ごとにチェックするということを意味します。