1. 程式人生 > >zookeeper 單機. 叢集環境搭建

zookeeper 單機. 叢集環境搭建

zookeeper分散式系統中面臨的很多問題, 如分散式鎖,統一的命名服務,配置中心,叢集的管理Leader的選舉等

環境準備

分散式系統中各個節點之間通訊,Zookeeper保證了這個過程中 資料的唯一性,安全可靠

官網下載地址

  • 修改配置檔案

將/conf/zoo_sample.cfg 修改成 zoo.cfg

配置檔案解讀

# zookeeper  伺服器和客戶端之間維持心跳的時間間隔,即每個ticktime傳送一個心跳包,單位是毫秒
# zookeeper 中session過期的時間是 ticktime*2
tickTime=2000
# Leader 允許Follower在initLimit時間內完成從Leader身上同步全部資料的工作, 隨機叢集的不斷擴大,Follower從Leader上同步資料的時間就會變成,此時有必要,預設是0
initLimit=10
# Leader會和叢集中的其他機器進行通訊,在syncLimit時間內,都沒有從Follower上獲取返回資料,就認為這個節點掛了
syncLimit=5
# 儲存快照檔案的目錄,預設情況下事務日誌也在這裡了,下面單獨配置,因為因為日誌的寫效能影響zookeeper的效能
dataDir=E:\\zookeeper\\zookeeper-3.4.14\\data

dataLogDir=E:\\zookeeper\\zookeeper-3.4.14\\log
# the port at which the clients will connect
# 客戶端連線的埠
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
  • 啟動

啟動的指令碼在 /bin/目錄下
linux啟動 ./zkCli.sh -server localhost:2181
****
啟動成功,進入客戶端控制檯

 # 預設的節點叫zookeeper
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
# 建立一個節點
[zk: localhost:2181(CONNECTED) 11] create /changwu1 "num1" 
Created /changwu1 
 # 重新檢視
[zk: localhost:2181(CONNECTED) 14] ls /
[zookeeper, changwu1]
 # 獲取節點的內容
[zk: localhost:2181(CONNECTED) 17] get /changwu1
num1
cZxid = 0x2
ctime = Mon Sep 16 15:56:27 CST 2019
mZxid = 0x2
mtime = Mon Sep 16 15:56:27 CST 2019
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

# 退出
quit

# 刪除一個節點
[zk: localhost:2181(CONNECTED) 32] delete /changwu1
[zk: localhost:2181(CONNECTED) 33] ls /
[zookeeper]

# 遞迴刪除節點
rmr /path1/path2
這個path1 和 path2 其實是兩個節點
# 修改節點資料
set /path "value"

# 節點的狀態
[zk: localhost:2181(CONNECTED) 50] stat /z1
cZxid = 0x5
ctime = Mon Sep 16 16:04:35 CST 2019
mZxid = 0x7
mtime = Mon Sep 16 16:06:31 CST 2019
pZxid = 0x6
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1

# 建立永久有序節點
create -s /path

建立節點的形式,和我們mkdir,建立一個目錄結構是相似的


叢集搭建

  • 將zoo.cfg複製三份,並修改配置檔案

第二個埠2887,用來同步Leader 和 Follower之間的資料, 第三個埠選舉新的Leader使用

  • 在tmp目錄建立六個目錄 分別是 zoo_data_1-3 zoo_logs_1-3
  • 建立myid檔案
[root@139 tmp]# echo 1 > zoo_data_1/myid
[root@139 tmp]# echo 2 > zoo_data_2/myid
[root@139 tmp]# echo 3 > zoo_data_3/myid

啟動叢集服務端

[root@139 bin]# ./zkServer.sh start ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED

分別檢視各個節點的狀態

[root@139 bin]# ./zkServer.sh status ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: follower

[root@139 bin]# ./zkServer.sh status ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: leader

[root@139 bin]# ./zkServer.sh status ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Mode: follower
    

連線客戶端

./zkCli -server localhost:服務端的埠號

zkCli.sh -server localhost:2181
zkCli.sh -server localhost:2182
zkCli.sh -server localhost:2183

