- 深入理解Kafka:核心設計與實踐原理
- 朱忠華
- 1664字
- 2019-07-09 14:50:29
1.2 安裝與配置
本節詳細介紹Kafka運行環境的搭建,為了節省篇幅,本節的內容以Linux CentOS作為安裝演示的操作系統,其他 Linux 系列的操作系統也可以參考本節的內容。具體的操作系統的信息如下:

由圖1-1可知,搭建Kafka運行環境還需要涉及ZooKeeper,Kafka和ZooKeeper都是運行在JVM之上的服務,所以還需要安裝JDK。Kafka從2.0.0版本開始就不再支持JDK7及以下版本,本節就以JDK8為例來進行演示。
1.JDK的安裝與配置
很多學習Kafka的讀者也都是JVM系語言的支持者,如果你的操作系統中已經安裝了JDK8及以上版本則可以跳過這段內容。
安裝JDK的第一步就是下載JDK 1.8的安裝包,可以進入Oracle官網頁面進行下載。示例中選擇的安裝包是 jdk-8u181-linux-x64.tar.gz,我們這里將其先復制至/opt 目錄下,本書所有與安裝有關的操作都在這個目錄下進行。
其次將/opt目錄下的安裝包解壓,相關信息如下:


然后配置JDK的環境變量。修改/etc/profile文件并向其中添加如下配置:

再執行source/etc/profile命令使配置生效,最后可以通過java-version命令驗證 JDK 是否已經安裝配置成功。如果安裝配置成功,則會正確顯示出 JDK 的版本信息,參考如下:

2.ZooKeeper安裝與配置
ZooKeeper是安裝Kafka集群的必要組件,Kafka通過ZooKeeper來實施對元數據信息的管理,包括集群、broker、主題、分區等內容。
ZooKeeper是一個開源的分布式協調服務,是Google Chubby的一個開源實現。分布式應用程序可以基于ZooKeeper實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master選舉、配置維護等功能。在ZooKeeper中共有3個角色:leader、follower和observer,同一時刻 ZooKeeper集群中只會有一個leader,其他的都是follower和observer。observer不參與投票,默認情況下 ZooKeeper 中只有 leader 和 follower 兩個角色。更多相關知識可以查閱ZooKeeper官方網站來獲得。
安裝ZooKeeper的第一步也是下載相應的安裝包,安裝包可以從官網中獲得,示例中使用的安裝包是zookeeper-3.4.12.tar.gz,同樣將其復制到/opt目錄下,然后解壓縮,參考如下:


第二步,向/etc/profile配置文件中添加如下內容,并執行source/etc/profile命令使配置生效:

第三步,修改 ZooKeeper 的配置文件。首先進入$ZOOKEEPER_HOME/conf 目錄,并將zoo_sample.cfg文件修改為zoo.cfg:

然后修改zoo.cfg配置文件,zoo.cfg文件的內容參考如下:

默認情況下,Linux系統中沒有/tmp/zookeeper/data和/tmp/zookeeper/log這兩個目錄,所以接下來還要創建這兩個目錄:

第四步,在${dataDir}目錄(也就是/tmp/zookeeper/data)下創建一個myid文件,并寫入一個數值,比如0。myid文件里存放的是服務器的編號。
第五步,啟動Zookeeper服務,詳情如下:

可以通過zkServer.sh status命令查看Zookeeper服務狀態,示例如下:

以上是關于ZooKeeper單機模式的安裝與配置,一般在生產環境中使用的都是集群模式,集群模式的配置也比較簡單,相比單機模式而言只需要修改一些配置即可。下面以3臺機器為例來配置一個ZooKeeper集群。首先在這3臺機器的/etc/hosts文件中添加3臺集群的IP地址與機器域名的映射,示例如下(3個IP地址分別對應3臺機器):

然后在這3臺機器的zoo.cfg文件中添加以下配置:

為了便于講解上面的配置,這里抽象出一個公式,即 server.A=B:C:D。其中 A 是一個數字,代表服務器的編號,就是前面所說的myid文件里面的值。集群中每臺服務器的編號都必須唯一,所以要保證每臺服務器中的myid文件中的值不同。B代表服務器的IP地址。C表示服務器與集群中的 leader 服務器交換信息的端口。D 表示選舉時服務器相互通信的端口。如此,集群模式的配置就告一段落,可以在這3臺機器上各自執行zkServer.sh start命令來啟動服務。
3.Kafka的安裝與配置
在安裝完JDK和ZooKeeper之后,就可以執行Kafka broker的安裝了,首先也是從官網中下載安裝包,示例中選用按照包的是kafka_2.11-2.0.0.tgz,將其復制至/opt目錄下并進行解壓縮,示例如下:

接下來需要修改broker的配置文件$KAFKA_HOME/conf/server.properties。主要關注以下幾個配置參數即可:

如果是單機模式,那么修改完上述配置參數之后就可以啟動服務。如果是集群模式,那么只需要對單機模式的配置文件做相應的修改即可:確保集群中每個broker的broker.id配置參數的值不一樣,以及listeners配置參數也需要修改為與broker對應的IP地址或域名,之后就可以各自啟動服務。注意,在啟動 Kafka 服務之前同樣需要確保 zookeeper.connect參數所配置的ZooKeeper服務已經正確啟動。
啟動Kafka服務的方式比較簡單,在$KAFKA_HOME目錄下執行下面的命令即可:

如果要在后臺運行Kafka服務,那么可以在啟動命令中加入-daemon參數或&字符,示例如下:

可以通過jps命令查看Kafka服務進程是否已經啟動,示例如下:

jps命令只是用來確認Kafka服務的進程已經正常啟動。它是否能夠正確地對外提供服務,還需要通過發送和消費消息來進行驗證,驗證的過程可以參考1.3節的內容。
- Mastering Concurrency Programming with Java 8
- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- 軟件界面交互設計基礎
- 深入實踐Spring Boot
- Vue.js 3.0源碼解析(微課視頻版)
- 3D少兒游戲編程(原書第2版)
- C#程序設計
- 第一行代碼 C語言(視頻講解版)
- C++反匯編與逆向分析技術揭秘(第2版)
- Python 3.7從入門到精通(視頻教學版)
- Python程序設計與算法基礎教程(第2版)(微課版)
- 時空數據建模及其應用
- 從零開始:UI圖標設計與制作(第3版)
- 深度探索Go語言:對象模型與runtime的原理特性及應用
- IoT Projects with Bluetooth Low Energy