导读

kafka集群安装,从本质上来讲,由一套多节点zookeeper集群和一套多节点Kafka集群组成组成,

如图:

搭建kafka集群无从下手?来看这篇就知道了_java

kafka集群共依赖三部分内容:jdk,zookeeper,kafka。zookeeper集群是难点,需要特别注意。

集群环境介绍主机信息

搭建kafka集群无从下手?来看这篇就知道了_java_02

软件版本信息

搭建kafka集群无从下手?来看这篇就知道了_java_03

开始集群部署基础信息配置修改host信息

配置host内容如下192.168.6.84 kafka-1192.168.6.85 kafka-2192.168.6.86 kafka-3

关闭防火墙,禁止开机启动

关闭防火墙:systemctl stop firewalld.service禁止开机自启:systemctl disable firewalld.service

安装jdk

创建统一的目录层级:三个目录统一在/opt/apps路径下:jdk安装非常简单,这里不做介绍,如果不熟悉的可以网上查看相关资料。jdk安装成功的标识为,执行java -verion 可以显示相关信息:

安装zookeeper

安装形式有多种,这里使用离线包的形式。将安装包上传到/opt/apps/zk路径下,并执行解压命令:tar -xvf zookeeper-3.4.14.tar.gz刚解压完的zk中conf 文件夹内容如下:第一步,需要将zoo_sample.cfg 复制一份重命名为zoo.cfg执行命令:cp zoo_sample.cfg zoo.cfg搭建kafka集群无从下手?来看这篇就知道了_java_04修改zoo.cfg内容。修改完zoo.cfg内容为:搭建kafka集群无从下手?来看这篇就知道了_java_05将zoo.cfg 拷贝到其他主机:scp zoo.cfg root@192.168.6.85:/opt/apps/zk/zookeeper-3.4.14/conf/scp zoo.cfg root@192.168.6.86:/opt/apps/zk/zookeeper-3.4.14/conf/在集群中所有节点的zoo.cfg内容是相同的。zoo.cfg属性介绍:tickTime:属性作为是对应session保存时间为这个时间的2倍,单位毫秒initLimit :参数为:Follower节点启动的时候,会到leader节点同步数据,领导者端只允许在这个设置的时间内同步完数据,否则不任务加入zk队列中.syncLimit:为领导者定期去检查时间其下节点是否状态还正常.另外:还需要配置dataLogDir 参数,在生产环境下一定要配置.是记录事物日志的.这个会单独挂载到一个磁盘上.dataDir:为对应主机的数据文件夹.因为有三台zk,所以有三个serverserver.1 server.2 server.3 其中数据 1 2 3 就是对应节点的id号,因为这个id值作为标识,分别在对应文件夹中记录对应id的内容.这里需要特别注意:在集群环境下,需要在对应的文件夹下建立一个myid 文件(touch myid)里面内容分别为server.Id的值,比如,zk文件夹下,myid 内容为 1 依次类推,分别为 2 3上述:server 命名中 ip:port1:port2其中第一个端口号为zk 中各服务通信的端口号,是leader与Follower之间通信的端口号, 第二个端口号为zk与zk之间通信的端口号.比如第1个端口:主从之间的数据同步比如第二个端口,在zk与zk之间需要投票,其中第二个端口是这个作用,这个是zk与zk间的通信.启动前先创建日志存储路径(三台主机同步操作):mkdir –p /opt/data/zk/logs配置完,启动对应zk。执行后台启动命令:nohup sh zkServer.sh start >> /opt/data/zk/logs/log.log 2>&1 &并查看日志:如下信息表示启动完成:三台依次启动后,查看对应的状态:再bin路径下:Sh zkServer.sh status84主机:85 主机:86 主机:
由此可见,85主机为zk集群的leader

       也可通过ps -ef|grep zookeeper 命令查看zk进程是否正常:

  在启动后,对应bin文件夹下,会默认生成zk的启动日志:

Zk 集群安装完成。

Kafka集群

多节点安装kafka比安装多节点zookeeper要简单得多,只需要创建多份配置文件,然后指定他们启动kafka服务即可。首先创建日志存储路径(三个节点同时操作):mkdir –p /opt/logs/kafkakafka 节点集群搭建只需要修改server.properties即可。三台主机的配置详情为:84主机的server.properties为:搭建kafka集群无从下手?来看这篇就知道了_java_0685主机的server.properties为:
搭建kafka集群无从下手?来看这篇就知道了_java_0786主机的server.properties为:
搭建kafka集群无从下手?来看这篇就知道了_java_08上面属性中除了break.id 必须唯一外,其他配置相同。server.properties 配置完成后可启动kafka服务。后台启动命令:sh ./bin/kafka-server-start.sh -daemon ./config/server.properties查看启动日志:启动命令执行后,kafka会自动在解压目录下新建logs目录存放相关日志执行完查看启动日志:logs 目录下(启动日志没有放到刚才server.properties配置的log.dirs r中,就是再kafka解压目录的logs里面)确认kafka启动成功:tail -500f server.log搭建kafka集群无从下手?来看这篇就知道了_java_09

  也可使用jps来确认kafka启动是否成功:

搭建kafka集群无从下手?来看这篇就知道了_java_10其他主机依次按照上述操作启动。至此kafka集群搭建完成。

验证集群

随便找一台主机创建topicsh ./bin/kafka-topics.sh --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181 --describe --topic test-container-topic1然后执行命令://查看集群中topic总集:sh ./bin/kafka-topics.sh --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181 –list//查看topic名为 topic test-container-topic1 的详细信息sh ./bin/kafka-topics.sh --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181 --describe --topic test-container-topic1如果上述命令正常返回,那么,集群搭建成功。

以上,本次全部内容。