Amazon Web Services ブログ

Kafka クラスター向けの高スループットと高速スケーリングを実現する Amazon MSK のエクスプレスブローカーのご紹介

11 月 7 日、Amazon Managed Streaming for Apache Kafka (Amazon MSK) の新しいブローカータイプであるエクスプレスブローカーの一般提供について発表します。Apache Kafka を実行している標準ブローカーと比較して、ブローカーあたりのスループットが最大 3 倍向上し、スケールが最大 20 倍速くなり、復旧時間が 90% 短縮されるように設計されています。エクスプレスブローカーには、デフォルトで Kafka のベストプラクティスが事前設定されており、Kafka API をサポートし、Amazon MSK のお客様が期待するのと同じ低レイテンシーパフォーマンスを提供するため、既存のクライアントアプリケーションを変更することなく引き続き使用できます。

エクスプレスブローカーを使用すると、Amazon MSK でプロビジョニングされたクラスターを使用する際に、Kafka アプリケーションのコンピューティングとストレージの伸縮性が向上します。Amazon MSK は、Apache Kafka をベースにした可用性が高くスケーラブルなアプリケーションを簡単に構築して実行できる、フルマネージド型の AWS サービスです。

エクスプレスブローカーが持つ主な機能と、享受できる利点について詳しく見ていきましょう。

  • ハンズフリーストレージ管理による運用の簡略化 – エクスプレスブローカーは、事前プロビジョニングなしで無制限のストレージを提供し、ディスク関連のボトルネックを解消します。クラスターのサイズ設定はより単純で、必要なのは入力と出力のスループットをブローカーごとの推奨スループットで割ったものです。これにより、プロアクティブなディスク容量の監視とスケーリングが不要になり、クラスター管理が簡素化され、潜在的な障害の原因が排除されることで耐障害性が向上します。
  • ブローカーの数が少なく、ブローカーあたりのスループットは最大 3 倍 – ブローカーあたりのスループットが高いほど、同じワークロードでクラスターを小さくできます。標準ブローカーのスループットはクライアントトラフィックとバックグラウンド操作を考慮に入れる必要があります。m7g.16xl の標準ブローカーは 154 MBps の入力を安全に処理します。エクスプレスブローカーは独自の設定とリソース分離を採用しているため、m7g.16xl サイズのインスタンスでは、クラスターイベント中にパフォーマンスや可用性を損なうことなく、最大 500 MBps の入力を安全に管理できます。
  • 20 倍の高速スケーリングによる高い使用率 – エクスプレスブローカーはスケーリング中のデータ移動を減らし、標準ブローカーの最大 20 倍の速度を実現します。これにより、より迅速で信頼性の高いクラスターサイズ設定が可能になります。各ブローカーの入力スループットキャパシティを監視し、数分以内にブローカーを追加できるため、トラフィックの急増を見越してオーバープロビジョニングを行う必要がなくなります。
  • 耐障害性が高く、復旧速度が 90% 向上 – エクスプレスブローカーは、高い耐障害性を必要とするミッションクリティカルなアプリケーション向けに設計されています。設定ミスによる障害を減らす 3 つの方法のレプリケーション (RF=3) など、ベストプラクティスがデフォルトであらかじめ設定されています。また、エクスプレスブローカーは、標準の Apache Kafka ブローカーと比較して、一時的な障害からの復旧が 90% 速くなります。エクスプレスブローカーの再調整と復旧は、最小限のクラスターリソースしか使用しないため、キャパシティプランニングが簡素化されます。これにより、リソース使用率が高まるリスクがなくなり、クラスターのサイズを適正化する際に継続的に監視する必要がなくなります。

Amazon MSK では、次のように、ワークロードと好みに応じてオプションを選択できます。

MSK プロビジョンド MSK Serverless
標準ブローカー エクスプレスブローカー
設定範囲 柔軟性が最も高い 柔軟 柔軟性が最も低い
クラスターの再調整 カスタマーマネージド カスタマーマネージド
ただし、最大で 20 倍速く
MSK マネージド
容量管理 はい はい (コンピューティングのみ) なし
ストレージ管理 はい なし なし

エクスプレスブローカーは、コストを削減し、耐障害性を高め、運用上のオーバーヘッドを抑えることができるため、すべての Kafka ワークロードに最適な選択肢となっています。容量、設定、スケール方法の側面を一切管理せずに Kafka を使用したい場合は、Amazon MSK Serverless を選択できます。これにより、完全に抽象化された Apache Kafka エクスペリエンスが提供され、インフラストラクチャの管理が不要になり、自動的にスケールされ、リソース利用を最適化する必要のない従量制料金の消費モデルで請求されます。

Amazon MSK のエクスプレスブローカーの開始方法
エクスプレスブローカーを使い始めるには、Amazon MSK が提供するサイズ設定と料金のワークシートを使用できます。このワークシートは、ワークロードに対応するために必要なクラスターサイズを見積もるのに役立ちます。また、発生する月次総コストのおおよその見積もりも得られます。

ワークロードのスループット要件は、クラスターのサイズを決定する主な要因です。クラスターに必要なブローカーのサイズと数を決定するには、パーティションや接続数などの他の要素も考慮する必要があります。例えば、ストリーミングアプリケーションで 30 MBps のデータ入力 (書き込み) と 80 MBps のデータ出力 (読み取り) の容量が必要な場合は、3 つの express.m7g.large ブローカーを使用してスループットのニーズを満たすことができます (ワークロードのパーティション数が、Amazon MSK が m7g.large インスタンスに推奨するパーティションの最大数以内であることを前提とします)。

