[51CTO.com オリジナル記事] Kafka 2.8 以降では、Kafka クラスターは Zookeeper なしで実行できます。この記事では、コンテナを使用して単一ノード クラスターで Kafka を実行する 3 つの方法を紹介します。 Apache Zookeeper は、Kafka の依存関係として、Apache Kafka のメタデータを管理するために使用されてきました。幸いなことに、Kafka バージョン 2.8 以降では、Zookeeper なしで Kafka クラスターを実行できます。コンテナのシングルノード クラスターを使用する 3 つの簡単な方法を紹介します。 コントロールプレーンとデータプレーンApache Kafka は、クラスターに対して独立したコントロール プレーンとデータ プレーンを実装します。コントロール プレーンはクラスターを管理し、どのブローカーがアクティブであるかを追跡し、セットが変更されたときにアクションを実行します。同時に、データ プレーンは、プロデューサーとコンシューマー、およびその両方によって生成されたレコード情報を処理する必要があります。以前の Kafka バージョンでは、Zookeeper がコントロール プレーン機能を実装する主要なクラスター コンポーネントでした。 数年にわたる努力の末、Kafka はコントロール プレーン機能の最初のバージョンを実装しました。このアップデートを KIP-500 と呼びます。その中でも、Apache Kafka Raft (KRaft とも呼ばれる) は、Zookeeper に代わる新しいコンセンサス プロトコルとして導入されました。ブローカーは、クラスター制御プレーンを管理する仲裁コントローラーとして機能できます。この変更により、クラスターの展開、監視、管理が簡素化されます。新しい KRaft コントローラーは Apache Kafka 2.8 で体験できます。 コンテナ化された単一ノードApache Kafka の強みは、メッセージ処理機構の水平展開と高スループットメッセージの管理であり、これが Kafka 開発の原動力となっています。このため、本番環境の Kafka クラスターでは、上記の機能を実行するために複数のブローカーを使用する必要があります。本日の知識ポイントを素早く簡単に紹介するために、まずは単一ノード クラスターから始めて、Kafaka がグループ エントリを管理する方法を紹介します。 この記事では、必要なアプリケーション環境を格納するために Strimzi コンテナーを使用します。 Strimzi は、Cloud Native Computing Foundation プロジェクトのメンバーです。これにより、Kubernetes 上で Apache Kafka を簡単に実行できるようになり、成熟した操作とコンテナ イメージのセットも提供されます。 この記事では、Quay Container Registry を通じて Apache Kafka 2.8.1 イメージを公開して使用します。 Docker または Podmanまず、同じインスタンスでエージェントとコントローラーのロールを持つ単一のコンテナを実行する必要があります。 Docker または Podman をインストールし、次のコマンドを実行します。 docker run -it --name kafka-zkless -p 9092:9092 -e LOG_DIR=/tmp/logs quay.io/strimzi/kafka:latest-kafka-2.8.1-amd64 /bin/sh -c 'エクスポート CLUSTER_ID=$(bin/kafka-storage.sh random-uuid) && bin/kafka-storage.sh format -t $CLUSTER_ID -c config/kraft/server.properties && bin/kafka-server-start.sh config/kraft/server.properties' 上記のコマンドは、「kafka-zkless」という名前のコンテナを起動し、Kafka のポート 9092 を公開します。仕事の3つの側面を含むエントリーポイントの情報をカバーします。 まず、環境変数を設定し、UUID を通じてクラスター ID を設定します。 次に、`kafka-storage.sh` スクリプトを実行してストレージ ディレクトリをフォーマットします。 3 番目に、KRaft 構成を使用して Kafka サーバーを起動します。 同時に、標準の Kafka ツール (kcat: 以前は kafkacat と呼ばれていました) を使用してブローカーに接続し、関連するレコードを生成および使用することもできます。 Docker の作成コンポーネントを定義するには、Compose 仕様を使用します。図 1 に示すように、docker-compose yaml ファイルの例は次のとおりです。 図1 図からわかるように、container_name はコンテナ名を定義し、image はコンテナイメージを定義し、command 部分は実行するコマンドを定義します。コマンドが長すぎるため、説明のために 2 行に分割されています (実際には 1 行ですが、ここで改行を追加して、誰でも読みやすくしています)。上記の行は、クラスター ID の定義、ストレージ ディレクトリのフォーマット、Kafaka サーバーの起動など、Docker のコマンドと一致しています。次の行は主に、リスナー、security.protocol.map、およびアドバタイズされたリスナー情報を書き換えます。次のステップは、ポートを 9092 として定義することです。環境では、コマンド ラインで書き換える必要がある 3 種類の情報が定義されています。KAFKA_ADVERTISED_LISTENERS は、アドバタイズされたリスナーに対応します。 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP は security.protocol.map に対応します。 KAFKA_LISTENERS はリスナー情報に対応します。 上記の例は、次のコマンドで実行できます。 docker-compose を起動 -d この例では、ホスト ポート 9092 を公開します。より広範囲の複合デプロイメントでアクセスする必要がある場合は、他のポートとの競合を避けるために、これを kafka:29092 に変更できます。 Kubernetes のデプロイメントKubernetes の使用に慣れている場合は、図 2 に示すようにデプロイメントを記述できます。 図2 図 2 に示すように、コンテナー ノードの下のコンテンツに焦点を当てます。コンテナの名前はzkless-kafkaです。コンテナイメージは image で定義され、コンテナを起動するコマンドは command で定義されます。 Docker と同様に、コマンドは 2 行で説明するには長すぎます。上の行には、クラスター ID の定義、ストレージ ディレクトリのフォーマット、Kafaka サーバーの起動が引き続き含まれています。次の行は、env (環境変数) の KAFKA_ADVERTISED_LISTENERS に対応する値から読み取られる、アドバタイズされたリスナーの情報のみを定義します。 上記のファイルは次のコマンドで実行できます。 kubectl を適用 -f kubernetes.yaml 実行されると、イメージがデプロイされ、zkless-kafka-bootstrap ホスト名を使用してブートストラップ サーバーが公開されます。同時に、デプロイメント サーバーが配置されている現在の名前空間へのアクセスが制限されます。この時点で、他の広告リスナーと同様に、必要なメッセージを取得できます。 まとめこの記事では、Apache Kafka の新しいコントロール プレーンの実装について簡単に紹介します。以前のバージョンの Kafaka ではクラスター制御機能が完成しているため、強力な Zookeeperless Kafka クラスターを使用できます。コンテナ イメージを使用して単一ノード クラスターをデプロイする 3 つの簡単な方法 (単純な Docker または podman コマンドの実行、docker-compose ファイルの実行、Kubernetes 上で実行中のポッドのデプロイ) を確認しました。 著者について51CTO コミュニティ エディター兼シニア アーキテクトの Cui Hao 氏は、ソフトウェア開発とアーキテクチャで 18 年の経験があり、分散アーキテクチャでは 10 年の経験があります。元HPの技術専門家。彼は情報を共有することに積極的で、60 万回以上読まれている人気の高い技術記事を多数執筆しています。 『分散アーキテクチャの原則と実践』の著者。 [51CTO オリジナル記事、パートナーサイトに転載する場合は、元の著者とソースを 51CTO.com として明記してください] |
<<: K8sにVictoriametricsをインストールする
>>: NIST サイバーセキュリティ フレームワークの観点からエンタープライズ SaaS アプリケーションのセキュリティ コンプライアンスを検討する
新しい同僚が会社に入社するたびに、その同僚は自分のコンピューター上でさまざまな環境を構成する必要があ...
今後、raksmartデータセンターは新規のお客様向けに超お得なイベントを開催します: (1) 新規...
キーワードの選択は、ウェブサイトの構築とプロモーションの第一歩であり、同時に、ウェブサイトの構築とプ...
毎日、私たち一人一人はさまざまな選択、判断、決断を行っています。たとえば、昼食に何を食べるか、服を買...
Prometeus の子会社である XENPOWER は、より大容量のハード ドライブを備えた VP...
最近、世界的なテクノロジープラットフォームである Mobvista は、クラウドコンピューティングビ...
IDC Review Network (idcps.com) は 6 月 13 日に次のように報告し...
virmach vps は、3 月にロサンゼルス データ センターで、Windows が組み込まれた...
最近は、Web ページにさまざまな共有コードを埋め込むのが流行っているようです。使用するかどうかに関...
【原文は51CTO.comより】2020年1月6日、51CTOが主催した「IT印象◆ビジネスモデルの...
血なまぐさい、痛い教訓です。6月28日、Baiduはインターネット上の低品質コンテンツを持つウェブサ...
Hiformance はハイブリッド専用サーバー (hiformance VPS: $10/KVM/...
1.百度の2大事業グループ設立の背景:モバイルレイアウトが加速する中国新聞社、6月9日。百度は6月7...
春節期間中、方周子が韓漢の代筆を疑った事件が話題を呼んだ。一部のネットユーザーは「今年の春節は韓漢と...
ルーマニアのサーバー販売業者である hostsolutions が、米国 7.4 向けの格安サーバー...