一、Zookeeper

    ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。

    ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。

zookeeper叢集以奇數做叢集;

zookeeper1 10.207.101.100 21811

zookeeper2 10.207.101.100 21812

zookeeper3 10.207.101.100 21813

  1、下載地址:

http://mirrors.hust.edu.cn/apache/zookeeper/

  2、安裝配置 ;

# tar -xf zookeeper-3.4.9.tar.gz

# mv zookeeper-3.4.9/ zookeeper

zookeeper/conf目錄,輸入命令 cp -rp zoo_sample.cfg zoo.cfg

zookeeper目錄,新建子目錄data和logs,

# mkdir -p /opt/{data/{21811,21812,21813},logs{21811,21812,21813}}

  3、zoo.conf 配置如下:

(單點配置 其餘節點配置更改port data logs不同)

# vim zoo.cfg

tickTime=2000

# Client – server 通訊心跳時間


initLimit=10

# leader-follower 初始連結時能容忍的最多心跳數; 


syncLimit=5

# follower 伺服器和人leade 伺服器 之間請求和應答之間能容忍的最多心跳數;


dataDir=/opt/server/zookeeper/data/21811

dataLogDir=/opt/server/zookeeper/logs/212812

clientPort=21811

server.1=zoo1:28881:38881

server.2=zoo2:28882:38882

server.3=zoo3:28883:38883

  4、啟動:zookeeper (配置目錄)

bin/zkServer.sh start

  5、連結測試

bin/zkCli.sh -server 127.0.0.1:21811

bin/zkCli.sh -server 127.0.0.1:21812

bin/zkCli.sh -server 127.0.0.1:21813

二、kafka

    Kafka是分散式釋出-訂閱訊息系統。它最初由LinkedIn公司開發,之後成為Apache專案的一部分。    Kafka是一個分散式的,可劃分的,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料。通過叢集來提供實時的消費;

kafka1 10.207.101.100 90921

Kafka2 10.207.101.100 90921

kafka3 10.207.101.100 90921

prot:90921/90922/90923

  1、下載安裝:

https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.1.1/kafka_2.11-0.10.1.1.tgz

# mkdir -p /opt/kafka/logs{90921,90922,90923}

  2、配置檔案(單點配置 其餘節點配置更改port data logs不同)

vim  config/server.properties

broker.id=1

# broker 標識


listeners=PLAINTEXT://10.207.101.100:90921

#  listeners一定要配置成為IP地址;如果配置為localhost或伺服器的hostname,在使用java傳送資料時就會丟擲異 ;也可以設定hostname


log.dirs= /opt/kafka/logs/90921

# kafka 資料存放目錄


zookeeper.connect=10.207.101.100:21811,10.207.101.100:21812,10.207.101.100:21813

# zookeeper 連結串


  3、Kafka環境變數

cat /etc/profile

export KAFKA_HEAP_OPTS=”-Xms30g -Xmx30g -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:InitiatingHeapOccupancyPercent=45″

(設定根據硬體資源和系統資源本機測試環境都是64核256G8TSSD)

  4、啟動

nohup bin/kafka-start.sh config/server.properties >/dev/null 2>&1 &

三、 kafak 叢集監控

  1、kafka-monitor

監測Kafka叢集狀態

Topic、Consumer Group列表

圖形化展示topic和consumer之間的關係

圖形化展示consumer的Offset、Lag等資訊

  2、kafka offset monitor

KafkaOffsetMonitor:程式一個jar包的形式執行,部署較為方便。只有監控功能,使用起來也較為安全。

  3、本文示例使用kafka offset monitor 進行監控

https://github.com/quantifind/KafkaOffsetMonitor

下載解壓縮執行:

執行格式:

java -cp KafkaOffsetMonitor-assembly-0.2.1.jar

     com.quantifind.kafka.offsetapp.OffsetGetterWeb

     –offsetStorage kafka

     –zk zk-server1,zk-server2

     –port 8899

     –refresh 10.seconds

     –retain 2.days

注: 

offsetStorage目前只支援kaka,zk按照host1:port1,host2:port2…的格式去寫即可,port為開啟web介面的埠號可自定義,refresh為重新整理時間,retain為資料保留時間(單位seconds, minutes, hours, days)。

  4、設定shell啟動示例:

# cat start.sh

# !/bin/sh

echo “KafkaOffsetMonitor starting”

nohup java -cp KafkaOffsetMonitor-assembly-0.3.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb –offsetStorage kafka –zk zoo1:21811,zoo2:21812,zoo3:21813 –port 8090 –refresh 10.seconds –retain 1.days > /dev/null 2>&1 &

  5、kafka-monitor測試訪問:

http://10.207.101.100:8899/#/clusterviz