kafka+zookeeper教程

1. 环境准备

环境准备
10.0.0.101,10.0.0.102,10.0.0.103,
101上做到102,103的免密登录
#为了方便执行命令和传输文件,这里先在101创建2个脚本
]# cat > /usr/bin/data-rsync.sh <<'EOF'
#!/bin/bash
[ $# -ne 1 ] && {
  echo "usage: $0 PATH"
  exit 1
}
for ((id=102;id<=103;id++))
do
   echo "---root@10.0.0.${id}----开始---"
   tput setaf 2
   rsync -avz --delete $1 root@10.0.0.${id}:`dirname $1` 
   tput setaf 9
   echo -e "---root@10.0.0.${id}----结束---------------\n"
done

EOF

]# cat > /usr/bin/cmd-cluster.sh <<'EOF'
#!/bin/bash
[ $# -eq 0 ] && {
  echo "usage: $0 CMD"
  exit 1
}
for ((id=101;id<=103;id++))
do
   echo "--10.0.0.${id}--开始-"
   tput setaf 2
   ssh root@10.0.0.${id} "$@" 
   tput setaf 9
   echo -e "--10.0.0.${id}--结束--------------------\n"
done
EOF
chmod +x /usr/bin/data-rsync.sh /usr/bin/cmd-cluster.sh 

2. zookeeper相关

2.1. zookeeper单节点部署

zookeeper单节点部署
	(1)下载zookeeper软件
mkdir -p /data/tools/zookeeper/ && cd /data/tools/zookeeper/
[root@elk1 ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
	(2)解压软件包
[root@elk1 ~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz

	(3)创建符号连接
[root@elk1~]#  ln -sv apache-zookeeper-3.8.4-bin zk


	(4)声明zk的环境变量
[root@elk1]# cat > /etc/profile.d/kafka.sh <<'EOF'  
export ZK_HOME=/data/tools/zookeeper/zk
export PATH=$PATH:$ZK_HOME/bin
EOF
echo -e "\nexport PATH=$PATH" >> /root/.bashrc 
source /etc/profile.d/kafka.sh /root/.bashrcv

	(5)创建zk的配置文件
[root@elk1 ~]# cp /data/tools/zookeeper/zk/conf/{zoo_sample.cfg,zoo.cfg}

	(6)启动zk节点
[root@elk1 ~]# zkServer.sh start 
[root@elk1 ~]# zkServer.sh status  # 查看zk服务的状态信息
[root@elk1 ~]# zkServer.sh stop
[root@elk1 ~]# zkServer.sh restart

	(7)连接ZK节点
[root@elk101 ~]# zkCli.sh  

2.2. zookeeper常用命令

|-------------|-----------------------------------------|
| 功能 | 命令 |
| 创建节点(znode) | create /path data -s: 创建顺序节点 -e: 创建临时节点 |
| 获取znode的数据 | get /path |
| 设置znode的数据 | set /path data |
| 创建子节点 | create /paren/path/subNode data |
| 列出子节点 | ls /path |
| 查看znode的状态 | stat /path |
| 删除znode | delete /path |
| 递归删除其子节点使用 | deleteall /path |

2.3. zookeeper集群部署与管理

2.3.1. zookeeper集群部署

zookeeper集群部署
	(1)101下载zookeeper软件
[root@elk1 ~]# mkdir -p /data/tools/zookeeper/ && cd /data/tools/zookeeper/
[root@elk1 ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
	(1)配置101到101,102,103的免密
[root@elk101 ~]# ssh-keygen
[root@elk101 ~]# ssh-copy-id 10.0.0.101
[root@elk101 ~]# ssh-copy-id 10.0.0.102
[root@elk101 ~]# ssh-copy-id 10.0.0.103
	(2)101节点解压软件包
[root@elk101 ~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz
	(3)101节点创建符号连接
[root@elk101 ~]# ln -sv apache-zookeeper-3.8.4-bin zk
	(4)101节点声明zk的环境变量
[root@elk101 ~]# cat > /etc/profile.d/kafka.sh <<'EOF'  
export ZK_HOME=/data/tools/zookeeper/zk
export PATH=$PATH:$ZK_HOME/bin
EOF
	(5)101节点创建zk的数据目录	
[root@elk101 ~]# mkdir -p /data/data/zk

	(6)101节点创建zk的配置文件
[root@elk101 ~]# cat > /data/tools/zookeeper/zk/conf/zoo.cfg  << EOF             
# 定义最小单元的时间范围tick。
tickTime=2000
# 启动时最长等待tick数量。
initLimit=5
# 数据同步时最长等待的tick时间进行响应ACK
syncLimit=2
# 指定数据目录
dataDir=/data/data/zk
# 监听端口
clientPort=2181
# 开启四字命令允许所有的节点访问。
4lw.commands.whitelist=*
# server.ID=A:B:C[:D]
# ID:
#    zk的唯一编号。
# A:
#    zk的主机地址。
# B:
#    leader的选举端口,是谁leader角色,就会监听该端口。
# C: 
#    数据通信端口。
# D:
#    可选配置,指定角色。
server.101=10.0.0.101:2888:3888
server.102=10.0.0.102:2888:3888
server.103=10.0.0.103:2888:3888
EOF		
		(7)101同步相关目录到102,103节点
[root@elk101 ~]# data-rsync.sh  /data/data/zk
[root@elk101 ~]# data-rsync.sh  /data/tools/zookeeper
[root@elk101 ~]# data-rsync.sh  /etc/profile.d/kafka.sh
		
		(8)所有节点创建myid文件
[root@elk101 ~]#  cmd-cluster.sh  
do ssh 10.0.0.${host_id} "echo ${host_id} > /data/data/zk/myid";
done
		
		(9)所有节点加载zk环境变量
[root@elk101 ~]# cmd-cluster.sh "source /etc/profile.d/kafka.sh;echo  export PATH=$PATH >> /root/.bashrc;source /root/.bashrc"

		(10)所有节点启动zk服务
[root@elk101 ~]# cmd-cluster.sh "zkServer.sh start"

		(11)所有节点查看zk的角色状态
[root@elk101 ~]#  cmd-cluster.sh "zkServer.sh status"

2.3.2. zookeeper集群管理

编写zookeeper的集群管理脚本
[root@elk101]# cat > /usr/local/sbin/zkManager.sh <<'EOF'
#!/bin/bash

#判断用户是否传参
if [ $# -ne 1 ];then
    echo "无效参数,用法为: $0  {start|stop|restart|status}"
    exit
fi

#获取用户输入的命令
cmd=$1

#定义函数功能
function zookeeperManger(){
    case $cmd in
    start)
        echo "启动服务"        
        remoteExecution start
        ;;
    stop)
        echo "停止服务"
        remoteExecution stop
        ;;
    restart)
        echo "重启服务"
        remoteExecution restart
        ;;
    status)
        echo "查看状态"
        remoteExecution status
        ;;
    *)
        echo "无效参数,用法为: $0  {start|stop|restart|status}"
        ;;
    esac
}


