Kafka+Zookeeper集羣搭建

Kafka+Zookeeper集羣搭建

1、介紹

Apache kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,是消息中間件的一種,用於構建實時數據管道和流應用程序

2、安裝前看官方文檔(2.0.0版本)

學習一門技術,從官網入手是瞭解和學習最快的方法。

2.1 Kafka(2.0.0)

官方下載路徑:http://kafka.apache.org/downloads
官方網站:http://kafka.apache.org/
推薦官方文檔:https://kafka.apache.org/documentation/#configuration
中文文檔:https://www.orchome.com/kafka/index

2.2 Zookeeper(3.5.5)

官方鏡像下載路徑:http://mirror.bit.edu.cn/apache/zookeeper/
官方網站:https://zookeeper.apache.org/
推薦官方文檔:https://zookeeper.apache.org/doc/r3.5.5/
中文文檔:https://blog.csdn.net/java_66666/article/details/81015302

主要要了解各組件的兼容性和硬件的兼容性。服務器的型號版本。在安裝最新版本的集羣時主要數據各組件的兼容性版本號要一致。以及版本的穩定性。

3 基礎環境準備

本系統爲RedHat7.5 ;如果已經搭建過其他集羣可省略。

3.1 靜態IP設置(每個節點)

vim /etc/sysconfig/network-scripts/ifcfg-ens192 
service network restart 

重啓網絡生效
在這裏插入圖片描述

3.2 編輯 /etc/hosts文件(每個節點)

vim /etc/hosts

在這裏插入圖片描述

3.3 關閉防火牆、禁止防火牆開啓自啓(每個節點)

systemctl stop firewalld 關閉防火牆
systemctl disable firewalld 禁止防火牆開機自啓
vim /etc/selinux/config —> SELINUX=disabled (修改)

※如果不關閉,集羣各節點間一定要相互添加白名單。但是外部無法訪問。
– 列出zone truste的白名單

firewall-cmd --permanent --zone=trusted --list-sources

– 增加 192.168.100.* 網段到zone trusted(信任)

firewall-cmd --permanent --zone=trusted --add-source=ip

– 添加後需要重新加載

firewall-cmd --reload

SSH免密登陸(主節點)

ssh-keygen

然後三個回車,出現如下
在這裏插入圖片描述
複製公鑰到其他節點

ssh-copy-id	-i	~/.ssh/id_rsa.pub	root@bigdata02

注意:
如果執行上面的命令如果出現.ssh目錄不存在。
需要去其他節點執行ssh localhost

3.5 配置NTP 服務(所有節點)

統一時區: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安裝ntp: yum -y install ntp
主節點配置: vim /etc/ntp.conf 參考如下圖配置
主節點:

server  127.127.1.0
fudge   127.127.1.0 stratum 10

在這裏插入圖片描述
從節點:bigdata02/ip
在這裏插入圖片描述
配置完重新啓動ntp服務:service ntpd restart
設置開機自啓:systemctl enable ntpd.service
查看當前同步的時間服務器:ntpq -p
出現如下圖代表配置正確。
在這裏插入圖片描述

3.6 JDK安裝(所有節點)

查詢已安裝的java: rpm -qa | grep java
卸載openJava (.noarch可以不用卸載)
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0
安裝JDK1.8版本以上
然後在/etc/profile 下配置環境變量。在執行
source /etc/profile

4 Zookeeper集羣的安裝

(1)下載Zookeeper安裝包。

https://zookeeper.apache.org/releases.html#download 

下載Zookeeper:apache-zookeeper-3.5.5-bin.tar.gz
(2)規劃安裝路徑和數據目錄。
/export/servers/
/data/zookeeper/data /data/zookeeper/logs
(3)通過xftp上傳到指定目錄安裝包解壓

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /export/servers

(4)重新命名zookeeper

mv  apache-zookeeper-3.5.5  zookeeper

4.1 修改配置文件(至少三節點)

1、進入/data/zookeeper/data的目錄下。主要進行創建myid文件。

注意整個集羣的myid都要不相同。

cd /data/zookeeper/data
vim myid   #1,2,3...

在這裏插入圖片描述
2、進入/export/servers/zookeeper/conf目錄,將zoo.simp.cfg文件改名爲

mv	zoo.simp.cfg 	zoo.cfg

在這裏插入圖片描述
參數解釋:

  • tickTime:發送心跳的間隔時間,單位:毫秒
  • dataDir:zookeeper保存數據的目錄。
  • clientPort:客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
  • initLimit: 這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶連接 Zookeeper服務器的客戶端,而是 Zookeeper 服務器集羣中連接到 Leader 的Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。
      當已經超過 10個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。
      總的時間長度就是 10*2000=20 秒
  • syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,
    總的時間長度就是 2*2000=4 秒
  • server.A=B:C:D:其 中
    A 是一個數字,表示這個是第幾號服務器(myid);
         B 是這個服務器的 ip地址;
         C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;
         D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,
         而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,
         所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。

4.2 配置環境變量

vim /etc/profile
在這裏插入圖片描述
source /etc/profile

4.3 啓動zookeeper(所有節點都要啓動)

由於已經配置了環境變量可以通過環境變量運行。

zkServer.sh	start

顯示:Starting zookeeper ... STARTED 表示啓動成功
執行完畢,可以通過執行
zkServer.sh status
提示了這個節點了角色follow/leader說明集羣啓動成功。

4.4 注意

主要是要創建myid文件,以及配置文件中需要指向這個id。

5. Kafka2.0.0安裝(最少三個節點)

(1)下載kafka安裝包。
訪問http://kafka.apache.org/downloads 下載Kafka
Kafka_2.11-2.0.0.tar.gz
(2)規劃安裝路徑和數據目錄。
export/servers/
/data/kafka/logs
(3)通過xftp上傳到指定目錄安裝包解壓
tar -zxvf Kafka_2.11-2.0.0.tar.gz -C /export/servers
(4)重新命名kafka
mv Kafka_2.11-2.0.0.tar.gz kafka

5.1 修改配置文件

進入config目錄server.properties的文件。
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

5.2 重要參數介紹

Broker.id: 1
#kafka當前節點的id
listeners=PLAINTEXT://10.128.100.86:9092
#監聽IP和端口
log.dirs=/data/kafka/logs
#消息的存放目錄
num.partitions=3
#分區的數目
offsets.topic.replication.factor=3
#偏移主題的複製因子
transaction.state.log.replication.factor=3
#事務主題的複製因子
transaction.state.log.min.isr=2
#重寫了ISR
zookeeper.connect= 10.128.100.67:2181,10.128.100.68:2181,10.128.100.69:2181
#連接Zookeeper
zookeeper.connection.timeout.ms=6000
#連接超時

啓動kafka(所有節點)

進入環境安裝的目錄/export/servers/kafka。

nohup bin/kafka-server-start.sh config/server.properties & #啓動kafka

可以通過jps 命令查看java進程的啓動。是否有kafka來查看進程是否啓動成功。

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