1. 程式人生 > 實用技巧 >kafka分散式叢集的搭建

kafka分散式叢集的搭建

使用ZooKeeper+kafka搭建高可用叢集。

1 前提準備

  • ZooKeeper安裝包:apache-zookeeper-3.6.1-bin.tar.gz

  • kafka安裝包:kafka_2.13-2.6.0.tgz

  • jdk1.8及以上(自行配置環境變數)

  • 假設為三臺伺服器搭建kafka叢集(192.168.12.86、192.168.12.87、192.168.12.88)

2 叢集架構

2.1 ZooKeeper叢集方案

主機IP訊息埠通訊埠節點目錄
192.168.12.86 2181 2888:3888 /db/dev/env/zookeeper/zk1
192.168.12.87
2181 2888:3888 /db/dev/env/zookeeper/zk2
192.168.12.88 2181 2888:3888 /db/dev/env/zookeeper/zk3

2.2 kafka叢集

主機IP叢集通訊埠節點目錄
192.168.12.86 9092 /db/dev/env/kafka/kafkaServer/kafka
192.168.12.87 9092 /db/dev/env/kafka/kafkaServer/kafka
192.168.12.88 9092 /db/dev/env/kafka/kafkaServer/kafka

3 ZooKeeper叢集搭建

3.1 解壓安裝包

[dev@datanode6 zookeeper]$ tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz -C zkServer/

3.2 修改配置檔案

配置環境變數命令:

vim /etc/profile

新增後

#zookeeper
export ZOOKEEPER_HOME=/db/dev/env/zookeeper/zkServer/apache-zookeeper-3.6.1-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH

#JDK
export JAVA_HOME=/db/java8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH
=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

使環境變數生效:

source /etc/profile

新增zoo.cfg

cd /opt/zookeeper/zookeeper-3.4.13/conf

複製一份zoo_sample.cfg改名為zoo.cfg並新增配置

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

修改為:

dataDir=/db/dev/env/zookeeper/zkServer/apache-zookeeper-3.6.1-bin

新增:vim zoo.cfg

dataDir=/db/dev/env/zookeeper/zkServer/zkinfo/data/data_1
dataLogDir=/db/dev/env/zookeeper/zkServer/zkinfo/logs/logs_1
server.0=192.168.12.86:2888:3888
server.1=192.168.12.87:2888:3888
server.2=192.168.12.88:2888:3888

新增data資料夾:

[root@hadoop2 zookeeper-3.4.13]# mkdir data

建立myid根據serverip對應填寫0 1 2

[root@hadoop2 data]# vim myid

3.3 修改防火牆開啟對應埠

(以下命令為centos6 請自行為埠開啟防火牆)

vi /etc/sysconfig/iptables 

新增

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2888 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3888 -j ACCEPT

備註:這裡使用2181/2888/3888是Zookeeper需要用到的埠號,22埠是用來遠端的埠,可以不用新增。一般將需要開放的埠號新增到“-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT”行的上面或者下面,切記不要新增到最後一行,否則防火牆重啟後不生效

重啟防火牆:

service iptables restart 

3.4 啟動 ZooKeeper

zkServer.sh start

檢視狀態

zkServer.sh status

4 Kafka搭建叢集

4.1 請將程式包放到相應的目錄下解壓操作

cd /kafka/config

vim server.properties
//三個節點都要根據不同的ip 設定broker.id=0 1 2
broker.id=0
delete.topic.enable=true
listeners=PLAINTEXT://192.168.12.8*:9092
log.dirs==/db/dev/env/kafka/kafkaServer/kafkainfo/kafka-logs1
zookeeper.connect=192.168.12.86:2181,192.168.12.87:2181,192.168.12.88:2181
cd bin
./kafka-server-start.sh -daemon ../config/server.properties


jps 後出現
20613 QuorumPeerMain
38582 Kafka