linux部署kafka單機叢集環境
一、說明:
作業系統:linux
kafka版本資訊:kafka_2.11-0.8.2.1
二、具體操作:
1、安裝kafka之間先檢查作業系統中是否裝有JDK,若沒有點選開啟連結有JDK安裝步驟。
2、關閉SELINUX、開啟防火牆9092埠
2.1、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉
SELINUX=disabled #增加
:wq! #儲存退出
setenforce 0 #使配置立即生效
2.2、配置防火牆,開啟9092埠
vi /etc/sysconfig/iptables #編輯防火牆配置檔案
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #儲存退出
service iptables restart #最後重啟防火牆使配置生效
3、安裝kafka
3.1、下載kafka
cd /usr/local/src
wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
注意,kafka_2.11-0.8.2.1.tgz版本是已經編譯好的版本,解壓就能使用。
tar -xzvf kafka_2.11-0.8.2.1.tgz #解壓
mv kafka_2.11-0.8.2.1 /usr/local/kafka #移動到安裝目錄
3.2、配置kafka
mkdir /usr/local/kafka/log/kafka #建立kafka日誌目錄
cd /usr/local/kafka/config #進入配置目錄
vi server.properties #編輯修改相應的引數
broker.id=0
port=9092 #埠號
host.name=127.0.0.1 #為本地IP
log.dirs=/usr/local/kafka/log/kafka #日誌存放路徑,上面建立的目錄
zookeeper.connect=localhost:2181 #zookeeper地址和埠,單機配置部署,localhost:2181
:wq! #儲存退出
(ps:如若host.name的ip不設定為127.0.0.1,會報一下錯誤:
Bug:Socket
server failed to bind to xxx.xxx.xxx.xxx:9092: Cannot assign requested address.
在ECS上面配置kafka的地址千萬不要寫外部地址,比如139.225.155.153(我隨便寫的),這樣事繫結不上去的,因為 這個是阿里雲內部;它會去內網去尋找他的地址,所以配成127.0.0.1 會自動識別成本機地址/不然應該使用外網的對映地址。
mkdir /usr/local/kafka/zookeeper #建立zookeeper目錄
mkdir /usr/local/kafka/log/zookeeper #建立zookeeper日誌目錄
cd /usr/local/kafka/config #進入配置目錄
vi zookeeper.properties #編輯修改相應的引數
dataDir=/usr/local/kafka/zookeeper #zookeeper資料目錄
dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日誌目錄
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
:wq! #儲存退出
4、建立啟動、關閉kafka指令碼
cd /usr/local/kafka #進入kafka根目錄
#建立kafka啟動指令碼
vi kafkastart.sh #編輯,新增以下程式碼
#!/bin/sh
cd /usr/local/kafka/bin/zookeeper-server-start.sh /home/xuqiang/kafka/config/zookeeper.properties &
sleep 3 #等3秒後執行
#啟動kafka
cd /usr/local/kafka/bin/kafka-server-start.sh /home/xuqiang/kafka/config/server.properties &
:wq! #強制儲存退出
#建立kafka關閉指令碼
vi kafkastop.sh #編輯,新增以下程式碼:
#!/bin/sh
#關閉zookeeper
/usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &
sleep 3 #等3秒後執行
#關閉kafka
/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
:wq! #儲存退出
#新增指令碼執行許可權
chmod +x kafkastart.sh
chmod +x kafkastop.sh
5、設定指令碼開機自動啟動
vi /etc/rc.d/rc.local #編輯,在最後新增一行
sh /usr/local/kafka/kafkastart.sh & #設定開機自動在後臺執行指令碼
:wq! #儲存退出
sh /usr/local/kafka/kafkastart.sh #啟動kafka
sh /usr/local/kafka/kafkastop.sh #關閉kafka
至此,Linux下Kafka單機安裝配置完成。
6、liunx下kafka生產者和消費者模式測試
6.1、啟動kafka sh /usr/local/kafka/kafkastart.sh
6.2、建立topic test
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 -- topic test
6.3、檢視topic
./usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
6.4、啟動producer釋出訊息
./usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
(ps:此時在命令列輸入: hello world!)
6.5、啟動consumer消費訊息
./usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
(ps:此時會顯示hello world!)
測試結果如下(我開了兩個視窗便與測試):
(ps:圖1為producer生產者,圖2為consumer消費者)