侧边栏壁纸
  • 累计撰写 211 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

基于shell和python,ubuntu系统安装单节点kafka脚本

Wake
2022-12-07 / 0 评论 / 1 点赞 / 958 阅读 / 765 字

1.shell脚本如下:

#!/bin/bash

# 判断用户是否是root
if [[ $EUID -ne 0 ]]; then
  echo "This script must be run as root"
  exit 1
fi

# 判读java环境是否安装,如果没有则进行安装
if ! type "java" > /dev/null; then
  # Update package list and install Java
  apt-get update
  apt-get install -y openjdk-8-jdk

 #如果找不到进程就认为安装失败并退出脚本
  if ! type "java" > /dev/null; then
    echo "Failed to install JDK"
    exit 1
  fi
else
  echo "Java is already installed"
fi

#设置JAVA环境变量
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))

# 下载解压kafka 安装包
wget http://mirrors.estointernet.in/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz
tar xvzf kafka_2.13-2.6.0.tgz

# 判断kafka的部署文件是否存在
if [[ ! -d "kafka_2.13-2.6.0" ]]; then
  echo "Failed to download Kafka binary package"
  exit 1
fi

# Start Kafka
cd kafka_2.13-2.6.0

# 判断kafka的进程号是否存在,不存在就开启服务
if ! lsof -i:9092 > /dev/null; then
  bin/kafka-server-start.sh config/server.properties &
  echo "Kafka server started successfully"
else
  echo "Kafka server is already running"
fi


脚本解读:

在这个脚本中,我们首先检查了脚本是否以 root 身份运行,然后更新了包列表并安装了 Java,接着检查了 JDK 是否安装成功,然后设置了 JAVA_HOME 环境变量,下载并解压了 Kafka 的二进制包,最后启动了 Kafka 服务器。如果 Kafka 服务器已经在运行了,脚本会提示用户并退出。

2. python脚本如下

import os
import subprocess
import sys

def deploy_kafka():
    # 检查java是否安装
    if not any(java_executable in os.listdir("/usr/bin") for java_executable in ["java", "javac"]):
        # 更新软件包和部署java服务
        os.system("apt-get update")
        os.system("apt-get install -y openjdk-8-jdk")

        # 检查java程序是否成功安装
        if not any(java_executable in os.listdir("/usr/bin") for java_executable in ["java", "javac"]):
            print("Failed to install JDK")
            sys.exit(1)
    else:
        print("Java is already installed")

    #设置java环境变量
    java_home = subprocess.run(["readlink", "-f", which("java")], stdout=subprocess.PIPE).stdout.decode("utf-8")
    java_home = os.path.dirname(os.path.dirname(java_home))
    os.environ["JAVA_HOME"] = java_home

    #下载kafka安装包
    os.system("wget http://mirrors.estointernet.in/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz")
    os.system("tar xvzf kafka_2.13-2.6.0.tgz")

    # 部署kafka
    os.chdir("kafka_2.13-2.6.0")

    #检查kafka是否运行,如果没有运行就启动服务
    if not any("9092" in port for port in subprocess.run(["lsof", "-i"], stdout=subprocess.PIPE).stdout.decode("utf-8").split("\n")):
        subprocess.run(["bin/kafka-server-start.sh", "config/server.properties"])
        print("Kafka server started successfully")
    else:
        print("Kafka server is already running")

# Check if the script is being run as root
if os.geteuid() != 0:
    print("This script must be run as root")
    sys.exit(1)

deploy_kafka()

在这个脚本中,我们将部署 Kafka 的逻辑封装在了 deploy_kafka 函数中,并在脚本的最后调用了这个函数。

1

评论区