第一步下載zookeeper鏡像。
使用容器需要依託鏡像作爲操作系統,因此先下載docker鏡像。
下載zookeeper 3-5-6並解壓,改名爲zookeeper_bin1,並移動至solrcloud文件夾中,更改名字爲zookeeper_bin1
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.5.6.tar.gz
最後的路徑是
在文件夾下創建data文件夾,新建myid文件,並存入1。
myid文件中存放的的值爲後續zoo.cfg中配置的第幾號服務器,當一個集羣中的一個子節點出現故障,可以通過zoo.cfg文件中的server編號找到相應的服務器地址,同時在指定的目錄中查找myid是否是下一啓動的server。
更改下面的數據目錄,clientPort,server配置。由於是僞集羣,因此通過使用不同的端口來模擬多個機器,server的配置是爲了某一節點出現問題後,其他節點立馬補上的作用。數據目錄是爲了指定server的myid。
在solrcloud複製zookeeper_bin1文件夾,分別命名爲zookeeper_bin2,zookeeper_bin3。更改兩文件夾下的myid,分別爲2,3;zoo.cfg文件下的dataDir分別爲/home/joy/solrcloud/zookeeper_bin2/data,/home/joy/solrcloud/zookeeper_bin3/data,端口爲2182,2183。
啓動zk集羣
發現它報錯了
打開日誌文件查看,發現顯示
於是乎想着是不是因爲開的其他沒用的容器佔用了端口,於是刪除沒用的容器後,重新啓動
jps查看線程佔用,確實已經啓動了
查看端口占用
成功顯示leader,follower
在使用各種方法進行搭建過程中出現了其他的問題,如下。
在zoo.cfg中配置了3臺機器,但是隻啓動了1臺,zookeeper就會認爲服務處於不可用狀態。
明明已經啓動了節點,但是查看狀態卻顯示沒有啓動
因爲是僞集羣,因此地址都是本機的指定地址,爲了偷懶,我直接寫的127.0.0.1,但是他始終不給running。我改成了localhost之後,正常運行了,估計可能是因爲,zookeeper集羣不認127.0.0.1.,只認localhost吧。