天天看點

centos8 安裝 kafka 并使用 supervisor 守護 kafka 程序

首先我們需要的軟體機環境如下

  • centos 8
  • java
  • kafka
  • supervisor

首先我們需要先下載下傳 java ,因為 kafka 運作需要 jdk 環境,其次我們需要下載下傳 kafka 的二進制包,最後安裝supervisor 守護 kafka 的程序

  • 安裝的主要指令依次如下
    cd ~
    yum install java
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.4.0/kafka_2.12-2.4.0.tgz
    tar -zxvf  kafka_2.12-2.4.0.tgz  -C /usr/local
    cd /usr/local
    mv   kafka_2.12-2.4.0  kafka
    yum install epel-release
    yum install supervisor
               
  • 驗證程式是否安裝成功
    • 安裝 java 後請使用

      java -version

      若出現如下資訊則說明安裝成功
      [[email protected] ~]$ java -version
      openjdk version "1.8.0_232"
      OpenJDK Runtime Environment (build 1.8.0_232-b09)
      OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
                 
    • 安裝 kafka 可以在本機,運作如下指令測試 kafka 是否正常運作

      因為 kafka 依托于 zookeeper 運作,最新的 kafka 已經內建了 zookeeper ,是以我們要先運作 zookeeper 在運作 kafka

      • 運作 zookeeper
        /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
                   
      • 運作 kafka
        /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
                   
    • supervisor 由于是使用 yum 安裝,使用直接使用

      systemctl start supervisord.service

      運作
      • 使用 ps 指令檢查 supervisor 是否正常運作
        [[email protected] ~]$ ps -ef|grep supervisor
        root       946     1  0 13:50 ?        00:00:01 /usr/bin/python3.6 /usr/bin/supervisord -c /etc/supervisord.conf
        vagrant   5636  5069  0 16:09 pts/0    00:00:00 grep --color=auto supervisor
                   
      • 使用 systemctl 指令檢查 supervisor 是否正常運作
        [[email protected] ~]$ systemctl status supervisord.service 
        ● supervisord.service - Process Monitoring and Control Daemon
           Loaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)
           Active: active (running) since Tue 2019-12-24 13:50:13 UTC; 2h 20min ago
          Process: 788 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)
         Main PID: 946 (supervisord)
            Tasks: 111 (limit: 26213)
           Memory: 689.1M
                   
  • 配置 supervisor
    • supervisor 的配置檔案放在 /etc/supervisord.conf ,檔案的最後一行告訴我們,程序的配置檔案應該放到 /etc/supervisord.d/*.ini
      [include]
      files = supervisord.d/*.ini
                 
    • 因為預設的配置檔案是以 .ini 結尾的,使用我們配置守護程序的配置檔案名需要以 .ini 結尾
      touch kafka.ini
      touch zookeeper.ini
                 
    • kafka.ini 和 zookeeper.ini 檔案内容如下
      [program:kafka]
      command=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
      user=root
      autostart=true
      autorestart=true
      startsecs=6
      
      ------------
      
      
      [program:zookeeper]
      command=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
      user=root
      autostart=true
      autorestart=true
      startsecs=3
                 
    • 配置完後,運作

      sudo supervisorctl reload

      重新開機 zookeeper 和 kafka 服務
    • 使用

      sudo supervisorctl status

      指令檢視服務是否啟動成功,如下則啟動成功
      [[email protected] supervisord.d]$ sudo supervisorctl status
      kafka                            RUNNING   pid 4128, uptime 2:40:54
      zookeeper                        RUNNING   pid 1186, uptime 2:41:05
                 
    • 注意 kafka.ini 的重新開機時間 startsecs 一定要比 zookeeper 大,因為 kafka 依賴 zookeeper ,需要 zookeeper 提前啟動