Linux環境快速部署Zookeeper集羣

1、部署前準備:html

  一、下載ZooKeeper的安裝包:java

    http://zookeeper.apache.org/releases.html 我下載的版本是zookeeper-3.4.9。linux

  二、將下載的zookeeper-3.4.9包放到/opt目錄下,目錄結構以下圖所示:數據庫

   三、在/tmp目錄下新建一個zookeeper目錄,並在zookeeper目錄下新建一個data目錄。apache

  四、三臺linux系統的ip:centos

      ip1:10.43.98.6api

      ip2:10.43.98.8服務器

      ip3:10.43.98.18oracle

  

  五、安裝jdk8:eclipse

    下載路徑:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,我選擇的是jdk-8u112-linux-i586.tar.gz(Linux x64)。

  下載下來後拷貝到/usr/java目錄下,而後:tar-zxvf jdk-8u112-linux-i586.tar.gz解壓後目錄下有一個jdk1.8.0_111文件下。而後經過vi /etc/profile命令來設置環境變量:

    export JAVA_HOME=/usr/java/jdk1.8.0_111
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin

  保存後進入cd /etc目錄下,輸入source profile命令使修改生效,而後java -version命令查看jdk版本信息。

          

2、部署ZooKeeper集羣環境

一、首先是配置zoo.cfg文件:

  將/opt/zookeeper-3.4.9/conf目錄下的zoo-sample.cfg文件名統一修改成zoo.cfg。

  而後vi zoo.cfg。修改配置信息以下:

    

    其中:

    initLimit=10: 對於從節點最初鏈接到主節點時的超時時間,單位爲tick值的倍數。

    syncLimit=5:對於主節點與從節點進行同步操做時的超時時間,單位爲tick值的倍數。

    dataDir=/tmp/zookeeper: 用於配置內存數據庫保存的模糊快照的目錄。即剛剛建立的data文件夾就是在此目錄中。文件信息都存放在data目錄下。

    clientPort=2181: 表示客戶端所鏈接的服務器所監聽的端口號,默認是2181。即zookeeper對外提供訪問的端口號。

    server.1=10.43.98.6:2888:3888  
    server.2=10.43.98.8:2888:3888
    server.3=10.43.98.18:2888:3888

二、新建myid文件:

    在三個linux機器上剛剛建立的data目錄下新建一個myid文件並打開,vi myid命令。

    在10.43.98.6機器上輸入1,保存退出;在10.43.98.8機器上輸入2,保存退出;在10.43.98.18機器上輸入3,保存退出。這裏的1,2,3是與server1,2,3相對應的。

三、配置環境變量:

    vi  etc/profile 在最後添加以下兩個。

    export ZOOKEEPER_HOME=/opt/zookeeper-3.4.9
    export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

    保存後進入cd /etc目錄下,輸入source profile命令使修改生效。

四、啓動zookeeper:

    分別在3臺機器上/opt/zookeeper-3.4.5/bin目錄下啓動;

    [root@zk1 bin]# zkServer.sh start來啓動。

    zkServer.sh restart  (重啓)

    zkServer.sh status  (查看狀態)

    zkServer.sh stop  (關閉)

    zkServer.sh start-foreground  (以打印日誌方式啓動)

    當對三臺機器同時 zkServer.sh start啓動時,發現都啓動成功了,可是以zkServer.sh status命令來查看啓動狀態時,發現老是在報錯,以下圖:

      

    而後以 zkServer.sh start-foreground 打印日誌方式啓動,發現是報找不到主機的路由異常。以下圖:

    

    報這種異常通常有三種狀況:

    (1):zoo.cfg配置文件中,server.x:2888:3888配置出現錯誤;

    (2):myid文件內容和server.x不對應,或者myid不在data目錄下;

     (3):系統防火牆是否在啓動。

    我檢查了三種緣由後發現是防火牆running。

    centos7下查看防火牆狀態的命令:

      firewall-cmd --state

    關閉防火牆的命令:

      systemctl stop firewalld.service

      systemctl disable firewalld.service   (禁止開機啓動,永久關閉防火牆)

    

    而後重啓三個zookeeper服務:zkServer.sh restart,在zkServer.sh status後發現成功了。

    

    我選擇的這臺機器是leader,其餘兩臺是follower。

    到此爲止,Linux環境下ZooKeeper的集羣環境正式搭建成功了。

 五、鏈接到ZooKeeper:

    在命令行中輸入:zkCli.sh -server 192.168.1.30:2181(因爲本人在不一樣的辦公地點在修改該文章,因此ip地址也在變化,知道原理便可)便可鏈接到其中一臺ZooKeeper服務器。其餘自動實現同步,客戶端只須要和一臺保持鏈接便可。

    

    成功鏈接後,系統會輸出ZooKeeper的相關配置信息和相關環境,並在屏幕上輸出Welcome to ZooKeeper!等信息。

六、建立zNode節點:

    鏈接成功後,在屏幕上輸入: create  /wurong  wrong5566  便可在主節點上建立一個新的zNode節點。zNode節點名稱wurong ,數據wrong5566.

     

    到eclipse上查看信息:(在eclipse上安裝了ZooKeeper的客戶端插件)參考地址:http://www.tuicool.com/articles/bQj2E3

    

    說明zNode節點是建立且同步成功了。

    在其餘的從節點中輸入get /wurong 便可獲取到該zNode節點中的詳細數據信息。

    

七、幾個zNode節點操做的api簡單介紹:

    create /parh data      建立一個名爲/path的zNode節點,幷包含數據data

    delete /path          刪除名爲/path的zNode節點

    exists /path           檢查是否存在名爲/path的zNode節點

    setData /path data        設置名爲/path的zNode的數據爲data

    getData  /path         返回名爲/path的zNode節點的數據信息

    getChildren /path      返回全部/path節點的全部子節點列表

  zNode節點還有不一樣的類型,持久(persistent)節點和臨時(ephemeral)節點。持久的zNode,如/path,只能經過調用delete來進行刪除,而臨時的zNode則與之相反,當建立該節點的客戶端崩潰或者關閉了與ZooKeeper服務器的鏈接時候,這個臨時zNode節點就會被刪除了。其中臨時節點可用於實現分佈式鎖。

相關文章
相關標籤/搜索