天天看點

Zookeeper分布式叢集部署方式

最近對分布式有了新的認識,在這裡先記錄一下心得。說起分布式,看到有人講的一個例子特别的生動形象,是這樣的:

有一家餐廳的廚房,原來隻有一位廚師在做事,這個廚師要負責洗菜、切菜、備料、炒菜以及上菜的所有工作。後來,餐廳生意越來越好,老闆發現一位廚師做所有的事忙不過來呀,于是又請了負責洗菜、切菜和備料工作的配菜師,以及專門上菜的服務員,讓廚師專心炒菜,把菜做到極緻。這時候廚師與配菜師、服務員之間的關系就是分布式的,即讓不同的人做不同的事;再後來,生意越加火爆,餐廳也擴大店面經營,一位廚師和配菜師顯然已經滿足不了需求了,于是老闆又請了一位廚師和一位配菜師和一位服務員,讓他們互相協作,提高生産力。這時候呢,兩位配菜師可以做同樣的工作,兩位廚師可以炒同樣的菜,服務員也是。此時,兩位廚師之間就是叢集的關系,那麼對應的兩位配菜師以及兩位服務員之間也是同樣的道理。

也就是說,叢集是讓不同的人做相同的事,而分布式是讓不同的人做不同的事。

回歸正題,今天記錄一下Zookeeper分布式叢集的部署方式。

Zookeeper分布式叢集部署指的是Zookeeper分布式模式安裝,Zookeeper叢集搭建通常是由2n+1台伺服器組成,這是為了保證Leader選舉(基于Paxos算法的實作)能夠通過半數以上伺服器選舉支援,是以,Zookeeper叢集的數量一般為奇數台。

  1. Zookeeper安裝包的安裝

    由于Zookeeper叢集的運作需要Java環境支援,是以需要提前安裝jdk。

  • 将下載下傳好的Zookeeper安裝包上傳到Linux系統的/export/softword目錄下。
  • 進入,Zookeeper安裝包的目錄
$ cd /export/softword/
           
  • 解壓安裝包zookeeper-3.4.10.tar.gz到/export/server/目錄下,具體指令如下:
$ tar -zxvf zookeeper-3.4.10.tar.gz -C /export/servers/
           

Zookeeper的壓縮包解壓完成後,Zookeeper的安裝就完成了。接下來對它做一些配置。

師傅樂哥曾告訴我,linux下做檔案操作時,一定一定一定要記得要先備份。

首先,我們進入Zookeeper的解壓目錄下的conf目錄,複制配置檔案zoo_sample.cfg并重命名為zoo.cfg,具體指令如下:

$ cp zoo_sample.cfg zoo.cfg 
           

其次,修改配置檔案zoo.cfg,分别設定dataDir目錄,配置伺服器編号與主機的映射關系,設定與主機連接配接的心跳端口和選舉端口,具體配置内容如下:

# 設定dataDir目錄
dataDir = /export/data/zookeeper/zkdata
# 配置zk叢集的伺服器以及對應的主機名、選舉端口和通信端口(心跳端口号)
#其中,server.1的1代表伺服器的編号,hadoop01表示該伺服器的IP位址,2888表示Leader選舉的端口号,3888表示伺服器之間的通信端口号(心跳端口号)。
server.1 = hadoop01.2888.3888
server.2 = hadoop02.2888.3888
server.3 = hadoop03.2888.3888
           
  1. 建立myid檔案

首先,根據配置檔案zoo.cfg中設定的dataDir目錄,建立zkdata檔案夾,具體指令如下:

$ mkdir -p /export/data/zookeeper/zkdata
           

其次,在zkdata檔案夾下建立myid檔案,該檔案裡面的内容是伺服器編号(hadoop01伺服器對應的編号1,hadoop02伺服器對應的編号2,hadoop03伺服器對應的編号3),具體指令如下:

$ cd /export/data/zokeeper/zkdata
$ echo 1 > myid
           
  1. 配置環境變量

Linux系統目錄/etc下的檔案profile裡面的内容是與Linux環境變量相關的,是以我們一般配置環境變量都是在profile檔案裡面。執行指令vi /etc/profile對profile檔案進行修改,并添加Zookeeper環境變量。

export ZK_HOME=/export/servers/zookeeper-3.4.10
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$ZK_HOME/bin
           
  1. 分發Zookeeper相關檔案到其他伺服器

首先,将Zookeeper安裝目錄分發至Hadoop02、hadoop03伺服器上。具體指令如下:

$ scp -r /export/servers/zookeeper-3.4.10/ hadoop02:/export/servers/
$ scp -r /export/servers/zookeeper-3.4.10/ hadoop03:/export/servers/
           

其次,将myid檔案分發至hadoop02、hadoop03伺服器上,并且修改myid的檔案内容,依次對應的伺服器号進行設定,分别為2、3,具體指令如下:

$ scp -r /export/data/zookeeper/ hadoop02:/export/data/
$ scp -r /export/data/zookeeper/ hadoop03:/export/data/
           

最後,将profie檔案也分發至hadoop02和hadoop03伺服器上,具體指令如下:

$ scp /etc/profile hadoop02:/etc/profile
$ scp /etc/profile hadoop03:/etc/profile
           
  1. 環境變量生效

    分别在hadoop01、hadoop02、hadoop03伺服器上重新整理profile檔案,使得環境變量生效,具體指令如下:

$ source /etc/profile
           
  1. Zookeeper伺服器的啟動和關閉

當Zookeeper伺服器叢集部署完畢之後,接下來進行Zookeeper服務的啟動和關閉。若Zookeeper伺服器啟動和關閉成功,則證明Zookeeper叢集部署成功,否則,Zookeeper叢集部署失敗。

  • 啟動Zookeeper服務

    分别在hadoop01、hadoop02和hadoop03伺服器上啟動Zookeeper服務,具體指令如下:

# 啟動Zookeeper服務
$ zkServer.sh start
# 檢視該節點的Zookeeper角色
zkServer.sh status
           

若是部署成功,就可以分别看到三台Hadoop伺服器的Mode為foller、leader和foller,說明hadoop02伺服器是選舉産生的leader角色,他們的主從關系也就建立了。

  • 關閉Zookeeper服務

    若想關閉Zookeeper伺服器,就應該依次在hadoop01、hadoop02和hadoop03伺服器上執行如下的指令:

$ zkSerer.sh stop
           

這樣,我們整個Zookeeper分布式叢集部署就已經完成了。

繼續閱讀