新增觀察者

  1. 和前三個一樣,在tmp目錄建立哨兵使用的目錄 分別是 zoo_data_4 zoo_logs_4
  2. 在zoo_data_4目錄下建立它myid檔案,寫入4
  3. 更改前三個節點的配置檔案
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_1
dataLogDir=/tmp/zoo_logs_1

clientPort=2181

# 第一個端用於Leader和Leanner之間同步, 第二個埠,使用者選舉過程中的投票通訊
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer
  1. 新增觀察者的配置檔案
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_4
dataLogDir=/tmp/zoo_logs_4

# 觀察者的配置
peerType=observer

clientPort=2184

# 第一個端用於Leader和Leanner之間同步, 第二個埠,使用者選舉過程中的投票通訊
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer

叢集中的角色

Leader

發起投票和決議,已經更新最終狀態

Follower

接收處理客戶端的請求,參與Leader發起的決議

Observer

接受客戶端的連線,將請求轉發給Leader位元組,但是它不參加投票,而僅僅同步Leader的狀態,它的zookeeper拓展的方式

為什麼會新增Observer呢? 這和zookeeper的工作方式息息相關:

一個zookeeper叢集由多個Server組成,每一個Server都可以去處理多個client的請求, 如果是讀請求,用當前的Server的本地資料庫分本直接相應,但是,如果請求是改變zookeeper狀態的寫請求,就變得麻煩起來, zookeeper的leader節點會發起投票這個機制就是zab協議,超過半數的節點同意時,才會把這個操作載入到記憶體中,並對client進行回覆

在這個過程中,zookeeper擔任兩個職能,一方面接受客戶端的連線,另一方面又得去發起投票決議, 這兩個功能限制了zookeeper的擴充套件想支援更多的客戶端連線,就得新增server,但是server越來越多每次發起投票就變的沉重,於是Observer應運而生

Observer,不會參加投票,在其他節點處於投票階段時,Observer接收client的連線,把連線轉發的leader,而且,它還會收到投票的處理結果,從而大大提高系統的吞吐量

Leaner

和Leader一起同步狀態的節點的統稱,Observer和Follower統稱為Leaner

Zookeeper的CPA

CP: 當叢集中的節點僅僅剩下Leader Follower時, Leader掛了,就得重新選舉,選舉的過程中系統不可用

AP: Leader Follower Observer ,這三者組成的就群,實現了AP, 當Leader掛了,同樣進行選舉, 但是Observer可以繼續接受client的請求,只不過Observer中的資料可能不是最新的資料

相關推薦

zookeeper 單機. 叢集環境搭建

zookeeper分散式系統中面臨的很多問題, 如分散式鎖,統一的命名服務,配置中心,叢集的管理Leader的選舉等 環境準備 分散式系統中各個節點之間通訊,Zookeeper保證了這個過程中 資料的唯一性,安全可靠 官網下載地址 修改配置檔案 將/conf/zoo_sample.cfg 修改成

Hadoop+HBase+ZooKeeper分散式叢集環境搭建

一、環境說明 叢集環境至少需要3個節點(也就是3臺伺服器裝置):1個Master,2個Slave,節點之間區域網連線,可以相互ping通,下面舉例說明,配置節點IP分配如下: Hostname IP User Password

ZooKeeper 系列(二)—— Zookeeper單機環境叢集環境搭建

一、單機環境搭建         1.1 下載         1.2 解壓         1.3 配置環境變數         1.4 修改配置         1.5 啟動         1.6 驗證 二、叢集環境搭建         2.1 修改配置         2.2 標識節點       

ZooKeeper系列(二)—— Zookeeper 單機環境叢集環境搭建

一、單機環境搭建 1.1 下載 下載對應版本 Zookeeper,這裡我下載的版本 3.4.14。官方下載地址:https://archive.apache.org/dist/zookeeper/ # wget https://archive.apache.org/dist/zookeeper/zookeep

ZooKeeper系列】1.ZooKeeper單機版、偽叢集叢集環境搭建

ZooKeeper安裝模式主要有3種: 單機版(Standalone模式)模式:僅有一個ZooKeeper服務 偽叢集模式:單機多個ZooKeeper服務 叢集模式:多機多ZooKeeper服務 1 單機版(Standalone模式)安裝 ZooKeeper官網下載地址:http://zookeeper.

Redis單機叢集環境搭建

一、安裝單機版redis  1、可以自己去官網下載,當然也可以用課程提供的壓縮包 # yum install gcc # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # tar -xzvf tcl8.6.1-s

Hyperledger Fabric v1.1 單機多節點叢集環境搭建

Fabric v1.1 1.環境安裝 1).安裝go 1.9.x 下載地址 http://golang.org/dl/ 配置環境 #go的安裝根目錄 export GOROOT=/usr/local/go #go的工作路徑根目錄 export GOPAT

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

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

zookeeper叢集環境搭建(純zookeeper

1.首先在三臺機子上放上zookeeper的解壓包,解壓。  然後的話zookeeper是依賴於jdk的,那麼也應該安裝jdk,這裡不詳細說明了。   mv zookeeper-3.4.5 zookeeper  修改節點為zookeeper  

zookeeper叢集環境搭建(使用kafka的zookeeper搭建zk叢集

---恢復內容開始--- 使用kafka的zookeeper來搞叢集的話和單純用zk的其實差不了多少。 0.說在前頭,搭建kafka叢集之前請把每個伺服器的jdk搞起來。 1.安裝kafka wget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafk

zookeeper叢集環境搭建

環境要求:必須要有jdk環境,本次講課使用jdk1.8 結構:一共三個節點(zk伺服器叢集規模不小於3個節點),要求伺服器之間系統時間保持一致。 我這裡三個環境IP地址分別是:192.168.128.139,192.168.128.140,192.168.128.14

linux CentOS 7下zookeeper叢集環境搭建

zookeeper說明 ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重

zookeeper叢集環境搭建詳細圖文教程

zookeeper叢集環境搭建詳細圖文教程 zhoubang @ 2018-01-02  【文件大綱】   友情介紹   軟體環境   注意點 環境安裝     1、 新建用於儲存安裝包以及軟體安裝的目錄     2、 下載安裝zookeeper     3、 解壓zoo

Zookeeper偽分散式叢集環境搭建過程

前言 ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,目前很多架構都基於它來實現配置維護、域名服務、分散式同步、組服務等等。 ZooKeeper的基本運轉流程: 1.選舉Leader 2.同步資料 3.選舉Leader過程中演算法

本地虛擬機器偽叢集dubbo-zookeeper+dubbo demo案例單機叢集服務搭建

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM

Hadoop+Flume+Kafka+Zookeeper叢集環境搭建(一)

Hadoop+Flume+Kafka+Zookeeper叢集環境搭建 1.部署基礎條件 1.1 硬體條件 IP hostname 192.168.100.103 mater 192.168.100.104 flumekafka1 192.168.1

Zookeeper叢集環境搭建實踐

--------By Dennis Hu 摘要:Zookeeper是一個很好的叢集管理工具,被大量用於分散式計算。如Hadoop以及Storm系統中。這裡簡單記錄下Zookeeper叢集環境的搭建過

Zookeeper叢集環境搭建,手寫指令碼啟動整個叢集

什麼是Zookeeper Zookeeper是一個分散式開源框架,提供了協調分散式應用的基本服務,它向外部應用暴露一組通

centos7中kafka叢集環境搭建部署

一、前期準備 1、下載kafka安裝包 官方下載地址:http://kafka.apache.org/downloads.html kafka_2.11-2.0.0.tgz   2、準備好要安裝的叢集環境的目標機器(3檯安裝centos7系統) 3、將下載好的壓縮包

Zookeeper伺服器叢集搭建與操作

ZooKeeper 作用:Zookeeper 可以用來保證資料在zk叢集之間的資料的事務性一致(原子操作)。 介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分散式協調服務。 它包含一個簡單的原語集,分散式應用程式可以基於它實現同