ITPub博客

首页 > 大数据 > 数据分析 > kafka配置步骤整理

kafka配置步骤整理

数据分析 作者:strivechao 时间:2020-09-23 14:59:47 0 删除 编辑

目录

一、参考

二、java jdk安装配置

三、Zookeeper安装配置

四、Kafka集群搭建

五、测试验证

 

一、参考

http://www.cnblogs.com/luotianshuai/p/5206662.html

http://www.cnblogs.com/huxi2b/p/7382144.html

http://www.cnblogs.com/huxi2b/p/7427815.html

https://blog.csdn.net/jsjsjs1789/article/details/53161985

https://streamsets.com/blog/fast-easy-access-secure-kafka-clusters/

二、java jdk安装配置

(3台都需要执行)

将jdk-8u144-linux-x64.tar.gz 压缩包放到/usr/java目录下

1.      解压缩

2.      得到jdk1.8.0_144 文件夹

3  使用vim 编辑 /etc/profile  ,在文件的末尾添加以下语句,配置java环境变量,为后续操作准备

export JAVA_HOME=/usr/java/jdk1.8.0_144

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

4.      使 /etc/profile文件生效

5.      查看配置是否成功出现这个信息,说明配置成功

 

三、Zookeeper安装配置

1.      Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。

2.      软件环境

(1)centos 虚拟机-我的测试)ip地址

192.168.201.128

192.168.201.130

192.168.201.131

(2)java 环境

(3) 使用的版本 zookeeper-3.4.10.tar.gz

3.在每一台机子上创建zookeeper目录(我是放在/opt目录 )

mkdir zookeeper #项目目录

然后进入到zookeeper 目录下创建

mkdir zkdata #存放快照日志

mkdir zkdatalog#存放事物日志

4.下载zookeeper到/opt/zookeeper目录下并解压

得到zookeeper-3.4.10目录

5. 修改配置文件

进入到解压好的目录里面的conf目录中,查看

复制其中的zoo_sample.cfg 文件并将其命名为zoo.cfg

注:zoo_sample.cfg 这个文件是官方给我们的zookeeper的样板文件,zoo.cfg是官方指定的文件命名规则。

使用vim 打开zoo.cfg,并修改为如下图所示配置

注:

#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里

#192.168.201.128为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888,然后我将这两个默认的端口改成12888 和13888

#修改dataDir 的值为刚才创建的zkdata目录,这是快照日志的存储路径

#修改dataLogDir 的值为刚才创建的zkdatalog目录,这是事物日志的存储路径

#clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。如2181端口已被使用,则修改他的端口 ,改为12181

 

在每一台服务器上的zkdata目录下创建无后缀名的 myid 文件,

并使用以下命令将serverid写入  myid 文件内

第一台服务器上执行

echo "1" > /opt/zookeeper/zkdata/myid  (执行这行就可以将serverid写入 myid文件内)

第二台服务器上执行

echo "2" > /opt/zookeeper/zkdata/myid

第三台服务器上执行

echo "3" > /opt/zookeeper/zkdata/myid

 

6. 进入到Zookeeper的bin目录下,启动服务(3台都需要操作)

每台虚拟机都启动zookeeper服务之后,才能执行以下命令查看zookeeper的状态,出现以下信息则说明启动成功,否则会出现错误信息(需停掉防火墙)。

有三种状态

LOOKING:当前Server不知道leader是谁,正在搜寻

LEADING:当前Server即为选举出来的leader

FOLLOWING:leader已经选举出来,当前Server与之同步

zookeeper集群一般只有一个leader,多个follower,leader一般是相应客户端的读写请求,而从主同步数据,当leader挂掉之后就会从follower里投票选举一个leader出来。

 

四、Kafka集群搭建

1、软件环境

1)、linux一台或多台,大于等于2

2)、已经搭建好的zookeeper集群

3)、软件版本kafka_2.11-1.0.1.tgz

2、创建目录并下载安装软件

vi /etc/profile


#set kafak environment

export KAFKA_HOME=/usr/local/kafka_2.13-2.6.0

export PATH=$PATH:$ KAFKA_HOME/bin

source /etc/profile

#创建目录

cd /opt/

mkdir kafka #创建项目目录

cd kafka

