Kafka基础之简单搭建

环境准备

单机Kafka搭建

注意事项:

  • 配置主机名和IP映射
  • 关闭防火墙&防火墙开机自启动

配置基础环境

  1. 安装JDK,并配置好环境变量,最好先确认是否有Java,可以把老版本的卸载。

rpm包安装:rpm -ivh jdk-8u291-linux-aarch64.rpm
tar.gz包安装:tar -zxvf jdk-8u291-linux-aarch64.tar.gz
Java的安装目录,假设是/usr/java/jdk-8u291这样。

环境变量可以在当前用户级别配置即.bashrc文件,也可以去全局配置/etc/profile下配置。
这里以.bashrc为例:
JAVA_HOME=/usr/java/jdk-8u291
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PPATH

最后要让改的配置生效source .bashrc

  1. 修改配置下的主机名和IP映射

主机名在/etc/sysconfig/network下。
修改主机名:HOSTNAME=CentOS主机名随便取,这里叫CentOS。
IP映射在/etc/hosts下。
修改IP映射:192.168.181.128 CentOS,跟windows一样的配法。

  1. 关闭防火墙和防火墙的自启。

先使用systemctl firewalld status可以查看防火墙状态。
直接systemctl firewalld stop可以关闭防火墙。
最后systemctl disabled firewalld可以关闭防火墙的开机自启。

这里如果不想关闭防火墙,还可以自己暴露端口出去,使用firewall-cmd命令。
如果提升命令没有,需要先安装yum install -y firewalld firewalld-config
开启端口:firewall-cmd --zone=public --add-port=9092/tcp --permanent,可以自己添加。
移除端口:firewall-cmd --zone=public --remove-port=9092/tcp --permanent也可移除。
重启防火墙生效:firewall-cmd --reload或者systemctl firewalld restart重启。

  1. 配置zookeeper。

下载的tar.gz包先解压:tar -zxvf zookeeper-3.6.3.tar.gz
Zookeeper的安装目录,假设是/usr/zookeeper-3.6.3这样。

zookeeper的模板配置文件:/usr/zookeeper-3.6.3/conf/zoo_sample.cfg
复制一份模板配置文件在同目录下:zoo.cfg。
修改zoo.cfg的选项:dataDir=/root/zkdata变更数据目录。
使用./usr/zookeeper-3.6.3/bin/zkServer.sh可以启动zk了。
例:./bin/zkServer.sh start conf/zoo.cfg启动zk。

  1. 配置Kafka

下载的tar.gz包先解压:tar -zxvf kafka_2.11-2.6.2.tgz
kafka的安装目录,假设是/usr/kafka_2.11-2.6.2这样。

kafka的模板配置文件:/usr/kafka_2.11-2.6.2/conf/server.properties
修改server.properties选项:listeners=PLAINTEXT://CentOS:9092socket连接地址,这里最好填主机名,不要IP
修改server.properties选项:log.dirs=/usr/kafka-logs消息日志存储地址。
修改server.properties选项:zookeeper.connect=CentOS:2181zk连接配置。
使用./usr/kafka_2.11-2.6.2/bin/kafka-server-start.sh可以启动kafka了。
例:./bin/kafka-server-start.sh -daemon config/server.properties后台启动。

配置Topic

使用Kafka的kafka-topics.sh脚本来执行topic,分区,副本因子等配置。

连接上Broker服务器:./bin/kafka-topics.sh --bootstrap-server CentOS:9092 --create --topic topic01 --partitions 2 --replication-factor 1,创建了一个topic为topic01的主题,该topic下配置了2个分区日志数,同时为每一个分区日志配置了一个副本,CentOS作为Broker服务器主分区的Leader。

消费者开启:./bin/kafka-console-consumer.sh --bootstrap-server CentOS:9092 --topic topic01 --group group1,创建了一个消费者实例,消费topic为topic01这个主题下的消息,位于group1这个消费者组下,连接Broker服务器CentOS,这个时候group1只有一个消费者实例,所以会同时消费2个分区的数据。

生产者开启:./bin/kafka-console-producer.sh --broker-list CentOS:9092 --topic topic01,创建了一个生产者,将要想topic为topic01这个主题下投递消息,并连接当前主题的Broker服务器CentOS。

集群Kafka搭建

注意事项(包含以上):

  • 配置同步时钟:ntpdate cn.pool.ntp.orgntpdate ntp[1-7].aliyun.com[]里选填一个值就行。

集群间配置

  1. 在hosts文件中配置上多个服务器的IP映射

192.168.181.128 CentOSA,192.168.181.129 CentOSB,192.168.181.130 CentOSC等几台都可,这里是3台。
同理集群中的其他服务器也需要这么配置。

  1. 配置zookeeper的配置文件zoo.cfg

在zoo.cfg后新增:server.1=CentOSA:2888:3888server.2=CentOSA:2888:3888server.3=CentOSA:2888:3888等服务器的地址。
同理*3
2181端口:对cline端提供服务
2888端口:集群内机器通讯使用(Leader监听此端口)
3888端口:选举leader使用

  1. 配置Kafka集群

修改server.properties选项:zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181zk服务器连接配置,都配置上。
同理*3
修改server.properties选项:broker.id=1broker.id=1broker.id=2几个Broker的ID需要唯一配置。

集群间配置topic

和单机版差不多的使用方式。多多利用命令–help,啥都有。还有官方文档可以查阅。

小结

试了一下搭建,主要理解一下大致的运作,试试就好。