Kafka0.8.0集羣構建

三臺集測環境機器

IP:192.168.3.97 IP:192.168.3.145  IP:192.168.3.146

一. Zookeeper集羣構建

ZooKeeper集羣中具有兩個關鍵的角色:Leader和Follower。集羣中所有的結點作爲一個整體對分佈式應用提供服務,集羣中每個結點之間都互相連接。
ZooKeeper採用一種稱爲Leader election的選舉算法。在整個集羣運行過程中,只有一個Leader,其他的都是Follower,如果ZooKeeper集羣在運行過程中Leader出了問題,系統會採用該算法重新選出一個Leader。
ZooKeeper集羣啓動的時候,會首先選出一個Leader,在Leader election過程中,某一個滿足選舉算的結點就能成爲Leader。
可以使用自帶的zookeeper.
命令:$nohup bin/zookeeper-server-start.sh config/zookeeper.properties &  
不過我選擇了自己搭建zookeeper集羣。

 

下載並解壓zookeeper.
修改$zookeeper_home/conf 下面的配置文件
cp zoo_simple.cfg zoo.cfg
內容修改爲:

dataDir=/home/data/zookeeper
clientPort=2181
server.1=192.168.3.97:2888:3888
server.2=192.168.3.145:2888:3888
server.3=192.168.3.146:2888:3888

在我們配置的dataDir指定的目錄下面,創建一個myid文件,裏面內容爲一個數字,用來標識當前主機,conf/zoo.cfg文件中配置的server.X中X爲什麼數字,則myid文件中就輸入這個數字,例如:
 /home/data/zookeeper/myid
bin/zkServer.sh start 啓動zookeeper

 

二. Kafka集羣構建

1. 下載並解壓Kafka
看官方文檔裏介紹,先得構建scala環境, 但是我直接下載的是已經編譯好的。
我下載的是http://mirror.bit.edu.cn/apache/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz 。
> tar xzf kafka-<VERSION>.tgz
> cd kafka-<VERSION>
> ./sbt update
> ./sbt package
> ./sbt assembly-package-dependency

2. 修改配置文件
修改 conf/server.properties
zookeeper.connect=192.168.3.97:2181,192.168.3.145:2181,192.168.3.146:2181
broker.id分別改成
broker.id=1
broker.id=2
broker.id=3
host.name分別改成(如果不改,client訪問集羣時,如果沒在hosts配置對應機器的 hostname,訪問將會報錯)

host.name=192.168.3.97
host.name=192.168.3.145
host.name=192.168.3.146
可根據需求修改
port: broker節點使用端口號 默認 9092
log.dir: 消息目錄位置

3. 啓動Kafka
cd /home/kafka
bin/kafka-server-start.sh config/server.properties &
4. 創建Topic並查看
bin/kafka-create-topic.sh --zookeeper 192.168.3.97:2181 --partition 1 --topic leo-test
bin/kafka-list-topic.sh --zookeeper 192.168.3.97:2181
topic: leo-test partition: 0 leader: 1 replicas: 1 isr: 1
說明:
    partiton: partion id,由於此處只有一個partition,因此partition id 爲0
    leader:當前負責讀寫的lead broker id
    relicas:當前partition的所有replication broker list
    isr:relicas的子集,只包含出於活動狀態的broker
    bin/kafka-create-topic.sh --zookeeper 192.168.197.3:97 --replica 2 --partition 2 --topic leo-test2
    topic: leo-test partition: 0 leader: 1 replicas: 1 isr: 1
    topic: leo-test2 partition: 0 leader: 1 replicas: 1,2 isr: 1,2
    topic: leo-test2 partition: 1 leader: 1 replicas: 1,2 isr: 1,2
5.試着幹掉一個非leader 的broker,然後在幹掉leader broker,看看會有什麼情況發生。
    命令:
    pkill -9 -f server.properties

安裝過程遇到的問題:
1. kafka啓動後提示
Unrecognized VM option '+UseCompressedOops'
Could not create the Java virtual machine.
開始以爲是內存大小的問題, 後來發現不是,是JDK的問題, 我用的32位centos,jdk1.6_24,  換成JDK1.7依然報錯。
查看 bin/kafka-run-class.sh
找到
if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then
  KAFKA_JVM_PERFORMANCE_OPTS="-server  -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
fi
去掉-XX:+UseCompressedOops
JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties &
啓動成功

發佈了61 篇原創文章 · 獲贊 0 · 訪問量 5130
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章