#定义执行的命令
function remoteExecution(){
    for (( i=101 ; i<=103 ; i++ )) ; do
            tput setaf 2
            echo ========== 10.0.0.${i} zkServer.sh  $1 ================
            tput setaf 9
            ssh 10.0.0.${i}  "zkServer.sh $1 2>/dev/null"
    done
}

#调用函数
zookeeperManger
EOF

#给脚本添加执行权限
[root@elk1~]# chmod +x /usr/local/sbin/zkManager.sh

#使用
zkManager.sh start|stop|restart|status

2.4. 修改zookeeper的堆内存大小

修改zookeeper的堆内存大小:
温馨提示:	修改zookeeper的堆内存大小,一般情况下,生产环境给到2G足以,如果规模较大可以适当调大到4G。
	(1)查看zk默认的堆内存大小为1GB。
[root@elk101 ~]# jmap -heap `jps | awk '/QuorumPeerMain/{print $1}'`|grep -i heapsize
	(2)配置ZK的堆内存
[root@elk101 ~]# cat > /data/tools/zookeeper/zk/conf/java.env << 'EOF'
export JVMFLAGS="-Xms256m -Xmx256m $JVMFLAGS"
EOF
	(3)将配置文件同步到集群的其他zk节点上
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/conf/java.env

	(4)重启ZK集群
[root@elk101 ~]# zkManager.sh restart
	(5)验证堆内存
[root@elk101 ~]# jmap -heap `jps | awk '/QuorumPeerMain/{print $1}'`|grep -i heapsize

3. kafka相关

3.1. kafka单点部署

快速搭建kafka单点环境
	(1)下载kafka软件包
[root@elk101 ~]# mkdir -p /data/tools/kafka/ && cd /data/tools/kafka/
[root@elk101 ~]# wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

	(2)解压软件包
