KafkaServer 管理

一、啓動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"
相關文章
相關標籤/搜索