Kafka第二篇-Kafka集群搭建

1,571 阅读4分钟

“这是我参与更文挑战的第23天,活动详情查看: 更文挑战

本篇是Kafka的第二篇,主要介绍下kafka的集群搭建及使用。上一篇为kafka第一篇-初识kafka

环境准备

JDK的安装

由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK。

yum install java-1.8.0-openjdk* -y

zookeeper集群搭建

kafka之前的版本依赖zookeeper,所以需要先安装zookeeper,现在kafka最新版本不在依赖于zk了!!!

安装最新版的zk,大家注意下下载文件。下载xx.bin.tar.gz的!!!不然会有出现意想不到的问题!!!,比如安装完了zk,自动zk的时候报无法加载类!!!

image.png

zookeeper.apache.org/releases.ht…

image.png

下载zk

zk地址:mirrors.bfsu.edu.cn/apache/zook…

wget https://mirrors.bfsu.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz

解压zk

tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

创建软连接

此步骤可无,个人习惯而已。

ln -s /soft/apache-zookeeper-3.6.3-bin /soft/zookeeper

创建配置文件

进入zk的目录下,复制zoo_sample.cfg配置文件。

image.png

cp zoo_sample.cfg zoo.cfg

为啥叫这个名字,因为zk服务启动的时候会加载这个zoo.cfg的文件,看服务启动时候的演示。

修改配置文件

提前创建好data和logs目录

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

server.1=s201:8888:6666
server.2=s202:8888:6666
server.3=s203:8888:6666

server.x=A:B:C

  • x:其中x是一个数字,表示这是第几号server,它的值和myid文件中的值对应。
  • A:该server所在的域名或IP地址。
  • B:该server和集群中的leader交换消息所使用的的端口。
  • C:配置选举leader时所使用的端口。

具体zk的相关知识会在zk的篇章里介绍,在这里就不过多介绍了。

创建myid

进入data目录,创建myid文件,内容对应server上的x。

echo 1 > myid

数据同步其他2个节点

分发zk到其它2个节点

scp -r apache-zookeeper-3.6.3-bin root@s202:/soft/
scp -r apache-zookeeper-3.6.3-bin root@s203:/soft/

其它2个server上创建软连接

ssh s202 ln -s /soft/apache-zookeeper-3.6.3-bin /soft/zookeeper
ssh s203 ln -s /soft/apache-zookeeper-3.6.3-bin /soft/zookeeper

备注:其他2个server上的myid不要忘了修改。

启动zk集群

有条件的话就搭建zk集群,资源紧张的话,搭建zk伪集群也可以。只不过启动的时候加载相应的配置文件即可,配置文件里有冲突的地方,比如端口、数据、日志,区分开即可。

bin/zkServer.sh直接回车,就看到为啥配置文件是zoo.cfg了。

image.png

分别在3台机器上启动zk

/soft/zookeeper/bin/zkServer.sh start &

查看zk集群状态

/soft/zookeeper/bin/zkServer.sh status

image.png

kafka集群搭建与使用

下载

kafka.apache.org/downloads.h…

wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz

解压

tar -zxvf kafka_2.13-2.8.0.tgz

创建软连接

可与可无,个人习惯。

ln -s /soft/kafka_2.13-2.8.0 /soft/kafka

修改server.properties文件

conf/server.properties

创建好/soft/kafka/kafka-logs目录

broker.id=1
listeners=PLAINTEXT://s201:9092
log.dirs=/soft/kafka/kafka-logs
zookeeper.connect=s201:2181,s202:2181,s203:2181

同步数据到其它2个节点上

scp -r kafka_2.13-2.8.0 root@s202:/soft/
scp -r kafka_2.13-2.8.0 root@s203:/soft/

ssh s202 ln -s /soft/kafka_2.13-2.8.0 /soft/kafka
ssh s203 ln -s /soft/kafka_2.13-2.8.0 /soft/kafka

修改sever2和server3的信息

# sever2
broker.id=2
listeners=PLAINTEXT://s202:9092
log.dirs=/soft/kafka/kafka-logs
zookeeper.connect=s201:2181,s202:2181,s203:2181

# sever3
broker.id=3
listeners=PLAINTEXT://s203:9092
log.dirs=/soft/kafka/kafka-logs
zookeeper.connect=s201:2181,s202:2181,s203:2181

启动

分别在3台server上启动

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

创建主题topic

创建一个名字为moe的Topic,这个topic只有一个partition,副本也为一个

./kafka-topics.sh 回车,看详细信息就知道参数都有哪些,哪些是必须的。

./kafka-topics.sh --bootstrap-server s201:9092 --create --topic moe --partitions 1 --replication-factor 1

image.png

查看主题topic信息

查看topic为moe的信息

./kafka-topics.sh --bootstrap-server s201:9092 --topic moe --describe

image.png

  • Leader节点负责给定partition的所有读写请求。
  • Replicas表示某个partition在哪几个broker上存在备份。不管这几个是不是leader,甚至这个节点挂了,也会列出。
  • isr是replicas的一个子集,它只列出当前还存活的,并且已同步备份了改partition的节点。

image.png

发送消息

向topic为moe的主题发送消息。

./kafka-console-producer.sh --bootstrap-server s201:9092 --topic moe

会进入控制台,等待用户的输入。

消费消息

消费主题topic为moe的消息。

/soft/kafka/bin/kafka-console-consumer.sh --bootstrap-server s201:9092 --topic moe --from-beginning

image.png

总结

本篇介绍了kafka的集群搭建与zk的集群搭建,也可以安装伪集群,启动的时候加载不同的配置文件即可,配置文件中的端口等注意不一样即可搭建成伪集群。

欢迎大家关注公众号(MarkZoe)互相学习、互相交流。