[root@elk101 ~]# tar xf kafka_2.13-3.8.0.tgz

	(3)创建符号连接
[root@elk101 ~]# ln -svf /data/tools/kafka/kafka_2.13-3.8.0 /data/tools/kafka/kafka

	(4)配置环境变量
[root@elk101 ]# cat > /etc/profile.d/kafka.sh <<'EOF'
export ZK_HOME=/data/tools/zookeeper/zk
export KAFKA_HOME=/data/tools/kafka/kafka
export PATH=$PATH:$KAFKA_HOME/bin:$ZK_HOME/bin
EOF
[root@elk101 ]# source /etc/profile.d/kafka.sh
[root@elk101 ]# echo "export PATH=$PATH" >> /root/.bashrc
[root@elk101 ]# source /root/.bashrc

	(5)修改配置文件 
[root@elk101 ~]# egrep '^broker|^zookeeper.connect=' /data/tools/kafka/kafka/config/server.properties
broker.id=101
zookeeper.connect=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
	
	(6)启动kafka单点
[root@elk101 ]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 


	(7)验证zookeeper的源数据信息
	zkCli.sh -server 10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
(CONNECTED) 0] ls /brokers/ids
[101]

3.2. kafka集群部署

kafka集群部署
  (1)101节点下载kafka软件包
[root@elk101 ~]# mkdir -p /data/tools/kafka/ && cd /data/tools/kafka/
[root@elk101 ~]# wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

	(2)101节点解压软件包
[root@elk101 ~]# tar xf kafka_2.13-3.8.0.tgz

	(3)101节点创建符号连接
[root@elk101 ~]# ln -svf /data/tools/kafka/kafka_2.13-3.8.0 /data/tools/kafka/kafka

	(4)101节点配置环境变量
[root@elk101 ]# cat > /etc/profile.d/kafka.sh <<'EOF'
export ZK_HOME=/data/tools/zookeeper/zk
export KAFKA_HOME=/data/tools/kafka/kafka
export PATH=$PATH:$KAFKA_HOME/bin:$ZK_HOME/bin
EOF
[root@elk101 ]# source /etc/profile.d/kafka.sh
[root@elk101 ]# echo "export PATH=$PATH" >> /root/.bashrc
[root@elk101 ]# source /root/.bashrc

	(5)101节点修改配置文件 
[root@elk101 ~]# ]# egrep '^broker|^zookeeper.connect=|log.dirs' /data/tools/kafka/kafka/config/server.properties
broker.id=101
log.dirs=/data/data/kafka-logs
zookeeper.connect=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181

  (6)101同步相关目录到102,103节点
[root@elk101 ~]# data-rsync.sh /data/data/kafka-logs
[root@elk101 ~]# data-rsync.sh /data/tools/kafka
[root@elk101 ~]# data-rsync.sh /etc/profile.d/kafka.sh
  
  (7)102,103配置文件修改
[root@elk102 ~]# sed -i 's#^broker.id.*#broker.id=102#' /data/tools/kafka/kafka/config/server.properties
[root@elk103 ~]# sed -i 's#^broker.id.*#broker.id=103#' /data/tools/kafka/kafka/config/server.properties
    
	(8)所有节点加载kafka环境变量
[root@elk101 ~]#  cmd-cluster.sh "source /etc/profile.d/kafka.sh; echo  export PATH=$PATH >> /root/.bashrc ; source /root/.bashrc"

	(9)所有节点启动kafka服务
[root@elk101 ~]#  cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties "

(10)验证zookeeper的源数据信息
	zkCli.sh -server 10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
(CONNECTED) 0] ls /brokers/ids
[101, 102, 103]

3.3. kafka的常用术语

kafka的常用术语:
	kafka cluster(broker list):		kafka集群。		
	kafka Server (broker):		指的是kafka集群的某个节点。		
	Producer:		生产者,即往kafka集群写入数据的角色。
	Consumer:		消费者,即从kafka集群中读取数据的角色。一个消费者隶属于一个消费者组。		
	Concumer Group:		消费者组,里面有一个或多个消费者。		
	Topic:		主题,是一个逻辑概念,用于区分业务,一个主题最少要有1个分区和一个副本。		
	Partition:		分区,分区可以暂时理解为分区编号。	
	replica:
		副本,副本是实际存储数据的地方,分为两种角色,即leader和follower。
		   leader:
				负责读写。
		   follower:
				负责从leader节点同步数据,无法对集群外部提供任何服务。当leader无法访问时,follower会接管leader的角色。
		
		AR:
			所有的副本,包含leader和follower副本。
		ISR:
			表示和leader同步的所有副本集合。
		OSR:
			表示和leader不同步的所有副本即可。
			
	zookeeper集群:
		kafka 0.9之前的版本维护消费者组的offset,之后kafka内部的topic进行维护。
		协调kafka的leader选举,控制器协调者选举等....
	
