Zookeeper に基づいて Kafka 高可用性クラスターを構築する (実際に利用可能)

目次

1. 飼育員クラスターの構築

1.1 ダウンロードと解凍

1.2 構成の変更

1.3 ノードの識別

1.4 クラスタの起動

1.5 クラスターの検証

2. Kafkaクラスタの構築

2.1 ダウンロードと解凍

2.2 設定ファイルのコピー

2.3 構成の変更

2.4 クラスタの起動

2.5 テストトピックの作成

2.6 データ書き込みテスト


1. 飼育員クラスターの構築

クラスターの高可用性を確保するには、Zookeeper クラスター内に奇数のノード (少なくとも 3 つのノード) を配置することが最適であるため、ここでは 3 ノードのクラスターが構築されます。

1.1 ダウンロードと解凍

Zookeeper の対応するバージョンをダウンロードします。ここでダウンロードしたバージョンは 3.4.14 です。公式ダウンロードアドレス: https://archive.apache.org/dist/zookeeper/

# 下载
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
# 解压
tar -zxvf zookeeper-3.4.14.tar.gz

1.2 構成の変更

Zookeeper インストール パッケージのコピーを 3 つコピーします。インストールディレクトリのconfディレクトリに移動し、設定サンプルzoo_sample.cfgをzoo.cfgにコピーして修正すると、修正後の3つの設定ファイルの内容は以下のようになります。

zookeeper01 配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-cluster/data/01
dataLogDir=/usr/local/zookeeper-cluster/log/01
clientPort=2181

# server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里
# 指名集群间通讯端口和选举端口
server.1=host1:2287:3387
server.2=host2:2287:3387
server.3=host3:2287:3387

複数のサーバーがある場合、クラスター内の各ノードの通信ポートと選択ポートを同じにすることができ、IP アドレスを各ノードが配置されているホストの IP に変更できます。

zookeeper02 の設定は、zookeeper01 と比較して、dataDir、dataLogDir、clientPort のみが異なります。

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-cluster/data/02
dataLogDir=/usr/local/zookeeper-cluster/log/02
clientPort=2181

server.1=host1:2287:3387
server.2=host2:2287:3387
server.3=host3:2287:3387

Zookeeper03 の構成は、zookeeper01、02 と比較して、dataLogDir、dataLogDir、および clientPort のみが異なります。

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-cluster/data/03
dataLogDir=/usr/local/zookeeper-cluster/log/03
clientPort=2181

server.1=host1:2287:3387
server.2=host2:2287:3387
server.3=host3:2287:3387

構成パラメータの説明:

1.3 ノードの識別

3 つのノードのデータ格納ディレクトリにそれぞれ新しい myid ファイルを作成し、対応するノード識別子を書き込みます。Zookeeper クラスターは、myid ファイルを通じてクラスター ノードを識別し、上で構成されたノード通信ポートおよび選出ポートを通じてノードと通信し、リーダー ノードを選出します。

ストレージディレクトリを作成します。

# dataDir
mkdir -vp  /usr/local/zookeeper-cluster/data/01
# dataDir
mkdir -vp  /usr/local/zookeeper-cluster/data/02
# dataDir
mkdir -vp  /usr/local/zookeeper-cluster/data/03

ノード ID を作成して myid ファイルに書き込みます。

#server1
echo "1" > /usr/local/zookeeper-cluster/data/01/myid
#server2
echo "2" > /usr/local/zookeeper-cluster/data/02/myid
#server3
echo "3" > /usr/local/zookeeper-cluster/data/03/myid

1.4 クラスタの起動

3 つのノードをそれぞれ起動します。

# 启动节点
/usr/app/zookeeper-cluster/bin/zkServer.sh start

1.5 クラスターの検証

jps を使用してプロセスを表示し、zkServer.sh status を使用してクラスター内の各ノードのステータスを表示します。図に示すように、3 つのノードのプロセスはすべて正常に開始され、2 つのノードがフォロワー ノード、1 つのノードがリーダー ノードになります。

2. Kafkaクラスタの構築

2.1 ダウンロードと解凍

Kafka インストール パッケージの公式ダウンロード アドレス: http://kafka.apache.org/downloads この使用例でダウンロードされるバージョンは 2.2.0 です。ダウンロード コマンド:

# 下载
wget https://www-eu.apache.org/dist/kafka/2.2.0/kafka_2.12-2.2.0.tgz
# 解压
tar -xzf kafka_2.12-2.2.0.tgz

kafka_2.12-2.2.0.tgz を例として、最初の 2.12 は Scala のバージョン番号 (Kafka は Scala 言語を使用して開発されています) を表し、次の 2.2 は Kafka インストール パッケージの命名規則の説明です。 0 は Kafka のバージョンを表します。

2.2 設定ファイルのコピー

解凍したディレクトリの config ディレクトリに移動し、3 つの構成ファイルをコピーします。

cp server.properties server.properties

2.3 構成の変更

次のように、3 つの構成ファイルの一部の構成をそれぞれ変更します。

サーバー-1:

# The id of the broker. 集群中每个节点的唯一标识
broker.id=0
# 监听地址
listeners=PLAINTEXT://hostname1:9092
# 数据的存储位置
log.dirs=/usr/local/kafka/logs
# Zookeeper连接地址
zookeeper.connect=hostname1:2181,hostname2:2181,hostname3:2181

サーバー-2:

broker.id=1
listeners=PLAINTEXT://hostname2:9094
log.dirs=/usr/local/kafka/logs
zookeeper.connect=hostname1:2181,hostname2:2181,hostname3:2181

サーバー-3:

broker.id=2
listeners=PLAINTEXT://hostname3:9094
log.dirs=/usr/local/kafka/logs
zookeeper.connect=hostname1:2181,hostname2:2181,hostname3:2181

ここで説明が必要なのは、log.dirs はデータログの保存場所であり、正確にはパーティションデータの保存場所であり、プログラムの実行ログの場所ではありません。プログラム実行ログの場所は、同じディレクトリ内の log4j.properties によって構成されます。

2.4 クラスタの起動

異なる構成ファイルを指定して、3 つの Kafka ノードを起動します。起動後、jps を使用してプロセスを表示すると、Zookeeper プロセスが 3 つ、kafka プロセスが 3 つあるはずです。

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

2.5 テストトピックの作成

テスト トピックを作成します。

bin/kafka-topics.sh --create --bootstrap-server kubemaster01.xltest.sz.xunlei.com:9092 \
					--replication-factor 3 \
					--partitions 1 --topic my-first-topic

作成後、次のコマンドを使用して、作成されたトピック情報を表示できます。

bin/kafka-topics.sh --describe --bootstrap-server kubemaster01.xltest.sz.xunlei.com:9092 --topic my-first-topic

パーティション 0 には 3 つのレプリカ 0、1、2 があり、3 つすべてのレプリカが使用可能なレプリカであり、ISR (同期レプリカ) リストに含まれていることがわかります。1 はリーダー レプリカです。ビルドは成功しました。

2.6 データ書き込みテスト

kubemaster01 からデータを書き込みます。

bin/kafka-console-producer.sh --broker-list kubemaster01.xltest.sz.xunlei.com:9092 --topic my-first-topic

kubenode01 からデータを取得します。

bin/kafka-console-consumer.sh --bootstrap-server kubenode01.xltest.sz.xunlei.com:9092 --from-beginning --topic my-first-topic

おすすめ

転載: blog.csdn.net/Franklin7B/article/details/132715227