螞蟻課堂-2-kafka集群環(huán)境搭建

  1. 每天服務(wù)器都要安裝jdk1.8環(huán)境
  2. 安裝Zookeeper集群環(huán)境
  3. 安裝kafka集群環(huán)境
  4. 運(yùn)行測(cè)試
image.png
image.png

服務(wù)器環(huán)境準(zhǔn)備

  • 使用vmare虛擬三臺(tái)服務(wù)器 centos6.5
       A: 192.168.9.200
       B: 192.168.9.201
       C: 192.168.9.202
    

安裝jdk1.8環(huán)境

zookeeper集群搭建

  • 參考文章

  • Zookeeper集群最好是奇數(shù)個(gè)節(jié)點(diǎn),根據(jù)選舉機(jī)制,半數(shù)以上的票數(shù)才能當(dāng)選為leader(假如有兩個(gè)節(jié)點(diǎn),你選我,我選你,根據(jù)半數(shù)以上票數(shù)規(guī)則,是無(wú)法確定集群中到底是你來當(dāng)leader還是我來當(dāng).

  • 下載地址:zookeeper-3.4.10.tar.gz

      tar zxvf zookeeper-3.4.10.tar.gz
      mv zookeeper-3.4.10.tar.gz zookeeper
      cd zookeeper/conf
      mv zoo_sample.cfg zoo.cfg
    
  • 修改zoo.cfg兩處 vim zoo.cfg

      //數(shù)據(jù)目錄,注意:在/usr/local/zookeeper/data 
      dataDir=/usr/local/zookeeper/data
      //日志目錄,沒有則自行創(chuàng)建
      dataLogDir=/usr/local/zookeeper/logs
      # zookeeper服務(wù)默認(rèn)端口
      clientPort=2181                                                                                                                                       
      # zookeeper最近的版本中有個(gè)內(nèi)嵌的管理控制臺(tái)是通過jetty啟動(dòng),該服務(wù)默認(rèn)端口是8080,這里可以自行配置
     admin.serverPort=2182
    
      //在文件末尾追加如下內(nèi)容:(集群節(jié)點(diǎn)列表)
      server.0=192.168.9.200:2888:3888
      server.1=192.168.9.201:2888:3888
      server.2=192.168.9.202:2888:3888
    
    

    端口2888:Zookeeper服務(wù)之間的通信端口,比如leader和follower之間的通信
    端口3888:Zookeeper選舉leader用的端口

  • 創(chuàng)建data和日志目錄并創(chuàng)建myid

      cd /usr/local/zookeeper/
      mkdir data
      mkdir logs
      cd data
      vim myid 
      //將節(jié)點(diǎn)0標(biāo)識(shí)寫入myid文件中
      echo  0 > myid
    
  • 由于Zookeeper集群中的每一個(gè)Zk服務(wù)都會(huì)有一個(gè)唯一標(biāo)識(shí)自己的ID(zk進(jìn)程ID),這個(gè)ID應(yīng)用在myid和zoo.cfg兩個(gè)文件中,其中myid文件中存放的是當(dāng)前Zk服務(wù)的標(biāo)識(shí)ID,而zoo.cfg中以server.ID來指定當(dāng)前的Zk服務(wù)進(jìn)程對(duì)應(yīng)的是哪一臺(tái)主機(jī),當(dāng)Zk服務(wù)啟動(dòng)的時(shí)候,會(huì)首先讀取myid中的id標(biāo)識(shí),拿著這個(gè)id再去zoo.cfg文件中進(jìn)行匹配查找,查找的目的是為了弄清楚當(dāng)前Zk服務(wù)在整個(gè)ZooKeeper集群中的位置.

  • 修改環(huán)境變量
    vim /etc/profile

      ### zookeeper
      export ZOOKEEPER_HOME=/usr/local/zookeeper
      export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
    

    source /etc/profile

  • 修改防火墻啟動(dòng)端口, vim /etc/sysconfig/iptables

      -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
      # 客戶端連接zookeeper服務(wù)端的默認(rèn)端口為218
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
      # kafka的默認(rèn)端口
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
    

    重啟防火墻 /etc/init.d/iptables restart

  • 分別在B、C兩臺(tái)主機(jī)上的ZK安裝目錄下的data目錄下創(chuàng)建myid文件,并依次寫入值:1,2.

  • 分別啟動(dòng)三臺(tái)zookeeper服務(wù)。

      //啟動(dòng)
      zkServer.sh start
      //查看狀態(tài)
      zkServer.sh  status
    

kafka 集群搭建

  • 參考文章

  • kafka_2.11-1.0.0.tgz,下載地址:http://kafka.apache.org/downloads

  • 解壓縮后,移動(dòng)目錄并修改名稱

     mv kafka_2.11-1.0.0 /usr/local/kafka
    
  • 修改配置文件 cd kafka/config, vim server.properties

    // kafka節(jié)點(diǎn)位移標(biāo)識(shí)
    broker.id=0
    //日志文件目錄(需自行創(chuàng)建)
    log.dirs=/usr/local/kafka/logs
    //kafka監(jiān)聽主機(jī)端口
    listeners=PLAINTEXT://192.168.9.200:9092
    //zookeeper集群配置
    zookeeper.connect=192.168.9.200:2181,192.168.9.201:2181,192.168.9.202:2181
    
  • 配置環(huán)境變量

      ### kafka
      export KAFKA_HOME=/usr/local/kafka
      export     PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$PATH
    

    source /etc/profile

克隆B和C節(jié)點(diǎn)

  • 通過在vmware中克隆A, 得到B和C節(jié)點(diǎn),注意:克隆完畢后網(wǎng)卡的MAC和IP都是一樣的,所以需要登陸到B和C, 分別修改MAC和IP, 通過ifconfig -a eth1獲取到MAC,然后修改將其修改,IP修改分別修改為:B:192.168.9.201, C: 192.168.9.202;
  • 修改B機(jī)的zookeeperkafka集群信息;
      //zookeeper
      vim /usr/local/zookeeper/data/myid 內(nèi)容修改為:  `1` 
      //kafka
      vim /usr/local/kafka/config/server.properties
         broker.id=1
         listeners=PLAINTEXT://192.168.9.201:9092
    
  • 修改C機(jī)的zookeeperkafka集群信息;
    //zookeeper
    vim /usr/local/zookeeper/data/myid 內(nèi)容修改為:  `2` 
    //kafka
    vim /usr/local/kafka/config/server.properties
       broker.id=2
       listeners=PLAINTEXT://192.168.9.202:9092
    
  • 三臺(tái)節(jié)點(diǎn)分別啟動(dòng)zookeeper
      //啟動(dòng)
      zkServer.sh start
      //查看狀態(tài),可知其中一個(gè)是leader, 兩外兩個(gè)是follwer
       zkServer.sh status
    
  • 三臺(tái)節(jié)點(diǎn)分別啟動(dòng)kafka
     kafka-server-start.sh  -daemon /usr/local/kafka/config/server.properties
     //查看kafka是否啟動(dòng)成功
      ps aux | grep kafka 或 netstat -tunlp | grep 9092
    
kafka啟動(dòng)成功標(biāo)識(shí)
  • 創(chuàng)建kafka的topic主題
      bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -partitions 3 --topic  myTest
    
  • myTest主題分區(qū)3,會(huì)在kafka集群中三個(gè)節(jié)點(diǎn)的日志 kafka/logs/ 中看到
      //以下三個(gè)日志目錄 myTest代表主題名,數(shù)字0/1/2分別代表三個(gè)節(jié)點(diǎn)標(biāo)識(shí)
      //注意這三個(gè)節(jié)點(diǎn)標(biāo)識(shí)于brokerId不一樣,
      // 是kafka創(chuàng)建主題時(shí)特定的算法平均將三個(gè)分區(qū)物理文件放入到三個(gè)節(jié)點(diǎn)
      //日志目錄中的 00000000000000000000.log 就是真實(shí)的消息內(nèi)容
      `myTest-0` 
      `myTest-1` 
      `myTest-2` 
    

使用ZooInspector可視化工具查看kafka注冊(cè)到Zookeeper信息

  • 參考文章
  • 啟動(dòng)方式步驟,(我的windows jar包路徑:D:\lxf\Program Files\ZooInspertor\build)
        java -jar zookeeper-dev-ZooInspector.jar
    
  • 連接zookeeper, 注意將超時(shí)時(shí)間session Timeout 設(shè)置長(zhǎng)一些;


    image.png
  • 查看kafka集群及分區(qū)信息


    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容