1. 程式人生 > >linux部署kafka單機叢集環境

linux部署kafka單機叢集環境

一、說明:

        作業系統:linux

        kafka版本資訊:kafka_2.11-0.8.2.1

二、具體操作:

1、安裝kafka之間先檢查作業系統中是否裝有JDK,若沒有點選開啟連結有JDK安裝步驟。

2、關閉SELINUX、開啟防火牆9092埠

    2.1、關閉SELINUX

        vi /etc/selinux/config
        #SELINUX=enforcing #註釋掉
        #SELINUXTYPE=targeted #註釋掉
        SELINUX=disabled #增加
        :wq! #儲存退出

        setenforce 0 #使配置立即生效

    2.2、配置防火牆,開啟9092埠
        vi /etc/sysconfig/iptables #編輯防火牆配置檔案
        # Firewall configuration written by system-config-firewall
        # Manual customization of this file is not recommended.
        *filter
        :INPUT ACCEPT [0:0]
        :FORWARD ACCEPT [0:0]
        :OUTPUT ACCEPT [0:0]
        -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        -A INPUT -p icmp -j ACCEPT
        -A INPUT -i lo -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
        -A INPUT -j REJECT --reject-with icmp-host-prohibited
        -A FORWARD -j REJECT --reject-with icmp-host-prohibited

        COMMIT

        :wq! #儲存退出

        service iptables restart #最後重啟防火牆使配置生效

3、安裝kafka
    3.1、下載kafka
        cd /usr/local/src
        wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
        注意,kafka_2.11-0.8.2.1.tgz版本是已經編譯好的版本,解壓就能使用。
        tar -xzvf kafka_2.11-0.8.2.1.tgz #解壓
        mv kafka_2.11-0.8.2.1 /usr/local/kafka #移動到安裝目錄

    3.2、配置kafka
        mkdir /usr/local/kafka/log/kafka #建立kafka日誌目錄
        cd /usr/local/kafka/config #進入配置目錄
        vi server.properties #編輯修改相應的引數
        broker.id=0
        port=9092 #埠號
        host.name=127.0.0.1 #為本地IP
        log.dirs=/usr/local/kafka/log/kafka #日誌存放路徑,上面建立的目錄

        zookeeper.connect=localhost:2181 #zookeeper地址和埠,單機配置部署,localhost:2181

        :wq! #儲存退出
        (ps:如若host.name的ip不設定為127.0.0.1,會報一下錯誤:

                Bug:Socket server failed to bind to xxx.xxx.xxx.xxx:9092: Cannot assign requested address.                   
在ECS上面配置kafka的地址千萬不要寫外部地址,比如139.225.155.153(我隨便寫的),這樣事繫結不上去的,因為 這個是阿里雲內部;它會去內網去尋找他的地址,所以配成127.0.0.1 會自動識別成本機地址/不然應該使用外網的對映地址。

        )     3.3、配置zookeeper
        mkdir /usr/local/kafka/zookeeper #建立zookeeper目錄
        mkdir /usr/local/kafka/log/zookeeper #建立zookeeper日誌目錄
        cd /usr/local/kafka/config #進入配置目錄
        vi zookeeper.properties #編輯修改相應的引數
        dataDir=/usr/local/kafka/zookeeper #zookeeper資料目錄
        dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日誌目錄
        clientPort=2181
        maxClientCnxns=100
        tickTime=2000
        initLimit=10

        syncLimit=5

        :wq! #儲存退出

4、建立啟動、關閉kafka指令碼
    cd /usr/local/kafka #進入kafka根目錄

     #建立kafka啟動指令碼


    vi kafkastart.sh #編輯,新增以下程式碼
    #!/bin/sh
    cd /usr/local/kafka/bin/zookeeper-server-start.sh /home/xuqiang/kafka/config/zookeeper.properties &
    sleep 3 #等3秒後執行
    #啟動kafka

   cd /usr/local/kafka/bin/kafka-server-start.sh /home/xuqiang/kafka/config/server.properties &

    :wq! #強制儲存退出

    #建立kafka關閉指令碼

    

    vi kafkastop.sh #編輯,新增以下程式碼:
    #!/bin/sh
    #關閉zookeeper
    /usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &
    sleep 3 #等3秒後執行
    #關閉kafka
    /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &

    :wq! #儲存退出

   #新增指令碼執行許可權
    chmod +x kafkastart.sh

    chmod +x kafkastop.sh

5、設定指令碼開機自動啟動
    vi /etc/rc.d/rc.local #編輯,在最後新增一行
    sh /usr/local/kafka/kafkastart.sh & #設定開機自動在後臺執行指令碼
    :wq! #儲存退出
    sh /usr/local/kafka/kafkastart.sh #啟動kafka
    sh /usr/local/kafka/kafkastop.sh #關閉kafka
至此,Linux下Kafka單機安裝配置完成。

6、liunx下kafka生產者和消費者模式測試

    6.1、啟動kafka

        sh /usr/local/kafka/kafkastart.sh
    6.2、建立topic test
    /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --    topic test
    6.3、檢視topic
    ./usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
    6.4、啟動producer釋出訊息
     ./usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
      (ps:此時在命令列輸入: hello world!)
    6.5、啟動consumer消費訊息
        ./usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

      (ps:此時會顯示hello world!)

測試結果如下(我開了兩個視窗便與測試):
    
    (ps:圖1為producer生產者,圖2為consumer消費者)