当前位置:   article > 正文

Kafka系列 - 03 Kafka安装|单机环境搭建|伪集群环境搭建 (一台服务器)_kafka单机集群搭建

kafka单机集群搭建

1. Kafka 单机环境搭建

1. JDK 的安装与配置

① 安装JDK的第一步就是下载JDK 1.8的安装包,可以进入Oracle官网页面进行下载。https://www.oracle.com/java/technologies/downloads,我们选择的安装包是 jdk-12.0.1_linux-x64_bin.tar.gz

② 将其先复制至/opt/java目录下,并解压:

[root@localhost java]# tar -zvxf jdk-12.0.1_linux-x64_bin.tar.gz
[root@localhost java]# ll
drwxr-xr-x. 9 root root       107 1120 21:43 jdk-12.0.1
-rw-r--r--. 1 root root 189981475 1120 21:42 jdk-12.0.1_linux-x64_bin.tar.gz
  • 1
  • 2
  • 3
  • 4

③ 然后配置JDK的环境变量,修改/etc/profile文件并向其中添加如下配置:

export JAVA_HOME=/opt/java/jdk-12.0.1
export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2

④ 执行source /etc/profile命令使配置生效,通过 java-version 命令验证JDK 是否已经安装配置成功。如果安装配置成功,则会正确显示出 JDK 的版本信息:

# 让环境变量生效
[root@localhost java]# source /etc/profile
# 查看java的版本
[root@localhost java]# java -version
java version "19.0.1" 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
# 查看java的安装目录
[root@localhost java]# which java
/opt/java/jdk-19.0.1/bin/java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. Zookeeper 的安装与配置

ZooKeeper是安装Kafka集群的必要组件,Kafka通过ZooKeeper来实施对元数据信息的管理,包括集群、broker、主题、分区等内容。

① 安装ZooKeeper的第一步也是下载相应的安装包,安装包可以从官网https://zookeeper.apache.org/中获得,我们使用的安装包是zookeeper-3.4.14.tar.gz

② 将其复制到/opt/zookeeper目录下,然后解压缩:

[root@localhost opt]# cd zookeeper/
[root@localhost zookeeper]# ll
-rw-r--r--. 1 root root 37676320 1120 21:50 zookeeper-3.4.14.tar.gz
[root@localhost zookeeper]# tar -zvxf zookeeper-3.4.14.tar.gz
[root@localhost zookeeper]# ll
drwxr-xr-x. 14 2002 2002     4096 37 2019 zookeeper-3.4.14
-rw-r--r--.  1 root root 37676320 1120 21:50 zookeeper-3.4.14.tar.gz
[root@localhost zookeeper]# pwd
/opt/zookeeper
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

③ 修改 ZooKeeper 的配置文件:

[root@localhost zookeeper]# cd zookeeper-3.4.14
[root@localhost zookeeper-3.4.14]# cd conf/
[root@localhost conf]# ll
-rw-rw-r--. 1 2002 2002  535 37 2019 configuration.xsl
-rw-rw-r--. 1 2002 2002 2161 37 2019 log4j.properties
-rw-rw-r--. 1 2002 2002  922 37 2019 zoo_sample.cfg
# 将文件名 zoo_sample.cfg 修改为 zoo.cfg
[root@localhost conf]# mv zoo_sample.cfg zoo.cfg
[root@localhost conf]# vi zoo.cfg
# 将dataDir修改为下面的目录
dataDir=/opt/zookeeper/zookeeper-3.4.14/data

# 创建/opt/zookeeper/zookeeper-3.4.14/data目录
[root@localhost conf]# cd /opt/zookeeper/zookeeper-3.4.14
[root@localhost zookeeper-3.4.14]# mkdir data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

④ Zookeeker 客户端和服务端的启动:

