第17章 Cruise Control を使用した JBOD ディスクでのパーティションの再割り当て


JBOD ストレージを使用しており、Cruise Control が Strimzi とともにインストールされている場合は、同じブローカー上のストレージに使用される JBOD ディスク間でパーティションを再割り当てし、データを移動できます。この機能により、データを失うことなく JBOD ディスクを削除することもできます。

Kafka kafka-log-dirs.sh ツールを使用して、Kafka トピックパーティションの移動前と移動後の情報とブローカー上の場所を確認します。

Cruise Control REST API の remove_disks エンドポイントにリクエストを送信して、クラスター内のディスクを降格し、そのパーティションを他のディスクボリュームに再割り当てします。

前提条件

この手順では、3 つの JBOD ボリュームとトピックレプリケーション係数 3 で設定されたブローカーを使用します。

JBOD ストレージを使用したブローカー設定の例

node.id=1
process.roles=broker
default.replication.factor = 3
log.dirs = /var/lib/kafka/data-0,/var/lib/kafka/data-1,/var/lib/kafka/data-2
# ...

この手順では、ブローカー 1 のパーティションをボリューム 0 からボリューム 1 と 2 に再割り当てします。

手順

  1. Cruise Control サーバーを起動します。デフォルトでは、サーバーはポート 9092 で起動します。オプションで別のポートを指定します。

    cd ./cruise-control/
    ./kafka-cruise-control-start.sh config/cruisecontrol.properties <port_number>
  2. Cruise Control が実行していることを確認するには、Cruise Control サーバーの /state エンドポイントに GET リクエストを送信します。

    curl -X GET 'http://<cc_host>:<cc_port>/kafkacruisecontrol/state'
  3. (オプション) Kafka kafka-log-dirs.sh ツールを使用して、ブローカー上のパーティションレプリカデータを確認します。

    kafka-log-dirs.sh --describe --bootstrap-server my-cluster-kafka-bootstrap:9092 --broker-list 1 --topic-list my-topic

    このツールは、各ログディレクトリーのトピック情報を返します。この例では、情報を my-topic に制限して、単一のトピックに対する手順を表示しています。ログディレクトリーに使用される JBOD ボリュームは、/var/lib/kafka/<volume_id> にマウントされます。

    各ログディレクトリーの出力データの例

    {
      "brokers": [
        {
          "broker": 1, 
    1
    
          "logDirs": [
            {
              "partitions": [  
    2
    
                {
                  "partition": "my-topic-0",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                }
              ],
              "error": null, 
    3
    
              "logDir": "/var/lib/kafka/data-0" 
    4
    
            },
            {
              "partitions": [
                {
                  "partition": "my-topic-1",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                }
              ],
              "error": null,
              "logDir": "/var/lib/kafka/data-1"
            },
            {
              "partitions": [
                {
                  "partition": "my-topic-2",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                }
              ],
              "error": null,
              "logDir": "/var/lib/kafka/data-2"
            }
          ]
        }
      ]
    }

    1
    ブローカー ID
    2
    パーティションの詳細: 名前、サイズ、オフセットラグ。(isFuture) プロパティーが true と表示されている場合、パーティションがログディレクトリー間で移動していることを示します。
    3
    errornull でない場合、ログディレクトリーをホストしているディスクに問題があります。
    4
    ログディレクトリーのパスと名前。
  4. ノードからボリュームを削除します。

    curl -v -X POST 'http://<cc_host>:<cc_port>/kafkacruisecontrol/remove_disks?dryrun=false&brokerid_and_logdirs=1-/var/lib/kafka/data-0'

    このコマンドは、削除するボリュームのブローカー ID とログディレクトリーを指定します。成功した場合、ブローカー 1 のボリューム 0 からパーティションが再割り当てされます。

    注記

    必要に応じて、変更を適用する前にこの操作のドライランを実行できます。

  5. ボリュームの削除とデータの移動を確認するには、Kafka kafka-log-dirs.sh ツールを再度使用します。

    この例では、ボリューム 0 が削除され、my-topic-0 パーティションが /var/lib/kafka/data-1 に再割り当てされています。

    パーティションの再割り当て後の出力データの例

    {
      "brokers": [
        {
          "broker": 1,
          "logDirs": [
            {
              "partitions": [
                {
                  "partition": "my-topic-0",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                },
                {
                  "partition": "my-topic-1",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                }
              ],
              "error": null,
              "logDir": "/var/lib/kafka/data-1"
            },
            {
              "partitions": [
                {
                  "partition": "my-topic-2",
                  "size": 0,
                  "offsetLag": 0,
                  "isFuture": false
                }
              ],
              "error": null,
              "logDir": "/var/lib/kafka/data-2"
            }
          ]
        }
      ]
    }

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る