Zookeeper 集羣+kafka集羣+kafka manager搭建

軟件需求,軟件包都上傳到 /usr/local/src目錄:

    jdk-8u101-linux-x64.tar.gz

    kafka.2.11-0.8.22.tar.gz

    zookeeper-3.4.9.tar.gz

    kafka-manager-1.3.0.7.zip

 * kafka-manager是通過scala打包獲取一個編譯完的項目,需要提前編譯好,參考 https://github.com/yahoo/kafka-manager


硬件需求,四個主機:

    192.168.100.100 : kafka-manager , scala

    192.168.100.101 : kafka,zookeeper

    192.168.100.102 : kafka,zookeeper

    192.168.100.103 : kafka,zookeeper

 

開始設置佈置環境:

 192.168.100.101,192.168.100.102,192.168.100.103 環境安裝包配置如下:

    

[root@ zookeeper-kafka-scala]# cd /usr/local/src
[root@ zookeeper-kafka-scala]# ll
total 310060
-rw-r--r-- 1 root root 181352138 Oct 10 18:31 jdk-8u101-linux-x64.tar.gz
-rw-r--r-- 1 root root  16038031 Oct 11 14:25 kafka.2.11-0.8.22.tar.gz
-rw-r--r-- 1 root root  68699247 Oct 10 18:00 kafka-manager-1.3.0.7.zip
-rw-r--r-- 1 root root  28678231 Oct 10 16:10 scala-2.11.8.tgz
-rw-r--r-- 1 root root  22724574 Oct 10 16:57 zookeeper-3.4.9.tar.gz
[root@ zookeeper-kafka-scala]# tar -xf jdk-8u101-linux-x64.tar.gz
[root@ zookeeper-kafka-scala]# tar -xf kafka.2.11-0.8.22.tar.gz
[root@ zookeeper-kafka-scala]# tar -xf zookeeper-3.4.9.tar.gz
[root@ zookeeper-kafka-scala]# ll
total 310072
drwxr-xr-x  8 uucp  143      4096 Jun 22 18:13 jdk1.8.0_101
-rw-r--r--  1 root root 181352138 Oct 10 18:31 jdk-8u101-linux-x64.tar.gz
drwxr-xr-x  6 root root      4096 Feb 24  2016 kafka
-rw-r--r--  1 root root  16038031 Oct 11 14:25 kafka.2.11-0.8.22.tar.gz
-rw-r--r--  1 root root  68699247 Oct 10 18:00 kafka-manager-1.3.0.7.zip
-rw-r--r--  1 root root  28678231 Oct 10 16:10 scala-2.11.8.tgz
drwxr-xr-x 10 1001 1001      4096 Aug 23 15:42 zookeeper-3.4.9
-rw-r--r--  1 root root  22724574 Oct 10 16:57 zookeeper-3.4.9.tar.gz
[root@ zookeeper-kafka-scala]# mv kafka /usr/local/kafka
[root@ zookeeper-kafka-scala]# mv zookeeper-3.4.9 /usr/local/zookeeper
[root@ zookeeper-kafka-scala]# mv jdk1.8.0_101 /usr/local/java
[root@ zookeeper-kafka-scala]# echo 'export PATH=$PATH:/usr/local/java/bin/:/usr/local/kafka/bin/:/usr/local/scala/bin:/usr/local/zookeeper/' /etc/profile
[root@ zookeeper-kafka-scala]# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)




開始配置zookeeper集羣,三個集羣機器都配置如下:

 

## 編輯/usr/local/zookeeper/conf/zoo.cnf文件,內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
dataLogDir=/usr/local/zookeeper/log
clientPort=2181
maxClientCnxns=300
server.1=192.168.100.101:2888:3888     
server.2=192.168.100.102:2888:3888     
server.3=192.168.100.103:2888:3888

[root@ conf]# mkdir -p /data/zookeeper
[root@ conf]# mkdir -p /usr/local/zookeeper/log

#192.168.100.101 在zookeeper 中id是1 執行下面
[root@ conf]# echo 1 > /data/zookeeper/myid
#192.168.100.102 在zookeeper 中id是2 執行下面
[root@ conf]# echo 2 > /data/zookeeper/myid
#192.168.100.103 在zookeeper 中id是3 執行下面
[root@ conf]# echo 3 > /data/zookeeper/myid

三臺機器的防火牆放開zookeeper端口 2181,2888,3888

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2888 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3888 -j ACCEPT


啓動zookeeper,啓動完,會自動推選其中一臺是leader

