#### 部署zookeeper集群

1、先部署zookeeper集群一般是3个节点,安装zookeeper 依赖java 环境先安装 jdk

      yum install java-1.8.0-openjdk-devel -y

      java -version #查看jdk版本

2、创建工作目录(3个节点都需要执行)

mkdir -p /usr/local/zookeeper

    日志存储目录(3个节点都需要执行)

   mkdir -p /usr/local/zookeeper/dataDir

3、下载安装包并解压(3个节点都需要执行)

     cd /usr/local/zookeeper

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz

       浏览器访问下载:  https:///zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3.tar.gz

      mv apache-zookeeper-3.8.3.tar.gz apache-zookeeper.tar.gz

     tar -xvf  apache-zookeeper.tar.gz  

4、新增实例文件(3个节点都需要执行)myid文件后续zoo.cfg中使用

echo "1" > /usr/local/zookeeper/dataDir/myid
echo "2" > /usr/local/zookeeper/dataDir/myid
echo "3" > /usr/local/zookeeper/dataDir/myid

5、配置修改,并scp 到另外2台机器上面

cd /usr/local/zookeeper/apache-zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vim  zoo.cfg
egrep -v "^#|^$" zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/dataDir
server.1=10.x.x.2:2888:3888
server.2=10.x.x.3:2888:3888
server.3=10.x.x.4:2888:3888
clientPort=2181
maxClientCnxns=60

6、关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

7、配置systemd 服务

cd /usr/lib/systemd/system/

创建zookeeper 服务文件

cat zookeeper.service
[Unit]
Description=Zookeeper Server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/zookeeper/apache-zookeeper/bin/ start
ExecStop=/usr/local/zookeeper/apache-zookeeper/bin/ stop
User=root
Group=root
[Install]
WantedBy=multi-user.target

刷新 systemctl 

systemctl daemon-reload

enable  --now zookeeper

8、 查看集群状态

/usr/local/zookeeper/apache-zookeeper/bin/ status

#######部署kafka集群###########

1、创建工作目录(3个节点都需要执行)

mkdir -p /usr/local/kafka

2、下载安装包解压(3个节点都需要执行)

cd /usr/local

wget https://archive.apache.org/dist/kafka/3.4.0/kafka_2.12-3.4.0.tgz

mv  kafka_2.12-3.4.0.tgz kafka.tgz

tar zxf  kafka.tgz

3、cd /usr/local/kafka/config (3个节点都需要只需要关注修改项broker.id、listeners、zookeeper.connect、log.dirs)

#节点1#
vim server.properties
broker.id=0
listeners=PLAINTEXT://10.x.x.2:9092
num.network.threads=3
.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
=300000
zookeeper.connect=10.x.x.2:2181,10.x.x.3:2181,10.x.x.4:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0#节点2#
broker.id=1
listeners=PLAINTEXT://10.x.x.3:9092
num.network.threads=3
.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
=300000
zookeeper.connect=10.x.x.2:2181,10.x.x.3:2181,10.x.x.4:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0#节点3#
 broker.id=3
listeners=PLAINTEXT://10.x.x.4:9092
num.network.threads=3
.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
=300000
zookeeper.connect=10.x.x.2:2181,10.x.x.3:2181,10.x.x.4:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

4、 配置 systemd kafka服务,创建kafka服务文件(3台节点都需要执行)

cd /lib/systemd/system/
vim kafka.service 
[Unit]
Description=Kafka Server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/kafka/kafka/bin/ -daemon /usr/local/kafka/kafka/config/server.properties
ExecStop=/usr/local/kafka/kafka/bin/
User=root
Group=root[Install]
WantedBy=multi-user.target

 5、 刷新systemctl 

systemctl daemon-reload

设置kafka开机自启动

systemctl enable --now  kafka

#配置sasl认证

1、【节点1,2,3修改 server.properties】

cat /usr/local/kafka/config/server.properties
broker.id=0
listeners=SASL_PLAINTEXT://10.x.x.2:9092
advertised.listeners=SASL_PLAINTEXT://10.x.x.2:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=true
num.network.threads=3
.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
=300000
zookeeper.connect=10.x.x.2:2181,10.x.x.3:2181,10.x.x.4:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
delete.topic.enable=true
auto.create.topics.enable=true

2、添加SASL配置文件

cat /usr/local/kafka/kafka/config/kafka_server_jaas.conf
KafkaServer {
   org.apache.kafka.common.security.plain.PlainLoginModule required
         username="admin"
         password="Aa123456"
         user_admin="Aa123456"
         user_producer="Aa123456"
         user_consumer="Aa123456";
};