[root@localhost zookeeper-3.4.14]# cd bin
[root@localhost bin]# ll
-rwxr-xr-x. 1 2002 2002  232 37 2019 README.txt
-rwxr-xr-x. 1 2002 2002 1937 37 2019 zkCleanup.sh
-rwxr-xr-x. 1 2002 2002 1056 37 2019 zkCli.cmd
-rwxr-xr-x. 1 2002 2002 1534 37 2019 zkCli.sh
-rwxr-xr-x. 1 2002 2002 1759 37 2019 zkEnv.cmd
-rwxr-xr-x. 1 2002 2002 2919 37 2019 zkEnv.sh
-rwxr-xr-x. 1 2002 2002 1089 37 2019 zkServer.cmd
-rwxr-xr-x. 1 2002 2002 6773 37 2019 zkServer.sh
-rwxr-xr-x. 1 2002 2002  996 37 2019 zkTxnLogToolkit.cmd
-rwxr-xr-x. 1 2002 2002 1385 37 2019 zkTxnLogToolkit.sh
# 启动Zookeeper服务端
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 查看Zookeeper启动状态
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
# 启动Zookeeper客户端
[root@localhost bin]# ./zkCli.sh
# 退出Zookeeper客户端
[zk: localhost:2181(CONNECTED) 0] quit
Quitting...
# 停止zookeeper服务
[root@localhost bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
# 启动Zookeeper服务端
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost bin]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

3. Kafka 的安装与配置

① 在安装完JDK和ZooKeeper之后,就可以执行Kafka broker的安装了,首先也是从官网http://kafka.apache.org/downloads中下载安装包,示例中选用按照包的是kafka_2.12-2.2.1.tgz

② 将其复制至/opt/kafka/目录下并进行解压缩:

[root@localhost bin]# cd /opt/kafka/
[root@localhost kafka]# ll
-rw-r--r--. 1 root root 57054917 1120 22:09 kafka_2.12-2.2.1.tgz
[root@localhost kafka]# tar -zvxf kafka_2.12-2.2.1.tgz
[root@localhost kafka]# ll
drwxr-xr-x. 6 root root       89 514 2019 kafka_2.12-2.2.1
-rw-r--r--. 1 root root 57054917 1120 22:09 kafka_2.12-2.2.1.tgz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

③ 修改broker的配置文件 server.properties,主要关注以下几个配置参数即可:

broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/opt/kafka/kafka_2.12-2.2.1/logs
zookeeper.connect=localhost:2181
# 允许外部端口连接                                            
listeners=PLAINTEXT://192.168.38.22:9092  
# 外部代理地址                                                
advertised.listeners=PLAINTEXT://192.168.38.22:9092
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
[root@localhost kafka]# cd kafka_2.12-2.2.1
[root@localhost kafka_2.12-2.2.1]# ll
drwxr-xr-x. 3 root root  4096 514 2019 bin
drwxr-xr-x. 2 root root  4096 514 2019 config
drwxr-xr-x. 2 root root  4096 1120 22:10 libs
-rw-rw-r--. 1 root root 32216 514 2019 LICENSE
-rw-rw-r--. 1 root root   336 514 2019 NOTICE
drwxr-xr-x. 2 root root    44 514 2019 site-docs
[root@localhost kafka_2.12-2.2.1]# cd config/
[root@localhost config]# ll
-rw-rw-r--. 1 root root  906 514 2019 connect-console-sink.properties
-rw-rw-r--. 1 root root  909 514 2019 connect-console-source.properties
-rw-rw-r--. 1 root root 5321 514 2019 connect-distributed.properties
-rw-rw-r--. 1 root root  883 514 2019 connect-file-sink.properties
-rw-rw-r--. 1 root root  881 514 2019 connect-file-source.properties
-rw-rw-r--. 1 root root 1111 514 2019 connect-log4j.properties
-rw-rw-r--. 1 root root 2262 514 2019 connect-standalone.properties
-rw-rw-r--. 1 root root 1221 514 2019 consumer.properties
-rw-rw-r--. 1 root root 4727 514 2019 log4j.properties
-rw-rw-r--. 1 root root 1925 514 2019 producer.properties
-rw-rw-r--. 1 root root 6851 514 2019 server.properties
-rw-rw-r--. 1 root root 1032 514 2019 tools-log4j.properties
-rw-rw-r--. 1 root root 1169 514 2019 trogdor.conf
-rw-rw-r--. 1 root root 1023 514 2019 zookeeper.properties
[root@localhost config]# vi server.properties
# 创建/opt/kafka/kafka_2.12-2.2.1/logs目录
[root@localhost config]# cd ..
[root@localhost kafka_2.12-2.2.1]# mkdir logs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

broker.id=0 表示broker的编号,如果集群中有多个broker,则每个broker的编号需要设置的不同
listeners=PLAINTEXT://:9092 brokder对外提供的服务入口地址
log.dirs=/opt/kafka/kafka_2.12-2.2.1/logs 设置存放消息日志文件的地址
zookeeper.connect=localhost:2181 Kafka所需Zookeeper集群地址

