分散式技術 -- Zookeeper多機叢集
Hello,朋友們。我又來了。昨天因為博主的電腦出了點問題,導致沒更新文章。
這次帶了的是zookeeper的單機叢集,注意:是多機叢集!多機叢集!多機叢集!(其實多機叢集和單機叢集原理一樣的,只是配置ip地址不一樣而已!)
一起學習,一起進步。繼續沉澱,慢慢強大。希望這文章對您有幫助。若有寫的不好的地方,歡迎評論給建議哈!
初寫部落格不久,我是楊展浩。這是我的第八篇部落格。加油!!!
這次搭建單機叢集學習,閱讀的朋友們需要有安裝過zookeeper的操作。沒安裝過zookeeper的朋友可以點進去看一篇https://my.oschina.net/u/3901188/blog/3102279,先動手操作一次。知道一個大概流程。
接下來開始多機叢集的部署安裝以及相關的zookeeper客戶端命令使用:
1、單機叢集部署安裝
看過博主Zookeeper前兩篇的文章的朋友知道,博主是虛擬機器VMware 上安裝Centos7系統進行學習zookeeper的。如果看這篇文章的朋友你有自己的學習伺服器也是可以的,直接上伺服器操作一個樣。
由於之前博主的一篇zookeeper安裝講解文章中,已經安裝過一個Centos(裡面安裝了zookeeper以及zookeeper需要的jdk環境)。在這裡博主直接照葫蘆畫瓢,搞多兩個一樣的Centos,zookeeper安裝路徑什麼的一樣。
配置的jdk8環境變數,以及zookeeper的配置檔案修改在這不詳細講解了,博主發表的zookeeper安裝文章中有詳細講解到。
接下來在zookeeper目錄中建立一個 myid
建立 myid 檔案,並且裡面輸入數字1,表示這是zookeeper叢集的1號服務。
以此類推,分別在兩外兩臺伺服器,建立 myid 檔案,並且裡面分別輸入數字2、3。
接下來在每個伺服器中的zookeeper的配置檔案中zoo.cfg配置叢集:
# zookeeper叢集
server.1=192.168.100.72:2888:3888
server.2=192.168.100.73:2888:3888
server.3=192.168.100.74:2888:3888
在此講解zookeeper的叢集配置方式:
模版:server.A=B:C:D 例子:server.1=192.168.100.72:2888:3888
A是一個數字,表示的是第幾號伺服器。在zkData目錄中建立了一個myid檔案,裡面填寫的數字與這裡的數字是對應的。
B是伺服器的ip地址。
C是伺服器zookeeper服務叢集中的 Leader 服務與 Flower 服務交換資訊的埠。(通俗點就是:主從之間的資料同步)。
D是萬一zookeeper叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。。
另外注意一點:Leader服務與Flower服務同步資訊的埠、重新選舉的埠需要確認下是否已經開啟。
相關命令:
查詢埠是否有開啟:firewall-cmd --query-port=埠號/tcp
開啟埠:firewall-cmd --zone=public --add-port=埠號/tcp --permanent
到這裡,zookeeper叢集的搭建以及配置就搞完了。
接下來就是,叢集啟動,客戶端連線操作相關命令!!!(命令不多,不怕)
啟動第一個叢集的時候,用檢視狀態命令檢視叢集情況會發現一個提示資訊:Error contacting service. It is probably not running.
這表示當前zookeeper叢集中只有一個zookeeper服務啟動,達到半數以上(配置檔案配置了三個服務,半數以上就是兩臺)。
接下來啟動第二臺伺服器中的zookeeper服務,再檢視狀態,發現當前zookeeper服務成為了Leader,第一臺啟動的zookeeper服務成為了follower。
博主之前講解的zookeeper叢集原理時候,當有一臺伺服器的zookeeper服務成為了Leader後,後面加入叢集的zookeeper服務都會成為follower。
叢集啟動成功!接下來客戶端連線,相關zookeeper客戶端命令操作簡介:
命令演示操作就直接貼圖配文字啦!!!
最後附上一個zookeeper客戶端的操作命令表格:
命令基本語法 | 功能描述 |
help | 顯示所有的操作命令幫助 |
ls path [watch] | 檢視path下的ZNode集合 |
ls2 path [watch] | 檢視當前節點資料並且能看到更新次數等資料 |
create 節點名稱 新值 | 建立節點ZNode,注意建立時候需要給節點賦值 options:-s 建立節點帶有編號的 -e 建立臨時節點(當客戶端退出再進去建立的節點就不存在了) |
get path [watch] | 獲取指定節點ZNode的值 |
set path 新值 | 修改指定節點ZNode的值 |
stat 節點名稱 | 檢視指定節點ZNode的結構 |
delete 節點名稱 | 刪除指定的節點ZNode |
rmr 節點名稱 | 遞迴刪除節點ZNode |
下一篇預告:使用開發工具開發zookeeper提供的API