client:
    consumer API:
        即消费者,指的是从boker拉取数据的角色。
		每个消费者均隶属于一个消费者组(consumer Group),一个消费者组内可以有多个消费者。
		
    producer API:
		即生产者,指的是往broker写入数据的角色。
		
	admin API:
		集群管理的相关API,包括topic,parititon,replica等管理。
		
	stream API:
		数据流处理等API,提供给Spark,Flink,Storm分布式计算框架提供数据流管道。
		
	connect API:
		连接数据库相关的API,例如将MySQL导入到kafka。
		
		

		
常见问题:
Q1: 分区和副本有啥区别?
	分区可以暂时理解为分区编号,它包含该分区编号的所有副本,和磁盘的分区没关系。
	副本是实际存储数据的地方,
	
Q2: offset存储在kafka集群,客户端在kafka集群任意一个节点如何获取偏移量。
	通过内部的消费者组的偏移量读取即可。("__consumer_groups")

3.4. kafka topic管理命令

topic管理:
-1 查看topic
    #查看topic列表
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --list

    #查看指定topic的详细信息	
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --describe --topic tom
	
   #查看所有的topic详细信息。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --describe 

-2 创建topic
	一个topic是生产者(producer)和消费者(consumer)进行通信的逻辑单元。
	底层存储数据的是对应一个或多个分区(partition)副本(replica)。
	#创建一个名为"tom",分区数为3,副本数量为2的topic。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --create  --partitions 3 --replication-factor 2 --topic tom

	#创建一个名为"jack",分区数为3,副本数量为2的topic。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --create  --partitions 3 --replication-factor 2 --topic jack
	
-3 修改topic(分区数量可以调大,但不可以调小!)
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --alter --topic tom --partitions 5

-4 刪除topic
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --delete --topic tom 
	
-5 创建生产者
[root@elk102 ~]# kafka-console-producer.sh --bootstrap-server 10.0.0.103:9092 --topic jack

