话不多说,我们这里就用一台机器模仿启动三个kafka 服务,然后用一个zookeeper做注册中心来管理三台broker,实现kafka集群。
准备
一台centos 服务器,启动后的IP地址为:
192.168.1.91
JDK 1.8环境,安装方式忽略。
-
Zookeeper环境
这里我们自己下载一个单独的zookeeper,不使用kafka自带的。
- 下载并解压:
cd /usr/local/ mkdir -p soft cd soft/ curl https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz tar –xZvf apache-zookeeper-3.6.2-bin.tar.gz
- 修改配置文件
cd apache-zookeeper-3.6.2-bin/conf/ cp zoo_sample.cfg zoo.cfg
端口默认是2181,配置文件中的dataDir如果要修改,就去创建相应的目录。
mkdir -p /tmp/zookeeper
- 开启zookeeper服务
cd ../bin ./zkServer.sh start 输出日志: ZooKeeper JMX enabled by default Using config: /usr/local/soft/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
- 验证服务
./zkServer.sh status
-
Kafka
下载kafka安装包并修改配置文件。- 下载并解压
cd /usr/local/soft/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.1/kafka_2.12-2.6.1.tgz tar -xvzf kafka_2.12-2.6.1.tgz cd kafka_2.12-2.6.1/
- 修改配置文件
复制三个配置文件,作为三个broker服务的配置文件
cd config/ cp server.properties server1.properties cp server.properties server1.properties cp server.properties server1.properties
1)分别修改三个文件的broker.id 为1,2,3。
2)取消listeners这一行的注释,端口分别修改为9093,9094,9095
3)log.dirs分别设置为kafka-logs1,kafka-logs2, kafka-logs3.
创建这几个log目录,其实就是消息存放的目录。mkdir -p /tmp/kafka-logs1 /tmp/kafka-logs2 /tmp/kafka-logs3 cd ../ mkdir logs
- 启动三个服务,并
cd ../bin/ nohup ./kafka-server-start.sh ../config/server1.config >> ../logs/sever1.log & nohup ./kafka-server-start.sh ../config/server2.config >> ../logs/sever2.log & nohup ./kafka-server-start.sh ../config/server3.config >> ../logs/sever3.log &
- 检查状态
分别检查三个kafka server log文件,查看是否正常启动
less ../logs/server1.log ps -ef | grep zoo
如果服务都正常启动,应该会有四个服务,一个zookeeper 服务, 三个kafka服务。
测试
- 创建一个topic,3个副本,2个分区。
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 2 --topic yq3rep2part
- 查看创建的topic
./kafka-topics.sh -list -zookeeper localhost:2181
./kafka-topics.sh --describe --topic yq3rep2part --zookeeper localhost:2181
并且可以去/tmp/kafka-logs1/ 、/tmp/kafka-logs2/ 、/tmp/kafka-logs3/ 验证,每个目录下面都有如下2个文件。
- 回到kafka安装目录bin/,并启动Consumer.
./kafka-console-consumer.sh --bootstrap-server 192.168.1.91:9093,192.168.1.91:9094,192.168.1.91:9095 --topic yq3rep2part --from-beginning
- 新建一个窗口,并在kafka的bin目录下执行如下命令,启动Producer.
./kafka-console-producer.sh --broker-list 192.168.1.91:9093,192.168.1.91:9094,192.168.1.91:9095 --topic yq3rep2part
然后再控制台打印Hello, World~
,就可以看到consumer 窗口也自动显示出来Hello, World~
。
至此Kafka伪集群搭建成功。