一、启动kafka 单节点java
kafka 启动单节点只需运行bin目录下的执行脚本 kafka-server-start.sh,该脚本运行时须要传入 server.properties 文件路径。bash
kafka-server-start.sh -daemon ../config/server.propertiesssh
-daemon 是一个可选参数,表示程序已守护进程的方式后台运行;ide
在启动的时候咱们还能够覆盖 server.properties 相应的默认配置, 格式为:--override property=value;spa
默认堆初始化空间大小为1GB,最大堆空间为1GB;操作系统
开启JMX监控启动方式:JMX_PORT=9999 kafka-server-start.sh -daemon ../config/server.properties 或者 启动脚本中新增配置:export JMX_PORT=9999;code
二、启动kafka集群server
kafka没有提供同时启动集群全部节点的执行脚本;blog
#启动 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 命令;
三、关闭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}' )
四、关闭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"