-6 创建消费者
[root@elk103 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic jack --from-beginning
 
-7 消费者组案例
	(1)创建topic
[root@elk103 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092 --create  --partitions 3 --replication-factor 2 --topic group-test-topic
	
	(2)启动生产者
[root@elk102 ~]# kafka-console-producer.sh --bootstrap-server 10.0.0.103:9092 --topic group-test-topic	
	
	(3)启动消费者加入同一个消费者组
	#加入消费者组方式1:
[root@elk101 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic group-test-topic --consumer-property group.id=test --from-beginning
    #加入消费者组方式2:
[root@elk103 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic group-test-topic --consumer.config  /data/tools/kafka/kafka/config/consumer.properties --from-beginning
	
	(4)测试
在生产者端写入数据,观察消费者的输出即可。

	(5)观察消费者组的详细信息
[root@elk101 ~]# kafka-consumer-groups.sh --bootstrap-server 10.0.0.101:9092 --describe --group group-test-topic

3.5. kafka内存调优

kafka堆内存调优:
	(1)修改启动脚本
[root@elk101 ~]# vim `which kafka-server-start.sh ` +28
...
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
	...
	# 将原有的注释掉
	# export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
	export KAFKA_HEAP_OPTS="-server -Xmx256m -Xms256m -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
	
    export JMX_PORT="8888"
fi

	(2)同步集群启动脚本
[root@elk101 ~]# data-rsync.sh `which kafka-server-start.sh`
	
	(3)重启kafka集群
[root@elk101 ~]# cmd-cluster.sh "kafka-server-stop.sh"

[root@elk101 ~]# cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"
	
	(4)验证kafka集群的内存大小
[root@elk101 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize
[root@elk102 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize
[root@elk103 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize

3.6. kafka-eagle管理kafka

3.6.1. 启动kafka的jmx端口

-1 启动kafka的JMX端口
	(1)所有节点停止kafka
[root@elk101 ~]# cmd-cluster.sh "kafka-server-stop.sh"

	(2)所有节点修改kafka的配置文件
vim `which kafka-server-start.sh`
...
 #  export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"  # 注视掉该行,并将下面2行复制即可
    export KAFKA_HEAP_OPTS="-server -Xmx256M -Xms256M -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="8888"

	(3)所有节点启动kafka服务
[root@elk101 ~]# cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"


cd /data/tools/kafka/
windows 下载https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/refs/tags/v3.0.1
上传至101节点

3.6.2. 启动zookeeper的jmx端口

- 启动zookeeper的JMX端口
	(1)修改配置文件
[root@elk101 ~]# vim /data/tools/zookeeper/zk/conf/zoo.cfg  
# 添加下面的一行,启动zk的4字监控命令
4lw.commands.whitelist=*

	(2)修改zk的启动脚本
[root@elk101 ~]# vim /data/tools/zookeeper/zk/bin/zkServer.sh +77
...
# 如果修改上面的方式不生效,则需修改zkServer.sh脚本中77行之后ZOOMAIN的值即可。
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
 
	(3)修改环境变量开启JMX
[root@elk101 ~]# vim /data/tools/zookeeper/zk/bin/zkEnv.sh
...
JMXLOCALONLY=false
JMXPORT=21812
JMXSSL=false
JMXLOG4J=false
	
	(4)同步脚本
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/conf/zoo.cfg
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/bin/zkServer.sh 
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/bin/zkEnv.sh 

  (5)重启zookeeper
[root@elk101 ~]# zkManager.sh restart

  (6)windows jconsole验证是否能连接JMX端口

3.6.3. 安装mysql,并配置

yum -y install mariadb-server
#配置mariadb的配置文件
# 关闭MySQL的反向解析功能
echo "skip-name-resolve=1" >> /etc/my.cnf
skip-name-resolve=1

systemctl enable mariadb.service --now
#创建数据库,授权用户
CREATE DATABASE efka DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON efka.* TO 'efka_admin'@'%' IDENTIFIED  BY '123456';
SHOW GRANTS FOR efka_admin;
#测试用户
mysql -u efka_admin -p123456 -h 10.0.0.102

3.6.4. 安装kafka-eagle监控

#1 下载压缩包,上传,解压
windows下载https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/refs/tags/v3.0.1
[root@elk101 ~]# cd /data/tools/kafka/
[root@elk101 ~]# tar -xvf kafka-eagle-bin-3.0.1.tar.gz
[root@elk101 ~]# cd kafka-eagle-bin-3.0.1
[root@elk101 ~]# tar -xvf efak-web-3.0.1-bin.tar.gz
[root@elk101 ~]# mv efak-web-3.0.1 /data/tools/kafka
[root@elk101 ~]# cp /data/tools/kafka/efak-web-3.0.1/conf/{system-config.properties,.back}
#2 修改配置
[root@elk101 ~]# cat >  /data/tools/kafka/efak-web-3.0.1/conf/system-config.properties <<EOF
efak.zk.cluster.alias=prod
prod.zk.list=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
prod.efak.broker.size=20
kafka.zk.limit.size=32
efak.webui.port=8048
prod.efak.offset.storage=kafka
prod.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi
efak.metrics.charts=true
efak.metrics.retain=15
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10
efak.topic.token=admin
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://10.0.0.101:3306/efka?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=efka_admin
efak.password=123456
EOF

#3 配置环境变量
cat >> /etc/profile.d/kafka.sh <<'EOF'
export KE_HOME=/data/tools/kafka/efak-web-3.0.1/
export PATH=$PATH:$KE_HOME/bin
EOF
source /etc/profile.d/kafka.sh

#4 修改堆内存大小
[root@elk101 ~]# vim `which ke.sh `
...
export KE_JAVA_OPTS="-server -Xmx256m -Xms256m -XX:MaxGCPauseMillis=20 -XX:+UseG1GC -XX:MetaspaceSize=128m -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
#5 启动服务
[root@elk101 ~]# ke.sh start
#6 登录界面
http://10.0.0.101:8048
Account:admin ,Password:123456
相关推荐
dessler2 分钟前
Docker-如何启动docker
运维·docker·云原生·容器·eureka
zhy295632 分钟前
【DOCKER】基于DOCKER的服务之DUFS
运维·docker·容器·dufs
无为之士7 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子17 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213817 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭24 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉24 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei27 分钟前
Zookeeper的选举机制
大数据·分布式·zookeeper
MZWeiei28 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh43 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux