Kafkaの謎を解き明かす(3):kafkaシングルマシンデプロイメントとクラスターデプロイメント

I.はじめに

この記事では、主にKafkaのシングルマシンおよびクラスターモードのデプロイメントを紹介します。

2、kafkaスタンドアロンインストール

2.1圧縮パッケージをダウンロードする

公式ウェブサイトにアクセスして、zookeeperとkafkaの圧縮パッケージをダウンロードする必要があります。まず、次のようにzookeeperをダウンロードします。

ここに画像の説明を挿入

ここに画像の説明を挿入

次に、以下に示すように、kafkaの公式Webサイトにアクセスしてダウンロードします。

ここに画像の説明を挿入
ローカルにダウンロード

ここに画像の説明を挿入

2.2zookeeperのインストール

ステップ1:FileZillaまたはxftpを使用して、ftpを介してzookeeper圧縮パッケージを192.168.100.120マシンにアップロードし、解凍して、confディレクトリに入り、zoo_sample.cfgファイルを参照し、cpコピーしてzoo.cfgファイルを生成できます。次のように:

ここに画像の説明を挿入
2番目のステップは、開始してステータスを確認します

启动zookeeper
./bin/zkServer.sh start
查看zookeeper状态
./bin/zkServer.sh status

ここに画像の説明を挿入

スタンドアロンはスタンドアロンスタートアップの略で、クラスターのスタートアップについては後で説明します

2.3 kafka安装

ステップ1:FileZillaまたはxftpを使用して、ftp経由でkafka圧縮パッケージを192.168.100.120マシンにアップロードし、解凍して、confディレクトリに入り、config / server.propertiesファイルを参照して、次の変更を行います。
ここに画像の説明を挿入
ステップ2:kafkaを起動します。

./bin/kafka-server-start.sh config/server.properties &

ここに画像の説明を挿入

ステップ3:新しいトピックを作成し、ステータスを表示する

./bin/kafka-topics.sh --create --topic test2 --bootstrap-server 192.168.100.120:9092 
--partitions 1 --replication-factor 1 
./bin/kafka-topics.sh --describe --topic test2 --bootstrap-server 192.168.100.120:9092 

ここに画像の説明を挿入

次に、zoo.cfgで指定されたディレクトリにトピックがあります
ここに画像の説明を挿入

ステップ5:メッセージを作成して消費する

# 生产消息
./bin/kafka-console-producer.sh --bootstrap-server 192.168.100.120:9092 --topic test2
# 消费消息
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.100.120:9092 --topic test2 --from-beginning

生成されたメッセージは消費されます

ここに画像の説明を挿入

3、kafkaクラスターのインストール

3つの仮想マシンを同時に準備します。ここでは、192.168.100.136、192.168.100.137、192.168.100.138です。動物園の飼育係かkafkaかを問わず、最初に136を操作してから、構成ファイルを137、138、およびにコピーします。十分に変更します。

3.1zookeeperのインストール

ステップ1:FileZillaまたはxftpを使用して、動物園の飼育係の圧縮パッケージをftp経由で192.168.100.136マシンにアップロードし、解凍して、confディレクトリに入り、zoo_sample.cfgファイルを参照し、cpコピーしてzoo.cfgファイルを生成します。 :

ここに画像の説明を挿入

2番目のステップである192.168.100.136マシンで、zoo.cfgを次のように変更します。

dataDir=/data/zookeeper/data 
dataLogDir=/data/zookeeper/logs 

server.1=192.168.100.136:8880:7770 
server.2=192.168.100.137:8880:7770 
server.3=192.168.100.138:8880:7770

ここに画像の説明を挿入

手順3:192.168.100.136マシンで、新しいディレクトリ/ data / zookeeper/dataと/data/ zookeeper / logsを作成します。これら2つのディレクトリはzoo.cfg構成ファイルで指定されているため、作成する必要があります。

ここに画像の説明を挿入

手順4:zoo.cfgを他の2つのノード192.168.10.137と192.168.100.138にコピーし、これら2つのマシンに/ data / zookeeper/dataおよび/data/ zookeeper/logsディレクトリを作成します。

ステップ5:3つのノードのそれぞれのdataDir(つまり、/ data / zookeeper / data)ディレクトリにmyidファイルを作成します。内容は次のとおりです。

最初のノード192.168.100.136は1、2
番目のノード192.168.100.137は2、3
番目のノード192.168.100.138は3です。

注:myidファイルの値は、zoo.cfgファイルで構成されているserver.1 server.2 server.3に対応します。最初のサーバーは192.168.100.136、2番目のサーバーは192.168.100.137、3番目のサーバーは192.168です。 .100.138。