注:该配置通过org.apache.org.apache.kafka.common.security.plain.PlainLoginModule指定采用PLAIN机制,定义了用户,usemame和password指定该代理与集群其他代理初始化连接的用户名和密码,"user_"为前缀后接用户名方式创建连接代理的用户名和密码,例如,user_producer=“Aa123456”是指用户名为producer,密码为Aa123456,username为admin的用户,和user为admin的用户,密码要保持一致,否则会认证失败

3、修改启动脚本,添加-Djava.security.auth.login.config=/usr/local/kafka/kafka/config/kafka_server_jaas.conf

cat /usr/local/kafka/kafka/bin/

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/usr/local/kafka/kafka/config/kafka_server_jaas.conf"

4、重启kafka服务

5、创建客户端认证配置文件

cat /usr/local/kafka/kafka/config/kafka_client_jaas.conf
KafkaClient {
       org.apache.kafka.common.security.plain.PlainLoginModule required
       username="admin"
       password="Aa123456";
};

6、添加认证文件和kafka-console-consumer.sh认证文件 

cat  /usr/local/kafka/kafka/bin/
export KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/usr/local/kafka/kafka/config/kafka_client_jaas.conf"
cat  /usr/local/kafka/kafka/bin/kafka-console-consumer.sh
export KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/usr/local/kafka/kafka/config/kafka_client_jaas.conf"

7、客户端验证

在config文件夹新建文件sasl.conf,用来认证

cat  /usr/local/kafka/sasl.conf
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

设置环境变量指定jaas文件

export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka/kafka/config/kafka_client_jaas.conf"
  /usr/local/kafka/kafka/bin/kafka-topics.sh --list --bootstrap-server 10.x.x.2:9092 --command-config /usr/local/kafka/sasl.conf
/usr/local/kafka/bin/ --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092  --topic myj-kafka-topic --producer.config /usr/local/kafka/kafka/config/producer.properties  --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN # 生产者生产消息
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --topic myj-kafka-topic  --from-beginning --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN # 消费者新客户端从头开始消费消费

 ###常用命令###

1、/usr/local/kafka/bin/kafka-topics.sh --create --topic kafka-myj-topic --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --partitions 2 --replication-factor 2 #创建kafka-myj-topic主题 2个分区 ,2个副本

2、/usr/local/kafka/bin/kafka-topics.sh --list  --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092  --exclude-internal  # 列出主题

3、/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --delete  --topic kafka-myj-topic #删除主题

4、/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --describe  --topic myj-kafka-topic #查看主题的详细信息

5、/usr/local/kafka/bin/ --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --describe --version # 查看kafka版本

6、/usr/local/kafka/bin/kafka-topics.sh  --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --alter --topic myj-kafka-topic --partitions 3 #扩容主题分区到3

7、/usr/local/kafka/bin/ --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092  --topic myj-kafka-topic --producer.config /usr/local/kafka/kafka/config/producer.properties  --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN # 生产者生产消息

8、/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.x.x.2:9092,10.x.x.3:9092,10.x.x.4:9092 --topic myj-kafka-topic  --from-beginning --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN # 消费者新客户端从头开始消费消费

####kafka Manager部署#####

介绍:为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具

1.管理多个kafka集群
2.便捷的检查kafka集群状态(topics,brokers,备份分布情况,分区分布情况)
3.选择你要运行的副本
4.基于当前分区状况进行
5.可以选择topic配置并创建topic(0.8.1.1和0.8.2的配置不同)
6.删除topic(只支持0.8.2以上的版本并且要在broker配置中设置delete.topic.enable=true)
7.Topic list会指明哪些topic被删除(在0.8.2以上版本适用)
8.为已存在的topic增加分区
9.为已存在的topic更新配置
10.在多个topic上批量重分区
11.在多个topic上批量重分区(可选partition broker位置)

1、安装包下载解压

https://pan.baidu.com/s/1qYifoa4 密码:el4o

2、unzip kafka-manager-1.3.3.7.zip

mv   kafka-manager-1.3.3.7   kafka-manager
    cd kafka-manager/
  vim /home/kafka-manager/conf/application.conf
kafka-manager.zkhosts="10.103.x.2:2181,10.103.x.3:2181,10.103.x.4:2181"

3、启动服务

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

nohup /home/kafka-manager/bin/kafka-manager  -Dconfig.file=/root/kafka-manager/conf/application.conf  -Dhttp.port=8888 &

3.1 、 启动脚本

start-kafkaManager.sh
#!/bin/bash
# kafka-manager的安装目录
dir_home=/home/kafka-manager
# 指定了web访问端口为8888
nohup $dir_home/bin/kafka-manager -Dconfig.file=$dir_home/conf/application.conf -Dhttp.port=8888 >> $dir_home/start-kafkaManager.log 2>&1 &

4、访问服务

http://10.103.x.2:8888