“这是我参与更文挑战的第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的时候报无法加载类!!!
zookeeper.apache.org/releases.ht…
下载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配置文件。
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了。
分别在3台机器上启动zk
/soft/zookeeper/bin/zkServer.sh start &
查看zk集群状态
/soft/zookeeper/bin/zkServer.sh status
kafka集群搭建与使用
下载
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
查看主题topic信息
查看topic为moe的信息
./kafka-topics.sh --bootstrap-server s201:9092 --topic moe --describe
- Leader节点负责给定partition的所有读写请求。
- Replicas表示某个partition在哪几个broker上存在备份。不管这几个是不是leader,甚至这个节点挂了,也会列出。
- isr是replicas的一个子集,它只列出当前还存活的,并且已同步备份了改partition的节点。
发送消息
向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
总结
本篇介绍了kafka的集群搭建与zk的集群搭建,也可以安装伪集群,启动的时候加载不同的配置文件即可,配置文件中的端口等注意不一样即可搭建成伪集群。
欢迎大家关注公众号(MarkZoe)互相学习、互相交流。