一臺linux虛擬機器模擬搭建zookeeper叢集及可能遇到的問題解決
一、zookeeper叢集搭建
1:上傳zookeeper-3.4.13.tar.gz到/myfile/tool(自己定義的存放工具的目錄)目錄下:
2:解壓zookeeper,執行如下命令:
[[email protected] tool]# tar zxf zookeeper-3.4.13.tar.gz
解壓後如下圖:
3: 複製zookeeper到/myfile/programfiles/solr_cloud(自己定義的solr叢集的目錄)目錄下,執行如下命令:
[[email protected] tool]# cp -r zookeeper-3.4.13 /myfile/programfiles/solr_cloud/zookeeper01
[ [email protected] tool]# cp -r zookeeper-3.4.13 /myfile/programfiles/solr_cloud/zookeeper02
[[email protected] tool]# cp -r zookeeper-3.4.13 /myfile/programfiles/solr_cloud/zookeeper03
複製結果如圖所示:
4:接著執行如下步驟:
注:touch myid:表示新建myid檔案
[[email protected] solr_cloud]# cd zookeeper01
[[email protected] zookeeper01]# mkdir data
[[email protected] zookeeper01]# touch myid
編輯myid檔案:輸入1儲存退出。
或者另一種快捷命令方式:
注:echo 2 > data/myid :表示將2寫入檔案myid中,同時會新建檔案myid
[[email protected] zookeeper02]# mkdir data
[[email protected] zookeeper02]# echo 2 > data/myid
5:進入zookeeper01/conf資料夾,執行命令:mv zoo_sample.cfg zoo.cfg,修改zoo_sample.cfg的檔名為zoo.cfg
6:編輯zoo.cfg檔案,按如下紅框中進行配置:
注意:以下三類埠號在一個檔案中不能重複
7: 重複步驟456,完成zookeeper02和zookeeper03的配置
注: zookeeper02中data/myid檔案中內容為:2
zoo.cfg中clientPort為:2182
zookeeper03中data/myid檔案中內容為::3
zoo.cfg中clientPort為:2183
其他按照 zookeeper01的進行配置即可。
zookeeper02的zoo.cfg檔案配置 :
zookeeper03的zoo.cfg檔案配置 :
8:準備啟動這三個zookeeper節點,寫批處理檔案:
進入/myfile/programfiles/solr_cloud目錄下,編輯新建的start-zookeepers.sh指令碼檔案:
[[email protected] solr_cloud]# vim start-zookeepers.sh
cd zookeeper01/bin
./zkServer.sh start
cd ../../
cd zookeeper02/bin
./zkServer.sh start
cd ../../
cd zookeeper03/bin
./zkServer.sh start
cd ../../
儲存退出後,進行授權,u表示當前使用者可以啟動:
[[email protected] solr_cloud]# chmod u+x start-zookeepers.sh
如下圖所示:
9:啟動,執行命令:
[[email protected] solr_cloud]# ./start-zookeepers.sh
執行結果如下圖所示表示:
10:測試
分別進入zookeeper01/bin; zookeeper02/bin; zookeeper03/bin下執行命令:./zkServer.sh status,出現以下結果表示叢集搭建成功。follower表示從節點,leader表示主節點,主從節點的分配隨機。
11:可能會遇到的問題
**修改第8步新建的start-zookeepers.sh檔案,裡面的start改為:start-foreground,可在控制檯查看出錯的原因;
cd zookeeper01/bin
./zkServer.sh start-foreground
cd ../../
cd zookeeper02/bin
./zkServer.sh start-foreground
cd ../../
cd zookeeper03/bin
./zkServer.sh start-foreground
cd ../../
**地址被佔用錯誤:java.net.BindException: Address already in use
解決辦法: sudo netstat -nltp | grep 2181 可以檢視當前佔用的埠號;sudo kill -9 3071 刪除該程序;
**無法連線錯誤:java.net.ConnectException: Connection refused (Connection refused)
解決辦法:關閉防火牆,並設定重啟不啟動防火牆;因為本叢集搭建在一臺伺服器上,確保zoo.cfg檔案中ip和埠號按規則都寫正確
**也可以開啟三個xhell視窗,分別同時啟動來進行測試**