[root@ bin]# cd  /usr/local/zookeeper/bin
[root@ bin]# ./zkServer.sh start
[root@ bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader



開始配置kafka集羣,三個集羣機器都配置如下:


編輯 /usr/local/kafka/config/server.properties
##broker標識,每個broker靠這個標識區別
## 192.168.100.101 是 1
## 192.168.100.102 是 2
## 192.168.100.102 是 3
broker.id=1
## 用來偵聽連接的端口,生產者或消費者連接該端口
port=9990
## 指定broker網絡地址,根據kafka所在的ip填寫
host.name=192.168.100.101
#host.name=192.168.100.102
#host.name=192.168.100.103
num.network.threads=4
##每個分區的備份個數,默認爲,值過大可能導致同步時延遲大
num.partitions=3
## zookeeper 集羣,kafka需要zookeeper來保存meata信息
zookeeper.connect=192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181
## 同CPU核數一樣就可以
num.io.threads=4
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
##日誌文件保存目錄
log.dirs=/data/kafka
num.recovery.threads.per.data.dir=1
log.segment.bytes=1073741824
## 日誌保留最長時間小時,以及日誌策略
log.retention.hours=24
log.retention.check.interval.ms=300000
log.cleaner.enable=true
log.cleanup.policy=delete

zookeeper.connection.timeout.ms=6000
controller.message.queue.size=10

## 每個topic默認分片存儲數量
default.replication.factor=2

## 允許上傳topic
delete.topic.enable=true
auto.create.topics.enable=false

編輯 /usr/local/kafka/bin/kafka-server-start.sh

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    #export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 
fi

# 修改上面的內容變成,KAFKA_HEAP_OPTS這個根據自己的主機進行配置,測試機器是4核8G,所以採用下面的配置:
# 這個配置成本機的IP -Djava.rmi.server.hostname=192.168.100.101
# 開啓jvm 的rmi配置可以讓kafka-manager提供更詳細的kafka操作統計數據

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then 
    export KAFKA_HEAP_OPTS="-Xmx3G -Xms3G -Xmn1G"
    export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.ho
stname=192.168.100.101"
fi

啓動kafka

[root@ bin]# /usr/local/kafka/bin/kafka-server-start.sh -daemon  /usr/local/kafka/config/server.properties
## 可以看到kafka進程是否啓動
[root@ bin]#   ps -ef |grep java


開放iptables防火牆,8990,9990端口

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8999 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 9990 -j ACCEPT


測試kafka集羣

[root@ bin]# cd /usr/local/kafka/bin/
[root@ bin]# ./kafka-topics.sh --zookeeper 192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181 --create  --topic test  
[root@ bin]# ./kafka-topics.sh --zookeeper 192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181  --list
test



192.168.100.100 安裝kafka-manager業務

[root@ src]# cd /usr/local/src
[root@ src]# unzip  kafka-manager-1.3.0.7.zip
[root@ src]# mv kafka-manager-1.3.0.7 /usr/local/kafka-manager


配置kafka-manager的配置文件 /usr/local/kafka-manager/conf/application.conf 

##修改zookeeper集羣ip
kafka-manager.zkhosts="192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181"



啓動kafka-manager, 防火牆放開9000端口

[root@ bin]# cd  /usr/local/kafka-manager/bin
[root@ bin]# ./kafka-manager


瀏覽器訪問 http://192.168.100.100:9000,可以看到下面界面,說明安裝完成

wKiom1gqyRiyf9jzAAA_K9pu3HE838.png-wh_50


添加一個集羣進入,填寫後,其它默認,點擊save,那麼就可以看到標題已經添加

wKioL1gqywWTEGnAAABs8srE9IA016.png-wh_50


由於都是web操作,比較簡單,其它的功能可以自己試試,這個不是重點,這裏不多說




kafka集羣壓力測試

[root@ bin]# cd /usr/local/kafka/bin/
## 消費者壓力測試,單線程壓500w條消息
[root@ bin]#  ./kafka-consumer-perf-test.sh --zookeeper 192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181 --messages 50000000 --topic test --threads 1
## 生產者壓力測試,8個線程,壓500w條消息,每條消息大小100B,每批10000條
[root@ bin]#  ./kafka-producer-perf-test.sh --messages 5000000 --message-size 100  --batch-size 10000 --topics test  --threads 8 --broker-list 192.168.100.101:2181,192.168.100.102:2181,192.168.100.103:2181

由於搭建的環境已經在生產使用,就不截圖列出







       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章