ステップ6:3台のマシンで、飼育係を起動し、飼育係のステータスを確認して、飼育係が正常に起動するかどうかを確認します。

启动zookeeper
./bin/zkServer.sh start
查看zookeeper状态
./bin/zkServer.sh status

zkの3つのコマンド
が停止することに注意してください:./bin/zkServer.sh stop
開始:./bin/zkServer.sh start
ステータスの表示:./bin/zkServer.sh status

最初のノードを起動する場合は、次のようにステータスを確認します。これは、1つのノードのみが起動され、クラスターがまだ形成されていないためです。これを使用ps -ef|grep zookeeperし。
ここに画像の説明を挿入
起動するのを見てください

ここに画像の説明を挿入

3つのノードの飼育係が開始された後、それらは次のようになります。
ここに画像の説明を挿入

eg1:zookeeperの登録センターと構成センターは、主にデータの一貫性を調整するためのzk分散調整の2つの機能にすぎません
。eg2:zookeeperクラスターは、マスター選択の失敗を回避するために奇数(2n + 1)ノードのみをデプロイできます。
eg3:Kafkaは、メッセージを生成するためにzookeeperに依存する必要はありません。メッセージを消費する場合にのみ、オフセットを記録するためにzookeeperが必要です。

3.2kafkaのインストール

ステップ1:FileZillaまたはxftpを使用して、kafka圧縮パッケージをftp経由で192.168.100.136マシンにアップロードし、解凍して、confディレクトリに入り、config / server.propertiesファイルを参照して、次の変更を行います。

broker.id=0 
listeners=PLAINTEXT://192.168.100.136:9092 
log.dirs=/data/kafka/kafka-logs 
zookeeper.connect=192.168.100.136:2181,192.168.100.137:2181,192.168.100.138:2181  

ここに画像の説明を挿入

同様に、FileZillaまたはxftpを使用して、kafka圧縮パッケージをftp経由で192.168.100.137マシンにアップロードし、解凍して、confディレクトリに入り、config / server.propertiesファイルを参照して、次の変更を加えることができます。

broker.id=1 
listeners=PLAINTEXT://192.168.100.137:9092 
log.dirs=/data/kafka/kafka-logs 
zookeeper.connect=192.168.100.136:2181,192.168.100.137:2181,192.168.100.138:2181  

注:ここでの2つのbroker.idとリスナーを変更する必要があります。log.dirsとzookeeper.connectを変更する必要はありません。3つのノードのbroker.idを繰り返すことはできません。どのマシンに、どのbroker.idが搭載されていますか。 、zoo.cfgファイルで保持されます。一貫性があり、リスナーはここで独自のIPアドレスを構成します。

続行し、FileZillaまたはxftpを使用して、kafka圧縮パッケージをftp経由で192.168.100.138マシンにアップロードし、解凍して、confディレクトリに入り、config / server.propertiesファイルを参照して、次の変更を行います。

broker.id=2 
listeners=PLAINTEXT://192.168.100.138:9092 
log.dirs=/data/kafka/kafka-logs 
zookeeper.connect=192.168.100.136:2181,192.168.100.137:2181,192.168.100.138:2181  

また、broker.idとlistenersを変更する必要があり、log.dirsとzookeeper.connectを変更する必要はありません。

2番目のステップ:3つのノードkafkaが開始します

3台のマシン192.168.100.136、192.168.100.137、および192.168.100.138で、それぞれこの文を実行します

./bin/kafka-server-start.sh config/server.properties &

追記:zookeeperまたはkafkaの起動に失敗する場合があります。これは通常、zkログに古いデータがあるためです。各ノード/ data / zookeeper/dataおよび/data/ zookeeper / logsを削除します。通常、そこにある限り動物園の飼育係に問題はありません、kafkaの起動に問題はありません。

ステップ3:トピックを作成します(デフォルトでは、手動で作成する必要があります。構成ファイルを変更して、kafkaが存在しないトピックを自動的に作成できるようにすることができます)

test2という名前のトピックを作成し、テストトピックに1つのパーティションと1つのレプリカがあることを指定します。

./bin/kafka-topics.sh --create --topic test2 --bootstrap-server 192.168.100.137:9092 --partitions 1 --replication-factor 1 

パーティション数とレプリカ数の意味を理解するように注意してください。このトピックは1つのパーティションのみを格納するように設定されており、各パーティションには1つのレプリカがあるため、1 * 1 = 1、パーティション名はtest2-0、図に示すように、3つのパーティションがあり、各パーティションが3つのコピーである場合、3 * 3=9です。

トピック情報を表示する

./bin/kafka-topics.sh --describe --topic test2 --bootstrap-server 192.168.100.137:9092 