④ kafka的启动:

# 启动kafka服务端
[root@192 config]# cd ..
[root@192 kafka_2.12-2.2.1]# bin/kafka-server-start.sh config/server.properties
  • 1
  • 2
  • 3

⑤ 重新开启一个终端,验证kafka有没有启动:

[root@localhost ~]# ps -ef|grep kafka
  • 1

2. Kafka 集群环境搭建

1. Zookeeper 伪集群搭建

真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机内存会吃不消,所以这里我们搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上,用端口进行区分。

搭建一个三个节点的Zookeeper集群(伪集群)。

① 将解压后的zookeeper-3.4.14目录复制到以下三个目录:zookeeper-01、zookeeper-02、zookeeper-03

[root@localhost zookeeper]# cp -rf zookeeper-3.4.14 zookeeper-01
[root@localhost zookeeper]# cp -rf zookeeper-3.4.14 zookeeper-02
[root@localhost zookeeper]# cp -rf zookeeper-3.4.14 zookeeper-03
[root@localhost zookeeper]# ll
drwxr-xr-x. 15 root root     4096 1121 06:37 zookeeper-01
drwxr-xr-x. 15 root root     4096 1121 06:38 zookeeper-02
drwxr-xr-x. 15 root root     4096 1121 06:38 zookeeper-03
drwxr-xr-x. 15 2002 2002     4096 1120 21:59 zookeeper-3.4.14
-rw-r--r--.  1 root root 37676320 1120 21:50 zookeeper-3.4.14.tar.gz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

② 配置每一个Zookeeper 的dataDir(zoo.cfg) clientPort 分别为2181 2182 2183:

[root@localhost zookeeper]# cd zookeeper-01
[root@localhost zookeeper-01]# cd conf/
[root@localhost conf]# vi zoo.cfg
  • 1
  • 2
  • 3
dataDir=/opt/zookeeper/zookeeper-01/data
clientPort=2181
  • 1
  • 2
[root@localhost zookeeper]# cd zookeeper-02
[root@localhost zookeeper-02]# cd conf/
[root@localhost conf]# vi zoo.cfg
  • 1
  • 2
  • 3
dataDir=/opt/zookeeper/zookeeper-02/data
clientPort=2182
  • 1
  • 2
[root@localhost zookeeper]# cd zookeeper-03
[root@localhost zookeeper-03]# cd conf/
[root@localhost conf]# vi zoo.cfg
dataDir=/opt/zookeeper/zookeeper-03/data
clientPort=2183
  • 1
  • 2
  • 3
  • 4
  • 5

③ 在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是0、1、2 。这个文件就是记录每个服务器的ID

[root@localhost zookeeper]# cd zookeeper-01
[root@localhost zookeeper-01]# cd data/
[root@localhost data]# vi myid
0
  • 1
  • 2
  • 3
  • 4
root@localhost zookeeper]# cd zookeeper-02
[root@localhost zookeeper-02]# cd data/
[root@localhost data]# vi myid
1
  • 1
  • 2
  • 3
  • 4
[root@localhost zookeeper-03]# cd data/
[root@localhost data]# ll
drwxr-xr-x. 2 root root 32 1121 06:38 version-2
-rw-r--r--. 1 root root  5 1121 06:38 zookeeper_server.pid
[root@localhost data]# vi myid
2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

④ 在每一个zookeeper 的 zoo.cfg配置集群服务器IP列表:

server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口

后面的两个端口在三个节点中只要不同即可,服务器ID就是myid文件中的值。

[root@localhost zookeeper-03]# cd conf/
-rw-r--r--. 1 root root  535 1121 06:38 configuration.xsl
-rw-r--r--. 1 root root 2161 1121 06:38 log4j.properties
-rw-r--r--. 1 root root  940 1121 06:45 zoo.cfg
[root@localhost conf]# vi zoo.cfg
  • 1
  • 2
  • 3
  • 4
  • 5
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zookeeper-03/data
clientPort=2183
# 添加集群服务器IP列表
server.0=127.0.0.1:2888:3888
server.1=127.0.0.1:2889:3889
server.2=127.0.0.1:2890:3890
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
[root@localhost zookeeper]# cd zookeeper-01
[root@localhost zookeeper-01]# cd conf/
[root@localhost conf]# vi zoo.cfg
  • 1
  • 2
  • 3
