Azure への Apache Kafka の移行

Azure HDInsight
Azure Cosmos DB
Azure Data Lake Storage
Azure Synapse Analytics
Azure Stream Analytics

Apache Kafka は、発行-サブスクライブ アーキテクチャを実装する高度にスケーラブルでフォールト トレラントな分散メッセージング システムです。 これは、IoT やリアルタイム ログ監視システムなどのリアルタイム ストリーミング シナリオでインジェスト レイヤーとして使われます。 また、Kappa アーキテクチャで不変の追加専用データ ストアとしても使われるようになってきました。

Apache®、Apache Spark®Apache Hadoop®Apache HBaseApache Storm®Apache Sqoop®Apache Kafka®、および炎のロゴは、Apache Software Foundation の米国およびその他の国における登録商標または商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。

移行のアプローチ

この記事では、Kafka を Azure に移行する場合のさまざまな方法について説明します。

使用するものを決定するための決定フローチャートを次に示します。

Diagram that shows a decision chart for determining a strategy for migrating Kafka to Azure.

Kafka を Azure サービスとしてのインフラストラクチャ (IaaS) に移行する

Kafka を Azure IaaS に移行する 1 つの方法については、「Ubuntu VM 上の Kafka」を参照してください。

Kafka を Kafka 用 Azure Event Hubs に移行する

Event Hubs には、Apache Kafka プロデューサーおよびコンシューマー API と互換性のあるエンドポイントが用意されています。 このエンドポイントは、ほとんどの Apache Kafka クライアント アプリケーションで使用できるため、Azure で Kafka クラスターを実行する代わりになります。 エンドポイントは、バージョン 1.0 以降の API を使用するクライアントをサポートします。 この機能の詳細については、Azure Event Hubs for Apache Kafka の概要に関するページを参照してください。

Azure Event Hubs を使用できるように Apache Kafka アプリケーションを移行する方法については、「Apache Kafka エコシステム用 Azure Event Hubs への移行」を参照してください。

Kafka と Event Hubs の機能の違い

Kafka と Event Hubs が似ている点 Kafka と Event Hubs が違う点
どちらもパーティションを使用します。 以下の領域で違いがあります。
パーティションが独立しています。 • PaaS とソフトウェア
どちらもクライアント側カーソルの概念を使用しています。 • パーティション分割
どちらもきわめて高いワークロードに合わせてスケーリングできます。 • API
概念的にそれらはほぼ同じです。 • ランタイム
どちらも受信に HTTP プロトコルを使用しません。 • プロトコル
• 持続性
• セキュリティ
• 調整
パーティション分割の違い
Kafka Event Hubs
スケールはパーティション数によって管理されます。 スケールはスループット ユニットによって管理されます。
マシン間でパーティションを負荷分散する必要があります。 負荷分散は自動です。
分割とマージを使用して手動で再シャード化する必要があります。 再パーティション分割は必要ありません。
持続性の違い
Kafka Event Hubs
既定で揮発性 常に持続的
ACK の後にレプリケート ACK の前にレプリケート
ディスクとクォーラムに依存 ストレージによって提供
セキュリティの違い
Kafka Event Hubs
SSL と SASL SAS と SASL/PLAIN RFC 4618
ファイルに似た ACL ポリシー
オプションの転送暗号化 必須 TLS
ユーザー ベース トークン ベース (無制限)
その他の相違点
Kafka Event Hubs
Kafka では調整が行われません。 Event Hubs では調整がサポートされています。
Kafka では専用プロトコルが使用されます。 Event Hubs では AMQP 1.0 プロトコルが使用されます。
Kafka では送信に HTTP が使用されません。 Event Hubs では HTTP 送信とバッチ送信が使用されます。

Azure HDInsight での Kafka の移行

Kafka を Azure HDInsight 上の Kafka に移行できます。 詳細については、「Azure HDInsight での Apache Kafka の概要」を参照してください。

HDInsight 上で Kafka と AKS を使用する

Azure Kubernetes Service で HDInsight 上の Apache Kafka を使用する」を参照してください。

Kafka データの移行

Kafka の MirrorMaker ツールを使用して、クラスターから別のクラスターにトピックをレプリケートできます。 この手法は、Kafka クラスターのプロビジョニング後にデータを移行するのに役立つ可能性があります。 詳細については、「MirrorMaker を使用して HDInsight 上の Kafka に Apache Kafka トピックをレプリケートする」を参照してください。

ミラーリングを使用する移行アプローチを次に示します。

  • プロデューサーを最初に移動してから、コンシューマーを移動します。 プロデューサーの移行時は、ソース Kafka で新しいメッセージの生成が妨げられます。
  • ソース Kafka で残りのすべてのメッセージが使用された後に、コンシューマーを移行できます。

実装手順を次に示します。

  1. プロデューサー クライアントの Kafka 接続アドレスを、新しい Kafka インスタンスをポイントするように変更します。
  2. プロデューサー ビジネス サービスを再起動し、新しいメッセージを新しい Kafka インスタンスに送信します。
  3. ソース Kafka 内のデータが使用されるまで待ちます。
  4. コンシューマー クライアントの Kafka 接続アドレスを、新しい Kafka インスタンスをポイントするように変更します。
  5. コンシューマー ビジネス サービスを再起動し、新しい Kafka インスタンスからのメッセージを使用します。
  6. コンシューマーが新しい Kafka インスタンスからのデータの取得に成功したことを確認します。

Kafka クラスターを監視する

Azure Monitor ログを使用して、HDInsight 上の Apache Kafka によって生成されるログを分析できます。 詳細については、「HDInsight で Apache Kafka のログを分析する」を参照してください。

Apache Kafka Streams API

Kafka Streams API により、ほぼリアルタイムでデータを処理でき、データを結合および集計する機能が提供されます。 知る価値のあるさらに多くの API の機能があります。 詳細については、「Kafka ストリームの概要: ストリーム処理を簡単にする - Confluent」を参照してください。

Microsoft と Confluent のパートナーシップ

Confluent は、Apache Kafka 用のクラウドネイティブ サービスを提供しています。 Microsoft と Confluent には戦略的提携があります。 詳細については、次を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • Namrata Maheshwary | シニア クラウド ソリューション アーキテクト
  • Raja N | ディレクター、カスタマー サクセス
  • Hideo Takagi | クラウド ソリューション アーキテクト
  • Ram Yerrabotu | シニア クラウド ソリューション アーキテクト

その他の共同作成者:

  • Ram Baskaran | シニア クラウド ソリューション アーキテクト
  • Jason Bouska | シニア ソフトウェア エンジニア
  • Eugene Chung | シニア クラウド ソリューション アーキテクト
  • Pawan Hosatti | シニア クラウド ソリューション アーキテクト - エンジニアリング
  • Daman Kaur | クラウド ソリューション アーキテクト
  • Danny Liu | シニア クラウド ソリューション アーキテクト - エンジニアリング
  • Jose Mendez | シニア クラウド ソリューション アーキテクト
  • Ben Sadeghi | シニア スペシャリスト
  • Sunil Sattiraju | シニア クラウド ソリューション アーキテクト
  • Amanjeet Singh | プリンシパル プログラム マネージャー
  • Nagaraj Seeplapudur Venkatesan | シニア クラウド ソリューション アーキテクト - エンジニアリング

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順

Azure 製品の概要

Azure 製品のリファレンス

その他