ここに画像の説明を挿入

ここに画像の説明を挿入

追記:kafkaのトピックの概念は、rabbitmqの交換の概念に似ています。違いは、rabbitmqでは、メッセージがキューキューに存在することです。プロデューサーがメッセージを生成するときに、そのような交換がない場合は、メッセージを作成してrabbitmqに送信し、を介してキューキューに転送します。交換;ただし、kafkaでは、プロデューサーがメッセージを生成するときに、そのようなトピックがない場合、それ自体で作成してkafkaのパーティションにメッセージを送信するのではなく、エラーを直接報告します。したがって、最初にトピックを作成してから、メッセージを送信する必要があります。

ステップ4:メッセージを送信し、kafkaに付属の名前を使用してメッセージ送信をシミュレートします

./bin/kafka-console-producer.sh --bootstrap-server 192.168.100.137:9092 --topic test2

ステップ5:メッセージを消費し、Kafka独自の名前を使用してメッセージの消費をシミュレートします

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.100.136:9092 --topic test2 --from-beginning

ここに画像の説明を挿入

生成メッセージと消費メッセージの両方でトピックを指定する必要があります。
消費メッセージでは、最初から消費するか最後から消費するかを指定し、パラメーター--from-beginningを最初から開始するように指定する必要もあります。

例:消費場所は、次のようにauto.offset.resetパラメーターで指定することもできます。
(1)最も早い:各パーティションの下に送信されたオフセットがある場合、送信されたオフセットから消費を開始します。送信されたオフセットがない場合、最初から消費を開始します。
(2)最新:各パーティションの下に送信されたオフセットがある場合、消費は送信されたオフセットから開始されます。送信されたオフセットがない場合、パーティションの下に新しく生成されたデータが消費されます。
(3)なし:トピックの各パーティションに送信されたオフセットがある場合、消費はオフセットの後に開始されます。1つのパーティションに送信されたオフセットがない限り、例外がスローされます。

概要:
kafka
common./bin/kafka-server-start.sh
start./bin/kafka-server-stop.shstop./bin/kafka-topics.shトピックの作成と表示のステータス/bin/kafka-
console- producer.shは
sh./bin/kafka-console-consumer.shを生成します

3.32つのトピック

プログラマーがコマンドを使用して手動で作成するトピックに加えて、kafkaにもトピックがあります。

トピックが初めて消費されると、Kafkaはデフォルトで__consumer_offsetsという名前のトピックを作成します。このトピックには50のパーティションがあり、各パーティションにはレプリカレプリケーションがあるため、合計で50 * 1 = 50になり、これらの50のパーティションはkafkaクラスター全体で、スタンドアロンモードは192.168.100.120マシンに配布され、クラスターモードは192.168.100.136、192.168.100.137、および192.168.100.138の3台のマシンに配布されます。

この設計は、消費のために多くのコンシューマーに対応するように設計されているため、Kafkaはデフォルトでクラスター用に50のパーティションを作成します。次のように、コマンドを使用していつでもKafkaクラスターのトピックを表示できます。

./bin/kafka-topics.sh --bootstrap-server 192.168.100.120:9092 --list

ここに画像の説明を挿入

上の図に示すように、__ consumer_offsetがトピック名であることがわかります。初めて消費するとき、__ consumer_offsetという名前のトピックがkafkaによって自動的に作成され、プログラマー自身が手動で作成したトピックであるtest2があります。以下に示すように、server.propertiesのlog.dirsで指定されたディレクトリに保存されているコマンドかどうか。
ここに画像の説明を挿入

次のように、2種類のトピックを区別する必要があります。

(1)__consumer_offsetはトピックです。このトピックは、メッセージが初めて消費されるときにkafkaによって自動的に作成されます。デフォルトで50のパーティションがあります。各パーティションには、それ自体である1つのコピーのみがあり、server.propertiesに配置されます。 in kafkaファイル構成のlog.dirs属性はディレクトリを指定します;
(2)test2もトピックです。このトピックはプログラマーが手動で作成し、パーティションにも保存されます。パーティションの数とレプリカの数は次のとおりです。また、自分で設定します。

例:クラスターの場合も同様です。最初の消費後、50個のパーティションが表示されますが、これらの50個のパーティションはkafkaクラスター全体に分散されています。ここでは192.168.100.136、192.168.100.137、192.168.100.138の3つです。マシン上。

第四に、終わり

この記事では、主にkafkaのシングルマシンおよびクラスターモードのデプロイメントを紹介します。

毎日コーディングし、毎日進歩させましょう!

おすすめ

転載: blog.csdn.net/qq_36963950/article/details/123289400
おすすめ