Linux環境快速部署Zookeeper集群


一、部署前准備:

  1、下載ZooKeeper的安裝包:

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

  2、將下載的zookeeper-3.4.9包放到/opt目錄下,目錄結構如下圖所示:

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

  4、三台linux系統的ip:

      ip1:10.43.98.6

      ip2:10.43.98.8

      ip3:10.43.98.18

  

  5、安裝jdk8:

    下載路徑: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版本信息。

          

二、部署ZooKeeper集群環境

1、首先是配置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

2、新建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相對應的。

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命令使修改生效。

4、啟動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的集群環境正式搭建成功了。

 5、連接到ZooKeeper:

    在命令行中輸入:zkCli.sh -server 192.168.1.30:2181(由於本人在不同的辦公地點在修改該文章,所以ip地址也在變化,知道原理即可)即可連接到其中一台ZooKeeper服務器。其他自動實現同步,客戶端只需要和一台保持連接即可。

    

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

6、創建zNode節點:

    連接成功后,在屏幕上輸入: create  /wurong  wrong5566  即可在主節點上創建一個新的zNode節點。zNode節點名稱wurong ,數據wrong5566.

     

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

    

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

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

    

7、幾個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節點就會被刪除了。其中臨時節點可用於實現分布式鎖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM