Zookeeper分布式安裝配置

來源:互聯網
上載者:User

標籤:

Zookeeper分布式安裝配置

 

 


 

Zookeeper介紹概述

1、ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟體,提供的功能包括:配置維護、網域名稱服務 (DNS)、分布式同步、組服務等。

2、ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。

3、ZooKeeper包含一個簡單的原語集,提供Java和C的介面。

4、ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的介面,代碼在zookeeper-3.4.3\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。

 


ZooKeeper的基本運轉流程:

1、選舉Leader。

2、同步資料。

3、選舉Leader過程中演算法有很多,但要達到的選舉標準是一致的。

4、Leader要具有最高的zxid。

5、叢集中大多數的機器得到響應並follow選出的Leader。

 

 

 

Zookeeper下載與安裝 下載

官網:https://zookeeper.apache.org/

大家可以去官網下載自己需要的版本,例如我需要安裝的是3.4.6版本:

 

 

 

安裝

Zookeeper的運行需要Java環境,所以需要首先安裝JDK,JDK的安裝可以參考:

http://blog.csdn.net/u011204847/article/details/51002072

 

把下載的壓縮包拷貝到想要安裝的目錄,然後解壓:

[[email protected] software]# tar -xzf zookeeper-3.4.6.tar.gz


解壓之後檔案目錄:

 

 

 

加入環境變數:

vi /etc/profile

export ZOOKEEPER_HOME=/usr/local/software/zookeeper-3.4.6export PATH=.:$PATH:$ZOOKEEPER_HOME/bin


使環境變數生效:

source /etc/profile


 

 

Zookeeper配置

 

單機配置

在zookeeper目錄下建立目錄data:

[[email protected] software]# cd zookeeper-3.4.6[[email protected] zookeeper-3.4.6]# mkdir data


然後到zookeeper / conf 目錄下,修改zoo_sample.cfg名稱為zoo.cfg

 

 

然後修改設定檔zoo.cfg:

vi zoo.cfg   //單機只需要修改dataDir為之前建立的data目錄即可


 

配置好後就可以啟動了:

切換到Zookeeper的bin目錄下,然後

./zkServer.sh start    //開啟Zookeeper

其他命令:

./zkServer.sh stop    //關閉Zookeeper./zkServer.sh status   //查看Zookeeper狀態./zkCli.sh   //開啟Zookeeper用戶端



分布式配置

 

這裡我使用三台主機進行Zookeeper的分布式配置。

1、首先,我們在之前配置的單機基礎上繼續修改設定檔:

2、在之前的設定檔末尾添加如下內容:

server.0=master01:2888:3888   //master01為你的主機名稱,前面的0代表的是給這台主機配的IDserver.1=slave01:2888:3888    //同理slave01也是主機名稱,可以使用IPserver.2=slave02:2888:3888

3、然後在我們之前建立的data檔案中使用命令:

echo 0 myid   //在data目錄建立myid檔案,並寫入0(與上面的配置中server.0中的0對應)

4、將這台主機配置好的Zookeeper整個目錄都拷貝到另外兩台主機的相同路徑下,並在那兩台上修改myid為1和2。

5、修改另外兩台主機/etc/profile檔案,使得它們的Zookeeper環境配置和第一台主機一樣

6、在每台主機上面開啟Zookeeper後,查看狀態


開啟三台主機中Zookeeper後,查看狀態會發現有一個leader以及兩個follower,此時我們的Zookeeper分布式環境以及搭建好了

 

 

注意:

1、上面我可以使用類似 ssh slave01命令直接登入到slave01和slave02主機是因為我在三台主機之間做了免密碼登入。

2、在設定檔和命令中可以直接使用主機名稱是因為我做了IP和主機名稱的映射。

3、我們可以在登入到另一台主機後,直接使用zkServer.sh指令碼是因為我們之前配置了Zookeeper環境並使之生效。

 

 

 

附加配置

在安裝好Zookeeper分布式環境後,一般情況下需要登入到每台主機上面去啟動Zookeeper,比較繁瑣,所以我們可以寫一個shell指令碼來啟動和關閉這個Zookeeper叢集。

 

在寫指令碼之前我們需要先解決一個問題,如果我們直接使用指令碼操作去啟動另外的主機上面Zookeeper,會發現啟動不成功。這涉及到登入shell和非登入shell的問題。關於Shell指令碼和登入/非登入shell可以參考:http://blog.csdn.net/u011204847/article/details/51184883

 

這裡我直接寫解決方案:

方法一:

修改Zookeeper / bin 目錄下的zkEnv.sh,在圖示位置或者檔案開頭添加你的JDK路徑。

 

 

方法二:把profile的配置資訊echo到.bashrc中  echo ‘source /etc/profile‘ >> ~/.bashrc

 

方法三:指令碼代碼中添加”source /etc/profile;”,例如:ssh $i "source /etc/profile;/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh start"

 

 

Shell啟動指令碼樣本:

#!/bin/bashfor i in master01 slave01 slave02do ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh start"done

指令碼執行樣本:

 

 


Shell停止指令碼樣本:

#!/bin/bashfor i in master01 slave01 slave02do        ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh stop"done

指令碼執行樣本:

 

 

 

 


Java代碼操作Zookeeper樣本

 

Pom依賴:

<dependency>    <groupId>org.apache.curator</groupId>    <artifactId>curator-framework</artifactId>    <version>2.8.0</version></dependency>


 

程式碼範例:

@Test   //測試類別:測試Zookeeper串連public void test13() throws Exception{    //指定zookeeper叢集的地址    String connectString = "192.168.33.130:2181,192.168.33.131:2181,192.168.33.132:2181";    //1000 :代表是重試時間間隔     3:表示是重試次數    ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3);    //使用curator建立一個zk連結    CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, retryPolicy);    //啟動串連    client.start();    InetAddress localHost = InetAddress.getLocalHost();    String ip = localHost.getHostAddress();    client.create()        .creatingParentsIfNeeded()   //如果父節點不存在,這建立        .withMode(CreateMode.EPHEMERAL)  //建立節點類型為臨時節點        .withACL(Ids.OPEN_ACL_UNSAFE)        .forPath("/Spider/"+ip);}

列印結果:

 

 

注意:

由於建立的是臨時節點,所以預設40秒後,這個值會消失。臨時節點的這個特性可以用於監控一些程式的運行狀態。

Zookeeper分布式安裝配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.