1、启动kafka 单节点
kafka 启动单节点只需运行bin目录下的执行脚本 kafka-server-start.sh,该脚本运行时需要传入 server.properties 文件路径。
kafka-server-start.sh -daemon ../config/server.properties
-daemon 是一个可选参数,表示程序已守护进程的方式后台运行;
在启动的时候我们还可以覆盖 server.properties 相应的默认配置, 格式为:--override property=value;
默认堆初始化空间大小为1GB,最大堆空间为1GB;
开启JMX监控启动方式:JMX_PORT=9999 kafka-server-start.sh -daemon ../config/server.properties 或者 启动脚本中新增配置:export JMX_PORT=9999;
2、启动kafka集群
kafka没有提供同时启动集群所有节点的执行脚本;
#启动 Kafka 集群的脚本代码 kafka-cluster-start.sh #!/bin/bash brokers="server-1 server-2 server-3" KAFKA_HOME="/usr/local/software/kafka/kafka_2.11-1.1.0" echo "INFO:Begin to start kafka cluster..." for broker in $brokers do echo "INFO:Start kafka on ${broker} ..." ssh ${broker} -C "source /etc/profile; sh ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties" if [ $? -eq 0 ]; then echo "INFO:[${broker}] Start successfully" fi done echo "INFO:Kafka cluster starts successfully"
定义了变量 brokers用来保存集群中各个节点的机器域名,机器域名可以在 /etc/host 中进行配置 ;
执行这个脚本之前要确保安装配置了SSH,因为是通过 SSH 登录到对应的的节点,然后执行kafka-server-start.sh启动脚本;
集群启动脚本只需要保存在集群中的任何一个节点,并给该文件赋予可执行权限,命令:chmod +x kafka-cluster-start.sh
由于kafka运行在JVM之上,因此会依赖相应系统环境配置,为了保证各个环境配置在执行脚本时已生效,在启动命令中加入了 source /etc/profile 命令;
3、关闭kafka单个节点
kafka自带了关闭server的脚本 kafka-server-stop.sh;
#kafka-server-stop.sh
SIGNAL=${SIGNAL:-TERM} PIDS=$(ps ax | grep -i 'kafka.Kafka' | grep java | grep -v grep | awk '{print $1}') if [ -z "$PIDS" ]; then echo "No kafka server to stop" exit 1 else kill -s $SIGNAL $PIDS fi
该脚本实现的功能是查找进程名为 Kafka 的进程的PID,然后杀掉该进程;但是该脚本在某些版本的操作系统执行时并不能关闭kafka,原因是该脚本查找进程名为Kafka的进程并不能找见,所以关不掉Kafka。
若发现自带的脚本关不了 kafka服务,可以通过修改该脚本中查找进程名为Kafka的进程的命令,PID=$(jps | grep -i 'kafka' | awk '{print $1}' )
4、关闭kafka集群
关闭kafka集群脚本 kafka-cluster-stop.sh
#kafka-cluster-stop.sh #!/bin/bash brokers="server-1 server-2 server-3" KAFKA_HOME="/usr/local/software/kafka/kafka_2.11-1.1.0" echo "INFO:Begin to shutdown kafka cluster..." for broker in $brokers do echo "INFO:Shutdown kafka on ${broker} ..." ssh ${broker} -C "${KAFKA_HOME}/bin/kafka-server-stop.sh" if [ $? -eq 0 ]; then echo "INFO:[${broker}] Shutdown completed" fi done echo "INFO:Kafka cluster Shutdown completed"