2015-12-29 19 views
9

Kafka có một cách chính thức (ví dụ: init.d script) để khởi động Kafka khi khởi động hệ thống không?Làm thế nào để tự động khởi động Kafka khi khởi động hệ thống trong Ubuntu 14.04?

duy nhất phương pháp chính thức để bắt đầu Kafka tôi đã thấy là:

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 & 

Tôi đã cố gắng sử dụng một nhiệm vụ @reboot trong crontab -e tuy nhiên nó đã không bắt đầu Kafka. Một số người cũng đã viết tùy chỉnh init.d

Cũng có các tập lệnh init.d tùy chỉnh có sẵn (ví dụ: one, two, three) tuy nhiên chúng hoàn toàn khác nhau và tôi không quen với init.d để hiểu cái nào, nếu có để thực hiện.

Làm thế nào để khởi động Kafka khi khởi động hệ thống?

Trả lời

10

Đây là cách tôi cấu hình Kafka để bắt đầu tự động trên Ubuntu 14.04:

sudo su 
cp -R ~/kafka_2.11-0.10.0.1 /opt 
ln -s /opt/kafka_2.11-0.10.0.1 /opt/kafka 

Sao chép các tập lệnh init sau để /etc/init.d/kafka:

DAEMON_PATH=/opt/kafka/ 
PATH=$PATH:$DAEMON_PATH/bin 

# See how we were called. 
case "$1" in 
    start) 
     # Start daemon. 
     echo "Starting Zookeeper"; 
     nohup $DAEMON_PATH/bin/zookeeper-server-start.sh -daemon /$DAEMON_PATH/config/zookeeper.properties 2> /dev/null && \ 
     echo "Starting Kafka"; 
     nohup $DAEMON_PATH/bin/kafka-server-start.sh -daemon /$DAEMON_PATH/config/server.properties 2> /dev/null 
     ;; 
    stop) 
     # Stop daemons. 
     echo "Shutting down Zookeeper"; 
     pid=`ps ax | grep -i 'org.apache.zookeeper.server' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      kill -9 $pid 
     else 
      echo "Zookeeper was not Running" 
     fi 
     echo "Shutting down Kafka"; 
     pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      kill -9 $pid 
     else 
      echo "Kafka was not Running" 
     fi 
     ;; 
    restart) 
     $0 stop 
     sleep 2 
     $0 start 
     ;; 
    status) 
     pid=`ps ax | grep -i 'org.apache.zookeeper.server' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      echo "Zookeeper is Running as PID: $pid" 
     else 
      echo "Zookeeper is not Running" 
     fi 
     pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      echo "Kafka is Running as PID: $pid" 
     else 
      echo "Kafka is not Running" 
     fi 
     ;; 
    *) 
     echo "Usage: $0 {start|stop|restart|status}" 
     exit 1 
esac 

exit 0 

Tận dụng dịch vụ Kafka với các lệnh sau:

chmod 755 /etc/init.d/kafka 
update-rc.d kafka defaults 

Bây giờ bạn sẽ có thể bắt đầu và dừng dịch vụ kafka như sau:

sudo service kafka start 
sudo service kafka status 
sudo service kafka stop 

Nếu bạn muốn xóa dịch vụ Kafka sau, hãy chạy update-rc.d -f kafka remove.

+0

Xin chào, cảm ơn câu trả lời của bạn. Tôi đang tìm cách làm điều này. Mặc dù phiên bản Ubuntu và phiên bản Kafka của tôi có vẻ hơi muộn và máy tôi đã được giao nhiệm vụ thực hiện điều này dường như không có mục "kafkakafka_2.11-0.10.0.1" trong nhà của tôi (~) danh mục. Đây có phải chỉ là thư mục cài đặt của Kafka, bất cứ nơi đâu? Chỉ cần kiểm tra lại, vì tôi không cài đặt Kafka ở đây hoặc đứng lên máy chủ, nhưng tôi chỉ có nhiệm vụ tự động hóa Kafka khi khởi động. Tôi cũng tương đối mới với Unix. Cảm ơn! – ThePartyTurtle

+1

Có đó là thư mục bạn nhận được sau khi tải xuống và giải nén tệp tgz từ https://kafka.apache.org/downloads –

+0

Gotcha, cảm ơn! – ThePartyTurtle

Các vấn đề liên quan