1. 程式人生 > >Zookeeper 介紹 Zookeeper 搭建 Zookeeper 叢集搭建

Zookeeper 介紹 Zookeeper 搭建 Zookeeper 叢集搭建

關鍵字:分散式背景        隨著網際網路技術的高速發展,企業對計算機系統的技術、儲存能力要求越來越高,最簡單的證明就是出現了一些諸如:高併發、海量儲存這樣的詞彙。在這樣的背景 下,單純依靠少量高效能主機來完成計算任務已經不能滿足企業的要求,企業的IT架構逐步從集中式向分散式過渡,所謂的分散式是指:把一個計算任務分解成若干個計算單元,並且分派到若干不同的計算機中取執行,然後彙總計算結果的過程!概念        ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google Chubby的一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。        Zookeeper是一個分散式的服務協調元件
        Zookeeper的基礎1. 檔案系統        Zookeeper維護一個類似檔案系統的資料結構        2. 通知機制        客戶端註冊監聽它關心的目錄節點,當目錄節點發生變化(資料改變、被刪除、子目錄節點增加刪除)時,zookeeper會通知客戶端。        Zookeeper可以說就是一個檔案系統加通知機制基本概念1. 叢集角色        Leader/Follower/Observer        Leader伺服器是整個zk叢集工作機制中的核心        Follower伺服器是zk叢集狀態的跟隨著        Observer伺服器充當一個觀察者的角色
        Leader、Follower 設計模式        Observer 觀察者模式2. 會話        會話是指客戶端和zk伺服器的連線,zk中的會話叫session,客戶端靠與伺服器建立一個TCP的長連線來維持一個sessino,客戶端在啟動的時候首先會與伺服器建立一個TCP連線,通過這個連線,客戶端能夠通過心跳檢測與伺服器保持有效的會話,也能向zk伺服器傳送請求並獲得響應。3. 資料節點        zk中的節點有兩類        1. 叢集中的一臺機器稱為一個節點        2. 資料模型中的資料單元Znode,分為持久節點(PERSISTENT )和臨時節點(EPHEMERAL),具體在節點建立過程中,一般是組合使用,可以生成以下 4 種節點型別。        持久節點(PERSISTENT)
