ZooKeeper和Kafka集群部署 ZooKeeper集群部署 準備三台機器搭建集群,所有命令都在三台機器上運行 基礎環境配置 主機名配置 # hostnamectl set-hostname zookeeper1 # hostnamectl set-hostname zookeeper2 # ...
ZooKeeper和Kafka集群部署
ZooKeeper集群部署
準備三台機器搭建集群,所有命令都在三台機器上運行
基礎環境配置
主機名配置
# hostnamectl set-hostname zookeeper1
# hostnamectl set-hostname zookeeper2
# hostnamectl set-hostname zookeeper3
# bash 重啟生效
配置文件
三台機器修改
# vi /etc/hosts
搭建集群
安裝環境
三台機器安裝JDK環境
# 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文件
在三台機器上創建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集群部署
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