mkdir kafkalogs #创建kafka消息目录,主要存放kafka消息

将kafka压缩包 放到 /opt/kakfa 目录中,解压软件

  3、修改配置文件

进入到kafka_2.11-1.0.1/config目录,使用vim 修改server.properties  (3台都需要修改)

设置日志文件路径

修改的配置项为:

broker.id=0  每台服务器的broker.id都不能相同 我这里 broker.id 是 0,1,20

#hostname

host.name=192.168.201.128 (对应这一台虚拟机的ip地址,这一项是需要添加进去的)

#设置zookeeper的连接端口

zookeeper.connect=192.168.201.128:12181,192.168.201.130:12181,192.168.201.131:12181(这里的ip地址及端口号是之前配置的zookeeper集群的ip地址及端口)

 

4、启动Kafka集群并测试

 

进入到kafka的bin目录(3台都需要操作)

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

执行启动 命令需要server.properties配置文件路径参数

-daemon 为隐藏信息 ,没有这个参数,屏幕会打印kafka启动日志(可能会卡在界面上)

启动后,可以使用jps命令查看服务是否启动 (需要配置java环境变量)

看到有Kafka,说明kafka启动成功,或者进入到 /opt/kafka/kafka_2.11-1.0.1/logs 目录下查看server.log 文件,如果出现报错信息,则启动失败,如果在启动过程的最后出现started 说明启动成功

测试

创建一个主题

./kafka-topics.sh --create --zookeeper 192.168.201.128:12181 --replication-factor 1 --partitions 1 --topic test

查看主题

./kafka-topics.sh --list --zookeeper 192.168.201.128:2181

发送消息

./kafka-console-producer.sh --broker-list 192.168.201.128:9092 --topic test

启动消费者接收消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

Java 代码可以参考官方的demo

这两个类

KafkaProducer

KafkaConsumer

5、配置kafka SSL

创建并进入 /opt/ssl 目录 ,然后执行以下命令

部署HTTPS的第一步是为集群中的每台计算机生成密钥和证书。

使用Java的keytool程序来实现。我们最初将密钥生成到临时密钥库中,以便稍后可以使用CA导出和签名。

(每台服务器上执行以下命令)

keytool -keystore kafka.server.keystore.jks -alias localhost -validity {validity} -genkey

keytool -keystore kafka.client.keystore.jks -alias localhost -validity {validity} -genkey

参数:

Keystore : 存储证书的密钥库文件。密钥库文件包含证书的私钥;

Validity : 以天为单位的证书有效时间。这里已经写了365天

First and last name 需要填写服务器的ip地址,比如我的是192.168.201.128

 

创建自己的CA(选择其中某一台服务器执行)

openssl req -new -x509 -keyout ca-key -out ca-cert -days 365

除了密码之外的信息可以不填

生成的CA只是一个公私密钥对和证书,并且用于签署其他证书。

将上述步骤生成的ca-cert ca-key这两个文件复制到另外两台服务器上的存放刚才密钥和证书的地方。

 

进入到/opt/ssl目录,将生成的CA添加到客户端的信任库,以便客户端可以信任此CA

keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert

keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert

 

签署证书

首先,需要从密钥库中导出证书:

keytool -keystore kafka.server.keystore.jks -alias localhost -certreq -file cert-file

然后在CA上签名:

openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 365 -CAcreateserial -passin pass:961128

365是有效天数,961128 是创建ca的时候的密码

最后,需要将CA的证书和签名证书导入密钥库:

keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert

keytool -keystore kafka.server.keystore.jks -alias localhost -import -file cert-signed

配置config/server.properties 文件

每台服务器上在server.properties文件中都添加如下配置 ,配置在如下位置:

listeners=SSL://192.168.201.130:9093(这个ip地址分别改为每台服务器的地址)

advertised.listeners=SSL://192.168.201.130:9093(这个ip也是)

ssl.keystore.location=/opt/ssl/kafka.server.keystore.jks (这是存放)

ssl.keystore.password=961128

ssl.key.password=961128

ssl.truststore.location=/opt/ssl/kafka.server.truststore.jks

ssl.truststore.password=961128

ssl.client.auth=required

ssl.keystore.type=JKS 

ssl.truststore.type=JKS 

security.inter.broker.protocol = SSL

 

