準備三臺機器搭建集羣,全部命令都在三臺機器上運行java
# hostnamectl set-hostname zookeeper1bash
# hostnamectl set-hostname zookeeper2服務器
# hostnamectl set-hostname zookeeper3ide
# bash 重啓生效測試
三臺機器修改3d
# vi /etc/hostsserver
三臺機器安裝JDK環境blog
# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel進程
查看java版本部署
# java -version
將zookeeper壓縮包上傳到三臺機器的/root目錄,進行解壓
# tar -zxvf zookeeper-3.4.14.tar.gz
修改三臺機器的配置文件
# cd zookeeper-3.4.14/conf
# mv zoo_sample.cfg zoo.cfg
在文件最後加入三行
# vi zoo.cfg
initLimit:ZooKeeper集羣模式下包含多個zk進程,其中一個進程爲leader,餘下的進程爲follower。當follower最初與leader創建鏈接時,它們之間會傳輸至關多的數據,尤爲是follower的數據落後leader不少。initLimit配置follower與leader之間創建鏈接後進行同步的最長時間
syncLimit:配置follower和leader之間發送消息,請求和應答的最大時間長度
tickTime:tickTime則是上述兩個超時配置的基本單位,例如對於initLimit,其配置值爲5,說明其超時時間爲 2000ms * 5 = 10秒
server.id=host:port1:port2:其中id爲一個數字,表示zk進程的id,這個id也是dataDir目錄下myid文件的內容。host是該zk進程所在的IP地址,port1表示follower和leader交換消息所使用的端口,port2表示選舉leader所使用的端口
dataDir:其配置的含義跟單機模式下的含義相似,不一樣的是集羣模式下還有一個myid文件。myid文件的內容只有一行,且內容只能爲1 - 255之間的數字,這個數字亦即上面介紹server.id中的id,表示zk進程的id
在三臺機器上建立myid文件
# mkdir /tmp/zookeeper
# vi /tmp/zookeeper/myid
文件裏的數字爲zoo.cfg的指定值,第二臺機器爲2,第三臺爲3
關閉三臺機器的防火牆
# systemctl stop firewalld
啓動zookeeper服務
# cd zookeeper-3.4.14/bin
# ./zkServer.sh start
查看啓動狀態
# ./zkServer.sh status
兩臺機器爲follower,一臺爲leader
kafka服務依賴於zookeeper服務。因此用搭建過zookeeper集羣的三臺機器進行構建kafka集羣。全部命令都在三臺機器上運行
將kafka壓縮包上傳到三臺機器的/root目錄,進行解壓
# tar -zxvf kafka_2.11-1.1.1.tgz
在三臺機器上修改配置文件
# cd kafka_2.11-1.1.1/config
# vi server.properties
將配置文件中如下兩行註釋掉(在文本前加#)
#broker.id=0
#zookeeper.connect=localhost:2181
在文件底部添加配置
第一臺機器
第二臺機器
第三臺機器
broker.id:每臺機器不能同樣
zookeeper.connect:有3臺ZooKeeper服務器
listeners:在配置集羣的時候,必須設置,否則之後的操做會報找不到leader的錯誤。
在三臺機器上啓動服務
# cd kafka_2.11-1.1.1/bin
# ./kafka-server-start.sh -daemon ../config/server.properties
查看服務
# jps
第一臺機器
第二臺機器
第三臺機器
# cd kafka_2.11-1.1.1/bin
在第一臺機器建立topic命令
# ./kafka-topics.sh --create --zookeeper 192.168.37.12:2181 --replication-factor 1 --partitions 1 --topic test
成功輸出「Created topic "test"
在第二臺和第三臺機器分別測試查看topic
# ./kafka-topics.sh --list --zookeeper 192.168.37.13:2181
# ./kafka-topics.sh --list --zookeeper 192.168.37.14:2181
成功輸出test