# 添加集群服务器IP列表
server.0=127.0.0.1:2888:3888
server.1=127.0.0.1:2889:3889
server.2=127.0.0.1:2890:3890
  • 1
  • 2
  • 3
  • 4
[root@localhost zookeeper]# cd zookeeper-02
[root@localhost zookeeper-02]# cd conf/
[root@localhost conf]# vi zoo.cfg
  • 1
  • 2
  • 3
# 添加集群服务器IP列表
server.0=127.0.0.1:2888:3888
server.1=127.0.0.1:2889:3889
server.2=127.0.0.1:2890:3890
  • 1
  • 2
  • 3
  • 4

⑤ 启动集群:启动集群就是分别启动每个实例,启动后我们查询一下每个实例的运行状态。

注意:必须三个服务同时启动,再查看状态,否则在查看状态时会报错 Error contacting service. It is probably not running.

# 启动服务zookeeper-01
[root@localhost zookeeper-01]# cd bin
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-01/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 43813.
# 启动服务zookeeper-02
[root@localhost zookeeper-02]# cd bin
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 启动服务zookeeper-03
[root@localhost zookeeper-03]# cd bin
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

查看集群节点状态:

# follower节点
[root@localhost zookeeper]# cd zookeeper-01/bin
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-01/bin/../conf/zoo.cfg
Mode: follower

# leader节点
[root@localhost bin]# cd ../..
[root@localhost zookeeper]# cd zookeeper-02/bin
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-02/bin/../conf/zoo.cfg
Mode: leader

# follower节点
[root@localhost bin]# cd ../..
[root@localhost zookeeper]# cd zookeeper-03/bin
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-03/bin/../conf/zoo.cfg
Mode: follower
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2. Kafka 集群搭建

① 将解压后的kafka_2.12-2.2.1目录复制到以下三个目录:kafka-01、kafka-02、kafka-03

[root@localhost bin]# cd /opt/kafka/
[root@localhost kafka]# ll
drwxr-xr-x. 7 root root      101 1120 22:16 kafka_2.12-2.2.1
-rw-r--r--. 1 root root 57054917 1120 22:09 kafka_2.12-2.2.1.tgz
[root@localhost kafka]# cp -rf kafka_2.12-2.2.1 kafka-01
[root@localhost kafka]# cp -rf kafka_2.12-2.2.1 kafka-02
[root@localhost kafka]# cp -rf kafka_2.12-2.2.1 kafka-03

[root@localhost kafka]# ll
drwxr-xr-x. 7 root root      101 1121 07:35 kafka-01
drwxr-xr-x. 7 root root      101 1121 07:35 kafka-02
drwxr-xr-x. 7 root root      101 1121 07:35 kafka-03
drwxr-xr-x. 7 root root      101 1120 22:16 kafka_2.12-2.2.1
-rw-r--r--. 1 root root 57054917 1120 22:09 kafka_2.12-2.2.1.tgz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

② 修改每个节点的 server.properties 配置文件:

broker.id=0
# 允许外部端口连接                                            
listeners=PLAINTEXT://192.168.38.22:9092  
# 外部代理地址                                                
advertised.listeners=PLAINTEXT://192.168.38.22:9092
host.name=localhost
port=9092
log.dirs=/opt/kafka/kafka-01/logs
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
broker.id=1
# 允许外部端口连接                                            
listeners=PLAINTEXT://192.168.38.22:9093
# 外部代理地址                                                
advertised.listeners=PLAINTEXT://192.168.38.22:9093
host.name=localhost
port=9093
log.dirs=/opt/kafka/kafka-02/logs
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
broker.id=2
# 允许外部端口连接                                            
listeners=PLAINTEXT://192.168.38.22:9094  
# 外部代理地址                                                
advertised.listeners=PLAINTEXT://192.168.38.22:9094
host.name=localhost
port=9094
log.dirs=/opt/kafka/kafka-03/logs
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

③ 打开3个终端控制台启动每个kafka实例:

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 创建主题topic

[root@localhost kafka-01]# bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 3 --replication-factor 3
Created topic test.

[root@localhost kafka-01]# bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
Topic:test      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 2       Replicas: 2,0,1 Isr: 2,0,1
        Topic: test     Partition: 1    Leader: 0       Replicas: 0,1,2 Isr: 0,1,2
        Topic: test     Partition: 2    Leader: 1       Replicas: 1,2,0 Isr: 1,2,0
[root@localhost kafka-01]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/968223
推荐阅读
相关标签
  

闽ICP备14008679号