第14章 ブローカーの追加または削除によるクラスターのスケーリング


ブローカーを追加して Kafka クラスターをスケーリングすると、クラスターのパフォーマンスと信頼性が向上します。ブローカーを追加すると、利用可能なリソースが増加し、クラスターがより大きなワークロードを処理し、より多くのメッセージを処理できるようになります。また、より多くのレプリカとバックアップを提供することでフォールトトレランスを向上させることもできます。逆に、十分に活用されていないブローカーを削除すると、リソースの消費が削減され、効率が向上します。中断やデータ損失を避けるために、スケーリングは慎重に行う必要があります。クラスター内のすべてのブローカーにパーティションを再分散することにより、各ブローカーのリソース使用率が削減され、クラスターの全体的なスループットが向上します。

注記

Kafka トピックのスループットを向上させるには、そのトピックのパーティションの数を増やすことができます。これにより、トピックの負荷をクラスター内の異なるブローカー間で共有できるようになります。ただし、すべてのブローカーが特定のリソース (I/O など) によって制約されている場合、パーティションを追加してもスループットは向上しません。この場合、クラスターにブローカーをさらに追加する必要があります。

マルチノード Kafka クラスターの実行時にブローカーを追加すると、レプリカとして機能するクラスター内のブローカーの数に影響します。トピックの実際のレプリケーション係数は、default.replication.factor および min.insync.replicas の設定、および使用可能なブローカーの数によって決まります。たとえば、レプリケーション係数 3 は、トピックの各パーティションが 3 つのブローカー間でレプリケーションされ、ブローカーに障害が発生した場合のフォールトトレランスを確保することを意味します。

レプリカ設定の例

default.replication.factor = 3
min.insync.replicas = 2

ブローカーを追加または削除しても、Kafka はパーティションを自動的に再割り当てしません。これを行う最良の方法は、Cruise Control を使用することです。クラスターをスケールアップまたはスケールダウンするときに、Cruise Control の add_broker モードと remove_broker モードを使用できます。

  • Kafka クラスターをスケールアップした後、add_broker モードを使用して、パーティションレプリカを既存のブローカーから新しく追加されたブローカーに移動します。
  • Kafka クラスターをスケールダウンする前に、remove_broker モードを使用して、削除するブローカーからパーティションレプリカを移動します。

14.1. コントローラークラスターを動的にスケーリングする

動的コントローラークォーラムは、システムのダウンタイムを必要とせずにスケーリングをサポートします。動的スケーリングは、コントローラーの追加や削除に役立つだけでなく、次の機能もサポートします。

  • ハードウェア障害によるコントローラーの交換
  • クラスターの新しいマシンへの移行
  • ノードを専用コントローラーロールから組み合わせたロールへ、またはその逆へ移動する

動的クォーラムは、各コントローラーの host:port エンドポイントをリストする controller.quorum.bootstrap.servers プロパティーを使用してコントローラー設定で指定されます。コントローラーのクラスターへの追加またはクラスターからの削除は、一度に 1 つだけ可能です。したがって、複雑なクォーラムの変更は、一連の単一の変更として実装されます。新しいコントローラーは オブザーバー として参加し、メタデータログをレプリケートしますが、クォーラムにはカウントされません。アクティブコントローラーに追いつくと、新しいコントローラーはクォーラムに参加できるようになります。

コントローラーを削除するときは、不要なリーダー選出を避けるために、最初にコントローラーをシャットダウンすることを推奨します。削除されたコントローラーがアクティブなコントローラーである場合、新しいクォーラムの確認後にのみクォーラムから離脱します。ただし、__cluster_metadata ログ内の最後のコミット位置を計算するときには、それ自体は含まれません。

動的クォーラムでは、すべてのクラスターノードのアクティブな Kraft バージョンは 1 以上になります。kafka-features.sh ツールを使用して、アクティブな KRaft バージョンを見つけます。

./bin/kafka-features.sh --bootstrap-controller localhost:9093 describe | grep kraft.version

この出力例では、Kafka クラスター内のアクティブなバージョン (FinalizedVersionLevel) は 1 です。

Feature: kraft.version  SupportedMinVersion: 0  SupportedMaxVersion: 1  FinalizedVersionLevel: 1 Epoch: 5

kraft.version プロパティーにアクティブバージョンレベル 0 が表示されるか存在しない場合は、静的クォーラムを使用しています。1 以上の場合は、動的クォーラムを使用しています。

注記

静的クォーラムを設定することは可能ですが、スケーリング時にダウンタイムが必要になるため、推奨される方法ではありません。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る