10.4. Kafka ストレージの設定
Streams for Apache Kafka は、さまざまな Kafka ストレージオプションをサポートしています。次の基本タイプから選択できます。
- 一時ストレージ
- 一時ストレージは一時的なものであり、Pod の実行中にのみ保持されます。Pod が削除されるとデータは失われますが、高可用性環境ではデータを回復できます。その一時的な性質のため、一時ストレージは開発およびテスト環境にのみ推奨されます。
- 永続ストレージ
- 永続ストレージは、Pod の再起動やシステムの中断があってもデータが保持されるため、実稼働環境に最適です。
JBOD (Just a Bunch of Disks) ストレージを使用すると、複数のディスクまたはボリュームを一時ストレージまたは永続ストレージとして使用するように Kafka クラスターを設定できます。
JBOD ストレージ (複数のボリューム)
JBOD ストレージを指定する場合でも、各ディスクに一時ボリュームと永続ボリュームのどちらを使用するか決定する必要があります。その時点では 1 つのボリュームのみ使用したとしても、JBOD を使用する場合は必要に応じて後からボリュームを追加して拡張できるため、JBOD の使用が推奨されます。
Kafka クラスターをデプロイした後は、ストレージタイプ (永続ストレージ、一時ストレージ、JBOD ストレージ) は変更できません。ただし、JBOD ストレージから異なるタイプのボリュームを追加または削除することは可能です。また、新しいストレージ仕様を持つノードプールを作成して移行することもできます。
階層型ストレージ (アドバンスド)
階層型ストレージは、パフォーマンスとコスト特性の異なるさまざまなストレージタイプを組み合わせることで、Kafka データをさらに柔軟に管理できます。これにより、Kafka は古いデータを安価な長期ストレージ (オブジェクトストレージなど) にオフロードし、頻繁にアクセスされる最近のデータを高価な高速ストレージ (ブロックストレージなど) に保持できます。
階層型ストレージはアドオン機能です。Kafka ノードのストレージ (一時、永続、または JBOD) を設定した後、クラスターレベルで階層型ストレージを設定し、それをトピックレベルの remote.storage.enable 設定を使用して特定のトピックに対して有効にできます。
10.4.1. ストレージに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
Streams for Apache Kafka が効果的に動作するには、効率的なデータストレージが不可欠です。Streams for Apache Kafka では、Kafka ブローカーの主なストレージタイプとしてブロックストレージを使用してテストされているため、ブロックストレージが強く推奨されています。ファイルシステムベースのストレージ (NFS など) は、プライマリーブローカーストレージとして動作することが保証されておらず、安定性やパフォーマンスの問題が発生する可能性があります。
OpenShift でサポートされている一般的なブロックストレージタイプは次のとおりです。
クラウドベースのブロックストレージソリューション:
- Amazon EBS (AWS 用)
- Azure Disk Storage (Microsoft Azure 用)
- Persistent Disk (Google Cloud 用)
- ローカル永続ボリューム を使用した永続ストレージ (ベアメタルデプロイメント用)
- ファイバーチャネルや iSCSI などのプロトコルでアクセスされるストレージエリアネットワーク (SAN) ボリューム
Streams for Apache Kafka には OpenShift の raw ブロックボリュームは必要ありません。
10.4.1.1. ファイルシステム リンクのコピーリンクがクリップボードにコピーされました!
Kafka は、メッセージの保存にファイルシステムを使用します。Streams for Apache Kafka は、Kafka で一般的に使用される XFS および ext4 ファイルシステムと互換性があります。ファイルシステムを選択して設定するときは、デプロイメントの基盤となるアーキテクチャーと要件を考慮してください。
詳細は、Kafka ドキュメントの Filesystem Selection を参照してください。
10.4.1.2. 階層型ストレージ リンクのコピーリンクがクリップボードにコピーされました!
Kafka の階層型ストレージ機能は、Streams for Apache Kafka でオプション機能としてサポートされています。
階層型ストレージを有効にした場合:
- 永続ボリュームや JBOD などのプライマリーブローカーストレージは、最近のデータを処理します。
- オブジェクトストレージなどのリモート階層型ストレージは履歴データに使用されます。
Streams for Apache Kafka を使用すると、ユーザーは独自の階層型ストレージプラグインを統合して、特定のリモートストレージバックエンドをサポートできます。カスタムプラグインを使用する場合は、実稼働環境にデプロイする前に、パフォーマンスと互換性の要件を満たしていることを確認してください。
10.4.1.3. ディスク使用量 リンクのコピーリンクがクリップボードにコピーされました!
ソリッドステートドライブ (SSD) は必須ではありませんが、複数のトピックに対してデータが非同期的に送受信される大規模なクラスターで Kafka のパフォーマンスを向上させることができます。
Kafka には組み込みのデータレプリケーション機能があるため、レプリケートされたストレージは必要ありません。