所謂持久節點,是指在節點建立後,就一直存在,直到有刪除操作來主動清除這個節點——不會因為建立該節點的客戶端會話失效而消失。
持久順序節點(PERSISTENT_SEQUENTIAL) 這類節點的基本特性和上面的節點型別是一致的。額外的特性是,在ZK中,每個父節點會為他的第一級子節點維護一份時序,會記錄每個子節點建立的先後順序。基於這個特性,在建立子節點的時候,可以設定這個屬性,那麼在建立節點過程中,ZK會自動為給定節點名加上一個數字字尾,作為新的節點名。這個數字字尾的範圍是整型的最大值。臨時節點(EPHEMERAL)和持久節點不同的是,臨時節點的生命週期和客戶端會話繫結。也就是說,如果客戶端會話失效,那麼這個節點就會自動被清除掉。注意,這裡提到的是會話失效,而非連線斷開。另外,在臨時節點下面不能建立子節點。臨時順序節點(EPHEMERAL_SEQUENTIAL)參考持久順序節點        zk的資料模型是一棵樹,樹的節點就是Znode,Znode中可以儲存資訊(不同於檔案系統的是,節點可以有自己的資料,而檔案系統中的目錄節點只有子節點),如下圖               4. 版本
版本型別說明
version當前資料節點資料內容的版本號
cversion當前資料節點子節點的版本號
aversion當前資料節點ACL變更版本號
5. watcher        事件監聽器        zk允許使用者在指定節點上註冊一些watcher,當資料發生變化的時候,zk伺服器回把這個變化通知傳送給感興趣的客戶端        6. ACL許可權控制        ACL是Access Control Lists的簡寫,zk採用ACL策略來進行許可權控制,有以下許可權:        CREATE:建立子節點的許可權        READ:獲取節點資料和子節點列表的許可權        WRITE:更新節點資料的許可權        DELETE:刪除子節點的許可權        ADMIN:設定即誒但ACL的許可權  使用場景1. Leader 選舉(Leader Election)        有一個向外提供的服務,服務必須7*24小時提供服務,不能有單點故障。所以採用叢集的方式,採用master、slave的結構。一臺主機多臺備機。主機向外提供服務,備機負責監聽主機的狀態,一旦主機宕機,備機要迅速接代主機繼續向外提供服務。從備機選擇一臺作為主機,就是master選舉。2. 資料釋出與訂閱當一個物件的改變,需要通知其他物件而且不知道要通知多少個物件,可以使用釋出訂閱模式 。在分散式中的應用有配置管理(Configuration Management) 、叢集管理(Group Membership)/服務發現。        配置管理(Configuration Management)故名思議就是一方把資料釋出出來,另一方通過某種手段可以得到這些資料
        叢集管理(Group Membership)/服務發現zk中我們所有的機器都註冊一個臨時節點,我們判斷一個機器或者服務是否可用只需要判斷這個節點在zk中是否存在就可以了,不需要直接去連線需要檢查的機器,降低系統的複雜度。3. 負載均衡4. 分散式鎖(Locks) 
        一般的鎖是指單程序多執行緒的鎖,在多執行緒併發程式設計中,用於執行緒之間的資料同步,保證共享資源的訪問。而分散式鎖,指的是在分散式環境下,保證跨程序、跨主機、跨網路的共享資源,實現互斥訪問,保證一致性。5. 分散式佇列(Queues) 
        在傳統的單程序程式設計中,我們使用佇列來儲存資料結構,用來在多執行緒之間共享或者傳遞資料。在分散式環境下,同樣需要一個類似單程序的元件, 用來實現跨程序、跨主機、跨網路的資料共享和資料傳遞。這就是我們的分散式佇列。Zookeeper可以通過順序節點點來實現分散式佇列。6. 統一命名服務(Name Service) 
        命名服務就是提供名稱的服務,Zookeeper的命名服務有兩個應用方面。一個是提供類似JNDI功能,另一個是製作分散式的序列號生成器。Zookeeper的安裝和啟動下載        http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz  安裝啟動(自行安裝jdk)
