1. 程式人生 > 實用技巧 >2.kafka叢集環境搭建

2.kafka叢集環境搭建

2.1.叢集主機規劃

序號機器名稱ip/mac地址硬體資源安裝服務
1 cdh1 root/server123 192.168.80.100,00:50:56:2B:5B:EF cpu:2核 , 記憶體:2.5g ,硬碟20g ,網絡卡:千兆網絡卡 jdk、zookeeper、kafka
2 cdh2 root/server123 192.168.80.101,00:50:56:39:23:67 cpu:2核 , 記憶體:2.5g ,硬碟20g ,網絡卡:千兆網絡卡 jdk、zookeeper、kafka
3 cdh3 root/server123 192.168.80.102,00:50:56:3E:3A:0B cpu:2核 , 記憶體:2.5g ,硬碟20g ,網絡卡:千兆網絡卡
jdk、zookeeper、kafka

說明:叢集主機之間需要配置ssh免密碼登入

免密登入參考:https://www.cnblogs.com/luzhanshi/p/13369797.html

安裝zookeeper叢集

下載zookeeper

#zookeeper官網地址:
http://zookeeper.apache.org/
一個分散式協調服務,管理我們的叢集
官網提供配置說明:https://zookeeper.apache.org/doc/current/zookeeperStarted.html

上傳解壓

解壓到

/usr/local/zookeeper/:

配置

選單進入conf目錄下面,將zoo_sample.cfg複製一份到本目錄並改名為zoo.cfg

vim編輯該配置檔案:

#編輯檔案:
    vim zoo.cfg
    
----------------------------------------------------------------------------
# The number of milliseconds of each tick
#時間單元,zk中的所有時間都是以該時間單元為基礎,進行整數倍配置(單位是毫秒,下面配置的是2秒)
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
#follower在啟動過程中,會從leader同步最新資料需要的最大時間。如果叢集規模比較大,可以調大該引數
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
#leader與叢集中所有機器進行心跳檢查的最大時間。如果超出該時間,某follower沒有迴應,則說明該follower下線
syncLimit=5
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. #事務日誌輸出目錄 dataDir=/usr/local/zookeeper/zookeeper-3.4.5-cdh5.14.0/zkdatas
# the port at which the clients will connect
#客戶端連線埠
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#需要保留檔案數目,預設就是3個
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#自動清理事務日誌和快照檔案的頻率,這裡是1個小時
autopurge.purgeInterval=1

#叢集伺服器配置,數字1/2/3需要與myid檔案一致。右邊兩個埠,2888表示資料同步和通訊埠;3888表示選舉埠
server.1=域名1:2888:3888
server.2=域名2:2888:3888
server.3=域名3:2888:3888

上面我的域名設定是my.server1;my.server2;my.server3

建立資料目錄和myid

#建立資料儲存目錄:
    mkdir -p /usr/local/zookeeper/zookeeper-3.4.5-cdh5.14.0/zkdatas 
#建立myid:
  cd
/usr/local/zookeeper/zookeeper-3.4.5-cdh5.14.0/zkdatas
  touch myid
  並編輯myid內容為1

分發到其它主機節點

注意,下面語句是以我的其他兩天伺服器主機別名分別是server02和server03為基礎

#分發到node02節點,並修改myid內容為2:
     scp -r zookeeper-3.4.5-cdh5.14.0/ server02:$PWD

#分發到node03節點,並修改myid內容為3:
     scp -r zookeeper-3.4.5-cdh5.14.0/ server03:$PWD

啟動zookeeper叢集

分別在node01/node02/node03節點啟動/停止:
    /usr/local/zookeeper/zookeeper-3.4.5-cdh5.14.0/bin/zkServer.sh start/stop
#檢視叢集狀態:
/usr/local/zookeeper/zookeeper-3.4.5-cdh5.14.0/bin/zkServer.sh status

如果在檢視狀態的時候出現如下錯誤:

出現這個問題有一下幾種可能性:

1.防火牆沒有關閉,就是對應的叢集埠沒有開放,所以各個節點之間沒辦法通訊(zoo.cfg中最後自己配置的內容(包括2888埠和3888埠)以及zookeeper自己的2181埠);

2.zookeeper中conf目錄下的zoo.cfg配置檔案有問題,檢視日誌dataLog檔案的目錄,以及data資料檔案的目錄是否正確;

3.myid檔案中的內容是否和zoo.cfg中配

開放上述埠:

再次測試:

安裝kafka叢集

下載kafka

#kafka官網:
http://kafka.apache.org/
http://kafka.apache.org/downloads

#分發到node02節點,並修改myid內容為2: