从零开始搭建 Kafka集群

13天前 19.2k 0

一、搭建设计

从零开始搭建 Kafka集群-1图片

1.1. 机器分配

  • kafka1(192.168.150.111)
  • kafka2(192.168.150.112)
  • kafka3(192.168.150.113)

1.2.linux安装以及Jdk安装

二、修改Linux主机名称

hostnamectl set-hostname kafka1
hostnamectl set-hostname kafka2
hostnamectl set-hostname kafka3

三、配置主机名映射

在Windows系统中修改hosts文件,填入如下内容:

192.168.150.111 kafka1
192.168.150.112 kafka2
192.168.150.113 kafka3

从零开始搭建 Kafka集群-2图片

image

从零开始搭建 Kafka集群-3图片

在3台Linux的/etc/hosts文件中,填入如下内容(3台都要添加)。

192.168.150.111 kafka1
192.168.150.112 kafka2
192.168.150.113 kafka3

四、配置SSH免密登录

后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆。

在每一台机器都执行:

ssh-keygen -t rsa -b 4096

一路回车到底即可 2. 在每一台机器都执行:

ssh-copy-id kafka1
ssh-copy-id kafka2
ssh-copy-id kafka3

执行完毕后,kafka1、kafka2、kafka3之间将完成root用户之间的免密互通。

  • 测试免密登录 完成以上步骤后,你应该能够使用SSH免密登录到目标服务器了。只需执行以下命令:ssh 用户名@remote_host。
ssh rootmkafka1
ssh root@kafka2
ssh root@kafka3

五、修改时区并配置自动时间同步

#1. 安装ntp软件
yum install -y ntp
#2. 更新时区
rm -f /etc/localtime;sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#3. 同步时间
ntpdate -u ntp.aliyun.com
#4. 开启ntp服务并设置开机自启
systemctl start ntpd
systemctl enable ntpd

六、VMware虚拟机集群上部署Zookeeper集群

当前使用发行版:3.8.4版。

可以在https://downloads.apache.org/zookeeper/选择对应版本下载:

从零开始搭建 Kafka集群-4图片

注意:以下操作,kafka1节点执行,以root身份登陆。

1.上传zookeeper安装包到kafka1节点中。

2.创建/export/server/。

mkdir -p /export/server/

解压缩安装包到/export/server/中。

tar -zxvf apache-zookeeper-3.8.4.tar.gz -C /export/server/

3.在 cd /export/server/apache-zookeeper-3.8.4-bin/conf/创建zoo.cfg。

# 复制zoo_sample.cfg命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg

4.修改Zookeeper保存数据的目录。

mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data

5.编辑zoo.cfg文件。

vim zoo.cfg

内容如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/export/server/apache-zookeeper-3.8.4-bin/data
# the port at which the clients will connect
clientPort=2181
server.1=192.168.150.111:2888:3888
server.2=192.168.150.112:2888:3888
server.3=192.168.150.113:2888:3888

从零开始搭建 Kafka集群-5图片

创建myid文件,配置服务器编号 服务器zookeeper的dataDir对应目录下创建 myid 文件,内容为对应ip的zookeeper服务器编号。

mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data
echo 1 > /export/server/apache-zookeeper-3.8.4-bin/data/myid

7.分发zookeeper文件夹

# 在kafka1执行如下命令
cd /export/server
scp -r  /export/server/apache-zookeeper-3.8.4-bin kafka2:`pwd`/

scp -r  /export/server/apache-zookeeper-3.8.4-bin kafka3:`pwd`/

8.在kafka2上修改myid

echo 2 > /export/server/apache-zookeeper-3.8.4-bin/data/myid

9.在kafka3上修改myid

echo 3 > /export/server/apache-zookeeper-3.8.4-bin/data/myid

七、VMware虚拟机集群上部署Kafka集群

本次使用的Kafka版本为2.4.1,是2020年3月12日发布的版本。 可以注意到Kafka的版本号为:kafka_2.12-2.4.1,因为kafka主要是使用scala语言开发的,2.12为scala的版本号。http://kafka.apache.org/downloads可以查看到每个版本的发布时间。

从零开始搭建 Kafka集群-6图片

1.将Kafka的安装包上传到虚拟机。

tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/
 cd /export/server/kafka_2.12-2.4.1/

2.修改 server.properties。

cd /export/server/kafka_2.12-2.4.1/config
vim server.properties

内容如下:

# 指定broker的id
broker.id=0
# 指定Kafka数据的位置
log.dirs=/export/server/kafka_2.12-2.4.1/data
# 配置zk的三个节点
zookeeper.cnotallow=kafka1:2181,kafka2:2181,kafka3:2181

3.将安装好的kafka复制到另外两台服务器。

cd /export/server
scp -r apache-zookeeper-3.8.4 kafka2:`pwd`/

scp -r apache-zookeeper-3.8.4 kafka3:`pwd`/

4.修改另外两个节点的broker.id分别为1和2。

---------kafka1--------------
cd /export/server/kafka_2.12-2.4.1/config
vim erver.properties
broker.id=1
---------kafka2--------------
cd /export/server/kafka_2.12-2.4.1/config
vim erver.properties
broker.id=2

八、配置Zookeeper和KAFKA_HOME环境变量

vim /etc/profile
JAVA_HOME=/export/server/jdk1.8.0_361
KAFKA_HOME=/export/server/kafka_2.12-2.4.1
ZOKEEPER_HOME=/export/server/apache-zookeeper-3.8.4-bin/
PATH=$PATH:$JAVA_HOME/bin:$KAFKA_HOME/bin:$ZOKEEPER_HOME/bin
export PATH


分发到各个节点
scp /etc/profile kafka2:$PWD
scp /etc/profile kafka2:$PWD
每个节点加载环境变量
source /etc/profile

九、启动Zookeeper

1.在三台机器上启动Zookeeper。

zkServer.sh start

从零开始搭建 Kafka集群-7图片

2.在三台机器上查看Zookeeper状态。

zkServer.sh status

从零开始搭建 Kafka集群-8图片

从零开始搭建 Kafka集群-9图片

十、启动Kafka

[root@kafka1 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties

[root@kafka2 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties


[root@kafka3 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties

kafka1节点的Cluster Id:

从零开始搭建 Kafka集群-10图片

kafka2节点的Cluster Id:

从零开始搭建 Kafka集群-11图片

kafka3节点的Cluster Id:

从零开始搭建 Kafka集群-12图片

十一、查看Kakka队列

1.创建主题(名字叫test):

kafka-topics.sh --create --bootstrap-server kafka1:9092 --topic test

2.查询当前kafka的所有主题:

kafka-topics.sh --bootstrap-server kafka3:9092 --list

相关文章

OpenTelemetry并非可观测性的“神奇按钮”
Python 对象的行为是怎么区分的?
面试官:你能实现一个 JavaScript 模板引擎吗?
记一次 .NET某工控WPF程序被人恶搞的卡死分析
每个前端开发人员都应该了解的软件工程原理
一图胜千言!深度掌握 Python 绘图

发布评论