次の表は、持続可能で安全な運用のための、インスタンスサイズあたりの推奨最大入力数、出力数、およびパーティション数を示しています。これらの推奨事項の詳細については、Amazon MSK デベロッパーガイドのベストプラクティスセクションをご覧ください。

インスタンスサイズ 入力 (MBps) 出力 (MBps)
express.m7g.large 15.6 31.2
express.m7g.4xlarge 124.9 249.8
express.m7g.16xlarge 500.0 1000.0

ワークロードに必要なエクスプレスブローカーの数とサイズを決定したら、AWS マネジメントコンソールに移動するか、CreateCluster API を使用して Amazon MSK でプロビジョニングされたクラスターを作成します。

Amazon MSK コンソールで新しいクラスターを作成するときに、[Broker type] (ブローカータイプ) オプションで [Express brokers] (エクスプレスブローカー) を選択し、そのブローカーに対してプロビジョニングするコンピューティング容量の量を選択します。スクリーンショットでわかるように、エクスプレスブローカーには Apache Kafka 3.6.0 バージョンと Graviton ベースのインスタンスを使用できます。エクスプレスブローカーのストレージを事前にプロビジョニングする必要はありません。

また、これらの設定の一部をカスタマイズして、好みに応じてクラスターのパフォーマンスをさらにファインチューニングすることもできます。詳細については、Amazon MSK デベロッパーガイドの「エクスプレスブローカーの設定」を参照してください。

AWS コマンドラインインターフェイス (AWS CLI) で MSK クラスターを作成するには、create-cluster コマンドを使用します。

aws kafka create-cluster \
    --cluster-name "channy-express-cluster" \
    --kafka-version "3.6.0" \
    --number-of-broker-nodes 3 \
    --broker-node-group-info file://brokernodegroupinfo.json

brokernodegroupinfo.json という名前の JSON ファイルには、Amazon MSK にブローカーノードを分散させたい 3 つのサブネットを指定します。

{
    "InstanceType": "express.m7g.large",
    "BrokerAZDistribution": "DEFAULT",
    "ClientSubnets": [
        "subnet-0123456789111abcd",
        "subnet-0123456789222abcd",
        "subnet-0123456789333abcd"
    ]
}

クラスターが作成されると、ブートストラップ接続文字列を使用してクライアントをクラスターエンドポイントに接続できます。

エクスプレスブローカーを使用すると、垂直方向にスケール (インスタンスサイズを変更) または水平方向にスケール (ブローカーを追加) できます。垂直スケーリングにより、パーティションを再割り当てしなくてもスループットが 2 倍になります。水平スケーリングではブローカーが 3 つセットで追加され、さらに多くのパーティションを作成できますが、新しいブローカーがトラフィックを処理するにはパーティションを再割り当てする必要があります。

エクスプレスブローカーの主な利点は、数分以内にブローカーを追加してパーティションを再調整できることです。一方、標準ブローカーを追加した後のパーティションの再調整には数時間かかることがあります。以下のグラフは、クラスターに 3 つのエクスプレスブローカーを追加し、各新しいブローカーに 2000 個のパーティションを再割り当てした後に、パーティションの再調整にかかった時間を示しています。

ご覧のように、これらのパーティションを再割り当てして新しいブローカーの追加容量を活用するのに約 10 分かかりました。標準ブローカーで構成される同等のクラスターで同じ実験を行ったところ、パーティションの再割り当てには 24 時間以上かかりました。

パーティションの再割り当ての詳細については、Apache Kafka ドキュメントの「クラスターの拡張」を参照してください。

知っておくべきこと
エクスプレスブローカーについて知っておくべきことは次のとおりです。

  • データ移行Amazon MSK Replicator を使用して、既存の Kafka または MSK クラスターのデータをエクスプレスブローカーで構成されるクラスターに移行できます。これにより、クラスターのデータとメタデータの両方が新しいクラスターにコピーされます。
  • モニタリング – クラスター内のエクスプレスブローカーで構成されるクラスターを Amazon CloudWatch メトリクスを使用してブローカーレベルでモニタリングできます。また、Prometheus によるオープンモニタリングを有効にして、JMX エクスポーターとノードエクスポーターを使用してメトリクスを公開できます。
  • セキュリティ – 他のブローカータイプと同様に、Amazon MSK は AWS Key Management Service (AWS KMS) と統合して、エクスプレスブローカーのストレージを透過的にサーバー側で暗号化します。エクスプレスブローカーを使用して MSK クラスターを作成するときに、Amazon MSK が保管中のデータの暗号化に使用する AWS KMS キーを指定できます。KMS キーを指定しない場合、Amazon MSK が AWS マネージドキーを作成し、ユーザーに代わって使用します。

今すぐご利用いただけます
エクスプレスブローカータイプは、11 月 7 日より米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ストックホルム) の各リージョンでご利用いただけます。

エクスプレスブローカーの Apache Kafka ブローカーインスタンスの使用に対して時間単位の料金 (1 秒単位で請求) が発生します。手数料は、MSK クラスター内のブローカーインスタンスとアクティブなブローカーの規模によって異なります。また、エクスプレスブローカーに書き込まれるデータの GB 単位の料金 (バイト単位の解像度で請求) もお支払いいただきます。詳細については、「Amazon MSK の料金」ページにアクセスしてください。

Amazon MSK コンソールで Amazon MSK のエクスプレスブローカーをお試しください。詳細については、Amazon MSK デベロッパーガイドをご覧ください。また、AWS re:Post for Amazon MSK 宛てに、または通常の AWS サポートの連絡先を通じて、ぜひフィードバックをお寄せください。

Channy

原文はこちらです。