1234567tar zxvf zookeeper-3.4.6.tar.gzcd zookeeper-3.4.6cd confmv zoo_sample.cfg zoo.cfgcd ..cd bin./zkServer.sh start
建立、查詢節點輸入:zkCli.sh
1234567891011121314151617181920212223ls /[zookeeper][zk: localhost:2181(CONNECTED) 1] ls /zookeeper[quota][zk: localhost:2181(CONNECTED) 2] create /rpc jeromeCreated /rpc[zk: localhost:2181(CONNECTED) 3] ls /[zookeeper, rpc][zk: localhost:2181(CONNECTED) 4] ls /rpc[][zk: localhost:2181(CONNECTED) 5] get /rpcjeromecZxid = 0x2ctime = Fri Jul 15 01:50:00 PDT 2016mZxid = 0x2mtime = Fri Jul 15 01:50:00 PDT 2016pZxid = 0x2cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 6numChildren = 0
ZooKeeper 叢集環境搭建準備三臺虛擬機器,這裡使用vm+centos 6.4 1. 安裝JDK2. 安裝zk        參考上面3. 配置zk叢集cd zookeeper-3.4.8/conf/vim zoo.cfg1. 修改dataDir儲存塊的路徑:修改的路徑記得建立目錄,還要在配置的這個目錄下面建立一個myidvim myid,寫1,就是下面的service.id ,其他兩臺分別為2、32. 新增伺服器列表配置(三臺配置一樣,2888是Follower和leader通訊的埠server.1 = 192.168.84.141:2888:3888server.2 = 192.168.84.142:2888:3888server.3 = 192.168.84.143:2888:3888#啟動zk(分別啟動三臺)cd ../bin./zkServer.sh start 4. 測試        驗證是否啟動成功,telnet 192.168.84.141 2181
123456789101112131415161718[[email protected] bin]# telnet 192.168.84.141 2181Trying 192.168.84.141...Connected to 192.168.84.141.Escape character is '^]'.statZookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMTClients:/192.168.84.141:35397[0](queued=0,recved=1,sent=0)Latency min/avg/max: 0/0/0Received: 2Sent: 1Connections: 1Outstanding: 0Zxid: 0x0Mode: followerNode count: 4Connection closed by foreign host.
        只要超過一半的伺服器啟動,就可以正常的向外服務。        把其他兩臺關掉,叢集不可用
1234567[[email protected] bin]# telnet 192.168.84.141 2181Trying 192.168.84.141...Connected to 192.168.84.141.Escape character is '^]'.statThis ZooKeeper instance is not currently serving requestsConnection closed by foreign host.

相關推薦

zookeeper與卡夫卡叢集搭建

首先這片部落格沒有任何理論性的東西,只是詳細說明kafka與zookeeper叢集的搭建過程,需要三臺linux伺服器。 java環境變數設定 zookeeper叢集搭建 kafka叢集搭建 java環境變數設定 在每臺伺服器上都有設定java環境變數 這裡使用java原始碼安裝的方

大資料系列(hadoop) Hadoop+Zookeeper 3節點高可用叢集搭建

原文地址:https://www.cnblogs.com/YellowstonePark/p/7750213.html一、叢集規劃主機名ipNameNodeDataNodeYarnZooKeeperJournalNodenode01192.168.1.201是是否是是node

zookeeper安裝單點、叢集搭建、開機自啟動

1下載Zookeeper http://mirror.bit.edu.cn/apache/zookeeper/ http://mirror.bit.edu.cn/apache/zookeeper/stable/wwget wget http://mirror.bit.edu.cn/

day74_淘淘商城專案_07_ zookeeper叢集搭建 + solrcloud叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記

淘淘商城專案_07 1、什麼是SolrCloud 2、Solr叢集的系統架構 2.1、SolrCloud的物理結構 2.2、SolrCloud的邏輯結構 2.2.1、Collection

zookeeperzookeeper介紹及安裝和叢集配置

1.什麼是zookeeper ?     zookeeper 英文直譯是動物管理員,試想下,動物園裡有很多動物,如果沒有動物管理員去做管理的話,各種動物混在一起很可能出現打架問題,疾病,髒,等等一系列問題,這個時候就需要有個主人去把這些動物統一管理起來,zookeeper其實

1.環境搭建-Hadoop叢集搭建

本文主要是在CentOS叢集基礎上搭建Hadoop叢集。 【CentOS叢集:node1,node2,node3 】 【注:搭建hadoop叢集的前提是三個節點都已經配置好了靜態ip,虛擬機器終端內執行vi /etc/sysconfig/network-scri

2.環境搭建-CentOS叢集搭建

目錄 本文主要介紹在 Windows 宿主機上使用 VirtualBox 搭建三節點 CentOS 叢集實驗環境。 實驗環境 Windows 宿主機:Windows 10 企業版 VirtualBox 版本:VirtualBox 5.1.10

基於哨兵(Sentinel)模式搭建Redis叢集搭建

這篇文章主要是想把自己搭建Redis哨兵模式叢集的過程記下來,方便後面搭建的重複性工作。 首先一點,學習任何知識都要學會看官網,所以,可以參考官網進行配置。我為了省事兒,參照了公司的規範來搭建的。官網地址:https://redis.io/ 有個官方下載地址,可以直接下載各

搭建Kubernetes叢集搭建跳坑

Kubernetes 叢集搭建主要是分三部 1虛擬機器叢集搭建 我採用virtualbox centos7搭建, 由於主機是一個win10, 所以所有的搭建都將在虛擬機器中進行. 虛擬網路搭建採用NAT地址轉換+Host-Only ,可以參考前面的文章 http://blo

ZooKeeper此例簡單介紹基於docker的zookeeper安裝與叢集搭建

一 :安裝  1.獲取zookeeper映象 docker pull zookeeper11 2.寫配置檔案zoo.cfg tickTime=2000 dataDir=/opt/zookeeper/data clientPort=2181 initLimit=5 sync

Zookeeper 介紹 Zookeeper 搭建 Zookeeper 叢集搭建

關鍵字:分散式背景        隨著網際網路技術的高速發展,企業對計算機系統的技術、儲存能力要求越來越高,最簡單的證明就是出現了一些諸如:高併發、海量儲存這樣的詞彙。在這樣的背景 下,單純依靠少量高效能主機來完成計算任務已經不能滿足企業的要求,企業的IT架構逐步從集中式向分

基於Dokcer搭建Redis叢集搭建(主從叢集

最近陸陸續續有不少園友加我好友諮詢 redis 叢集搭建的問題,我覺得一定是之前寫的這篇 《基於Docker的Redis叢集搭建》 文章有問題了,所以我花了幾分鐘瀏覽之前的文章總結了下面幾個問題: redis 數量太少,只建立了 3 個例項; 由於只有 3 個例項,所以全部只能是主節點,無法體現叢集主從關係

使用docker-compose快速搭建zookeeper叢集

映象下載 docker pull zookeeper zookeeper 叢集的搭建 建立名為docker-compose.yml的檔案 輸入以下內容 version: '2' services: zk1: image: zookeeper restart: alw

Zookeeper叢集搭建安裝

1、上傳Zookeeper安裝包 解壓後 : vi /etc/profile export JAVA_HOME=/home/jdk/jdk1.8.0_191export ZOOKEEPER_HOME=/home/zookeeper/zookeeper-3.4.6export CLASSPATH=

Docker Zookeeper叢集搭建(偽叢集)

主要通過修改容器 zookeeper 裡面的配置檔案實現 1、Docker安裝 zookeeper映象獲取各個版本的docker安裝需要自行百度, 基本上都是採用 yum install docke 或者 apt-get install

ZooKeeper叢集選舉機制和叢集搭建

簡介: Zookeeperr是一個 開源 的分散式應用程式協調伺服器是Hadoop的重要元件 ZooKeeper是一個 分散式的開放原始碼分散式應用程式協調伺服器,它是一個為分散式應用提供一致性服務的軟體,提供功能包括:配置維護、域名服務、分散式同步、叢集管理等。 功能: &nbs

solrCloud叢集搭建(solr-6.5.1,zookeeper-3.4.10)

Solr 是一個基於 Apache Lucene 之上的搜尋伺服器,它是一個開源的、基於 Java 的、執行在Servlet容器(如Apache Tomcat或Jetty)的資訊檢索庫。它旨在驅動功能強大的文件檢索應用程式 - 無論您需要根據使用者的查詢將資料服務到何處,Solr 都可以為您服務

zookeeper-3.4.10分散式叢集環境搭建

初始叢集狀態 機器名 IP 作用 linux系統 master 192.168.218.133   CentOS-6.9-x86_64-bin-D

單機搭建zookeeper叢集

一:簡介 分散式應用程式可以基於Zookeeper實現例如配置管理、資料釋出/訂閱、負載均衡、命名服務、協調通知、叢集管理、Master選舉、分散式鎖、分散式佇列等功能。 https://zookeeper.apache.org/ ###Zookeeper中重要的概念:

zookeeper簡介及叢集搭建步驟

1、zookeeper概念 zookeeper是一個分散式協調服務 zookeeper是為別的分散式程式服務的 zookeeper本身就是一個分散式程式(只要半數以上節點存活,zookeeper就能正常服務。) zookeeper的服務範圍:主從協調、伺服器節點動態上下線