要验证服务器的密钥库和信任库是否安装正确,可以运行以下命令:

openssl s_client -debug -connect localhost:9093 -tls1

localhost 改为本服务器ip地址

应该出现类似下面的输出

 

五、测试验证

配置完成后,可进行如下测试

1.创建一个主题,看到提示Created  **** ,说明创建成功

./kafka-topics.sh --create –-zookeeper 192.168.201.128:12181,192.168.201.130:12181,192.168.201.131:12181 --replication-factor 1 --partitions 1 --topic bbb

2.在当前/bin文件夹下创建producer.properties,用于在命令行中测试ssl机制(3台服务器都需要)

3.      在其中一台服务器上使用kafka提供的producer命令测试生产消息

./kafka-console-producer.sh --broker-list 192.168.201.128:9093,192.168.201.130:9093,192.168.201.131:9093 --topic bbb  --producer.config producer.properties

4.      在另外两台服务上使用如下命令测试能否消费信息

./kafka-console-consumer.sh --bootstrap-server 192.168.201.128:9093,192.168.201.130:9093,192.168.201.131:9093 --topic bbb  --consumer.config producer.properties

5.能生产消息,以及消费消息,说明SSL配置成功


管理工具

下载kafka-manager

2.2.解压

unzip kafka-manager-1.3.3.7.zip -d /data/cd /data/kafka-manager-1.3.3.7

 

2.3.修改配置 conf/application.properties

[root@kafka50 conf]# pwd/data/kafka-manager-1.3.3.7/conf
[root@kafka50 conf]# ls
application.conf  consumer.properties  logback.xml  logger.xml  nohup.out  routes
编辑配置文件application.conf
#kafka-manager.zkhosts="localhost:2181"       ##注释这一行,下面添加一行kafka-manager.zkhosts="10.0.0.50:12181,10.0.0.60:12181,10.0.0.70:12181"

 

2.4启动

bin/kafka-manager
kafka-manager 默认的端口是9000,可通过 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &

 启动过程:

  View Code

启动完毕后可以查看端口是否启动,由于启动过程需要一段时间,端口起来的时间可能会延后。

3.浏览器访问

 使用ip地址:端口访问

 

三、测试 kafka-mamager

1. 新建 Cluster

点击【Cluster】>【Add Cluster】打开如下添加集群的配置界面:

输入集群的名字(如 Kafka-Cluster-1)和 Zookeeper 服务器地址(如 localhost:2181),选择最接近的Kafka版本(如 0.8.1.1

 

注意:如果没有在 Kafka 中配置过 JMX_PORT,千万不要选择第一个复选框。
Enable JMX Polling
如果选择了该复选框,Kafka-manager 可能会无法启动。

其他broker的配置可以根据自己需要进行配置,默认情况下,点击【保存】时,会提示几个默认值为 1的配置错误,需要配置为 >=2的值。提示如下。

新建完成后,运行界面如下:

 

 TOPIC list

 

broker

 

三、管理 kafka-mamager

 3.1.新建主题

点击【Topic】>【Create】可以方便的创建并配置主题。如下显示。

接下来我们根据一张图讲解

这里写图片描述

在上图一个Kafka集群中,有两个服务器,每个服务器上都有2个分区。P0,P3可能属于同一个主题,也可能是两个不同的主题。
如果设置的Partitons和Replication Factor都是2,这种情况下该主题的分步就和上图中Kafka集群显示的相同,此时P0,P3是同一个主题的两个分区。P1,P2也是同一个主题的两个分区,Server1和Server2其中一个会作为Leader进行读写操作,另一个通过复制进行同步。
如果设置的Partitons和Replication Factor都是1,这时只会根据算法在某个Server上创建一个分区,可以是P0~4中的某一个(分区都是新建的,不是先存在4个然后从中取1个)。

 

这里我们都设置为2,点击【Create】然后进入创建的这个主题,显示如下。

 

 3.2.查看主题

点击【topic】下面的主题名称,即可查看主题


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25469263/viewspace-2723492/,如需转载,请注明出处,否则将追究法律责任。

上一篇: zookeeper 集群搭建
请登录后发表评论 登录
全部评论

注册时间:2018-06-21

  • 博文量
    96
  • 访问量
    170025