設備和資源準備
- 多臺服務器(ps:我這里用了三臺)
- kafka_2.11-2.3.1.tgz
- jdk8以上的環境
首先要關閉防火墻
查看防火墻狀態: firewall-cmd --state 停止防火墻:systemctl stop firewalld.service 開機禁止防火墻: systemctl disable firewalld.service
服務器分布如下:
服務器 | Myid |
---|---|
10.240.1.5 | 3 |
10.240.1.6 | 2 |
10.240.1.7 | 1 |
解壓kafka jar包并修改配置
tar -zxvf kafka_2.11-2.3.1.tgz
解壓之后進入kafka文件夾
新建文件夾log和zookeeper 目錄結構如下
ps:logs文件夾是系統自動生成的
1、創建myid文件,進入zookeeper之后
vi myid
然后輸入
服務器 | myid |
---|---|
10.240.1.5 | 3 |
10.240.1.6 | 2 |
10.240.1.7 | 1 |
不同的服務器對應不同的myid,切記重復。
然后在當前文件夾下執行
echo "1" > myid
echo "2" > myid
echo "3" > myid
2、然后進入config文件夾,修改kafka的配置文件 server.properties
broker.id=2
這個在不同的服務器上修改成對應的編號,要和myid保持一致。
listeners=PLAINTEXT://10.240.1.5:9092
advertised.listeners=PLAINTEXT://10.240.1.5:9092
修改成自己服務器的ip
zookeeper.connect=10.240.1.5:2181,10.240.1.6:2181,10.240.1.7:2181
指定日志生成位置
log.dirs=/u01/app/kafka/kafka_2.11-2.3.1/log/kafka
以上是kafka的配置文件修改
3、修改zookeeper的配置文件 zookeeper.properties
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
server.1=10.240.1.5:2888:3888
server.2=10.240.1.6:2888:3888
server.3=10.240.1.7:2888:3888
末尾加上以上配置信息
指定日志生產位置
dataDir=/root/kafka/kafka_2.11-2.3.1/zookeeper dataLogDir=/root/kafka/kafka_2.11-2.3.1/log/zookeeper
4、關鍵的一步,核對和broker.id保持一致的設置
進入到 /root/kafka/kafka_2.11-2.3.1/log/kafka
然后
編輯這個文件,里面有broker.id= 修改自己對應的id
至此修改配置的工作已完成,切記每臺服務器都不要漏掉
運行zookeeper集群和kafka集群
1、首先是啟動每臺服務器上的zookeeper
后臺啟動命令
nohup ./zookeeper-server-start.sh ../config/zookeeper.properties >../log/zookeeper/zookeeper-run.log 2>&1 &
日志位置路徑要修改成自己的路徑信息
前臺啟動命令
./zookeeper-server-start.sh ../config/zookeeper.properties
2、啟動每臺服務器上的kafka
后臺啟動命令
nohup ./kafka-server-start.sh ../config/server.properties >../log/kafka/kafka-run.log 2>&1 &
前臺啟動命令
./kafka-server-start.sh ../config/server.properties
3、創建topic
我們把myid=1的作為主節點,在此服務器上創建topic主題
./kafka-topics.sh --create --zookeeper 10.240.1.5:2181,10.240.1.6:2181,10.240.1.7:2181 --replication-factor 1 --partitions 1 --topic test_kafkaEFR
然后去每臺服務器檢查是否創建成功
./kafka-topics.sh -list -zookeeper localhost:2181
4、發送消息,測試消息同步
我們在主節點服務器上發送消息
./kafka-console-producer.sh --broker-list 10.240.1.5:9092 ,10.240.1.6:9092 ,10.240.1.7:9092 --topic test_kafkaEFR
然后各自服務器消費消息
./kafka-console-consumer.sh --bootstrap-server 10.240.1.5:9092 ,10.240.1.6:9092 ,10.240.1.7:9092 --topic test_kafkaEFR --from-beginning
如果能同步接收,至此集群部署完成 ps:啟動kafka的時候要同時啟動,不然會報錯
卡夫卡消息讀取的客戶端
微信圖片_20200116101851.png