1. 程式人生 > >ZooKeeper三種安裝模式

ZooKeeper三種安裝模式

      zookeeper的安裝分為三種模式:單機模式、叢集模式和偽叢集模式。

單機模式

       首先,從Apache官網下載一個Zookeeper穩定版本,本次教程採用的是zookeeper-3.4.12版本。

tar -zxvf zookeepre-3.4.12.tar.gz

      Zookeeper伺服器包含在單個jar檔案中(本環境下為 zookeeper-3.4.12.jar),安裝此服務需要使用者自己建立一個配置檔案。預設配置檔案路徑為 Zookeeper-3.4.12/conf/目錄下,檔名為zoo.cfg。進入conf/目錄下可以看到一個zoo_sample.cfg檔案,可供參考。通過以下程式碼在conf目錄下建立zoo.cfg檔案:

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

       然後解壓zookeeper-3.4.12.tar.gz檔案到安裝目錄下:

       模板檔案中已經有基本的配置,本例需要修改的配合項為dataDir。

dataDir=/home/xxxx/zookeeper/data

在這個檔案中,各個語句的含義:
tickTime : 伺服器與客戶端之間互動的基本時間單元(ms)
dataDir : 儲存zookeeper資料路徑
dataLogDir : 儲存zookeeper日誌路徑,當此配置不存在時預設路徑與dataDir一致
clientPort : 客戶端訪問zookeeper時經過伺服器端時的埠號,預設配置為2181
  使用單機模式時需要注意,在這種配置方式下,如果zookeeper伺服器出現故障,zookeeper服務將會停止。

叢集模式

      Zookeeper最主要的應用場景是叢集,下面介紹如何在一個叢集上部署一個zookeeper。只要叢集上的大多數zookeeper服務啟動了,那麼總的zookeeper服務便是可用的。另外,最好使用奇數臺伺服器。如歌zookeeper擁有5臺伺服器,那麼在最多2臺伺服器出現故障後,整個服務還可以正常使用。
  之後的操作和單機模式的安裝類似,我們同樣需要Java環境,下載最新版的zookeeper並配置相應的環境變數。不同之處在於每臺機器上的conf/zoo.cfg配置檔案的引數設定不同,使用者可以參考下面的配置:
 

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/jxwch/server1/data
dataLogDir=/home/jxwch/server1/dataLog
clientPort=2181
server.1=10.xx.xx.xx1:2888:3888
server.2=10.xx.xx.xx2:2888:3888
server.3=10.xx.xx.xx3:2888:3888
maxClientCnxns=60

       在這個配置檔案中,新出現的語句的含義:
initLimit : 此配置表示允許follower連線並同步到leader的初始化時間,它以tickTime的倍數來表示。當超過設定倍數的tickTime時間,則連線失敗。
syncLimit : Leader伺服器與follower伺服器之間資訊同步允許的最大時間間隔,如果超過次間隔,預設follower伺服器與leader伺服器之間斷開連結。
maxClientCnxns : 限制連線到zookeeper伺服器客戶端的數量
server.id=host:port:port : 表示了不同的zookeeper伺服器的自身標識,作為叢集的一部分,每一臺伺服器應該知道其他伺服器的資訊。使用者可以從“server.id=host:port:port” 中讀取到相關資訊。在伺服器的data(dataDir引數所指定的目錄)下建立一個檔名為myid的檔案,這個檔案的內容只有一行,指定的是自身的id值。比如,伺服器“1”應該在myid檔案中寫入“1”。這個id必須在叢集環境中伺服器標識中是唯一的,且大小在1~255之間。這一樣配置中,zoo1代表第一臺伺服器的IP地址。第一個埠號(port)是從follower連線到leader機器的埠,第二個埠是用來進行leader選舉時所用的埠。所以,在叢集配置過程中有三個非常重要的埠:clientPort:2181、port:2888、port:3888。

echo 1 > /home/xxx/zookeeper/data/myid
echo 2 > /home/xxx/zookeeper/data/myid
echo 3 > /home/xxx/zookeeper/data/myid

偽叢集模式

      在zookeeper叢集配置檔案中,clientPort引數用來設定客戶端連線zookeeper伺服器的埠。server.1=IP1:2888:3888中,IP1指的是組成Zookeeper伺服器的IP地址,2888為組成zookeeper伺服器之間的通訊埠,3888為用來選舉leader的埠。由於偽叢集模式中,我們使用的是同一臺伺服器,也就是說,需要在單臺機器上執行多個zookeeper例項,所以我們必須要保證多個zookeeper例項的配置檔案的client埠不能衝突。
下面簡單介紹一下如何在單臺機器上建立偽叢集模式。首先將zookeeper-3.4.12.tar.gz分別解壓到server1,server2,server3目錄下:
 

tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server1
tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server2
tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server3

      然後在server1/data/目錄下建立檔案myid檔案並寫入“1”,同樣在server2/data/,目錄下建立檔案myid並寫入“2”,server3進行同樣的操作。

echo 1 > /home/xxx/zk/server1/data/myid
echo 2 > /home/xxx/zk/server2/data/myid
echo 3 > /home/xxx/zk/server3/data/myid

     下面分別展示在server1/conf/、server2/conf/、server3/conf/目錄下的zoo.cfg檔案:
server1/conf/zoo.cfg檔案

# Server 1
# The number of milliseconds of each tick
# 伺服器與客戶端之間互動的基本時間單元(ms)
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
# 此配置表示允許follower連線並同步到leader的初始化時間,它以tickTime的倍數來表示。當超過設定倍數的tickTime時間,則連線失敗。
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# Leader伺服器與follower伺服器之間資訊同步允許的最大時間間隔,如果超過次間隔,預設follower伺服器與leader伺服器之間斷開連結
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 儲存zookeeper資料,日誌路徑
dataDir=/home/xxx/zk/server1/data
dataLogDir=/home/xxx/zk/server1/dataLog

# the port at which the clients will connect
# 客戶端與zookeeper相互互動的埠
clientPort=2181
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890

#server.A=B:C:D  其中A是一個數字,代表這是第幾號伺服器;B是伺服器的IP地址;C表示伺服器與群集中的“領導者”交換資訊的埠;當領導者失效後,D表示用來執行選舉時伺服器相互通訊的埠。
# the maximum number of client connections.
# increase this if you need to handle more clients
# 限制連線到zookeeper伺服器客戶端的數量
maxClientCnxns=60
server2/conf/zoo.cfg檔案
# Server 2
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/xxx/zk/server2/data
dataLogDir=/home/xxx/zk/server2/dataLog

# the port at which the clients will connect
clientPort=2182
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890
server3/conf/zoo.cfg檔案
# Server 3
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/xxx/zk/server3/data
dataLogDir=/home/xxx/zk/server3/dataLog

# the port at which the clients will connect
clientPort=2182
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890

從上述三個程式碼清單可以發現,除了clientPort不同之外,dataDir和dataLogDir也不同。另外,不要忘記dataDir所對應的目錄中建立的myid檔案來指定對應的zookeeper伺服器例項。
Zookeeper位叢集模式執行

首先啟動server1伺服器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

首先啟動server2伺服器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

首先啟動server3伺服器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

 檢查分別在三臺機器上Zookeeper狀態

./zkServer.sh status

說明server1伺服器此時處於follower模式 

 

資料整理與引用
1、https://baike.baidu.com/item/zookeeper/4836397?fr=aladdin
2、https://www.cnblogs.com/endsock/p/3480093.html
3、https://www.cnblogs.com/jxwch/p/6433310.html
4、https://www.cnblogs.com/felixzh/p/5869212.html
5、https://blog.csdn.net/liu857279611/article/details/70495413
6、https://blog.csdn.net/z69183787/article/details/54730322
7、https://blog.csdn.net/z69183787/article/details/53023578
8、https://blog.csdn.net/hohoo1990/article/details/78617336 

相關推薦

ZooKeeper安裝模式

      zookeeper的安裝分為三種模式:單機模式、叢集模式和偽叢集模式。 單機模式        首先,從Apache官網下載一個Zookeeper穩定版本,本次教程採用的是zookeeper-3.4.12版本。 tar -zxvf zookeepre-3.4

Zookeeper安裝模式介紹

Zookeeper的安裝模式分為三種,分別為:單機模式、叢集模式和叢集偽分佈模式。Zookeeper單機模式的安裝比較簡單,如果第一次接觸Zookeeper的話,建議安裝Zookeeper單機模式或者叢集偽分佈模式。 1.     單機模式 Zookeeper要求java環

zookeeper安裝模式

count 最好 profile quest 清單 XA cfg 可用 故障 zookeeper的安裝分為三種模式:單機模式、集群模式和偽集群模式。 1、單機模式 首先,從Apache官網下載一個Zookeeper穩定版本,本次教程采用的是zookeeper-3.4.9版本

Hadoop的安裝模式

Hadoop的三種安裝模式 一、本地模式 二、偽分佈模式 1. hadoop-env.sh ,配置hadoop的環境; 2. hdfs-site.xml,設定資料塊的冗餘度; 3

hbase安裝模式,本地安裝、偽分佈安裝、叢集模式安裝

<property>         <name>hbase.rootdir</name>         <value>hdfs://namenode.example.org:8020/hbase</value> <

VM安裝網路模式

VMware虛擬機器有三種網路模式,分別是Bridged(橋接模式)、NAT(網路地址轉換模式)、Host-only(主機模式)。 VMware workstation安裝好之後會多出兩個網路連線,分別是VMware Network Adapter VMnet1和VMw

通過fsharp 使用Enterprise Library Unity 3 - 攔截模式的探索

clean stc ane adding clas 是什麽 idc 內部函數 ash 這篇就三種攔截模式進行一下探索。 特性總結 類型 特點 其它 InterfaceInter

設計模式工廠模式(JAVA)

bsp ati int abs @override 手機 分配 ron size 一:簡單工廠: 有一個實際工廠,這個工廠只能造一類的產品,這一類產品就是一個產品接口,會有多個具體產品實現這個接口,例 如,一個手機廠,生產蘋果手機,三星手機;

Java的代理模式

value 增加方法 三種 原始的 攔截 tro asm 必須 額外 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標對象的功能.這裏使用到

apache的工作模式

httpdweb服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式)它們分別是prefork、worker和event,它們同時也代表這Apache的 演變和發展使用httpd -V命令查看Apache的工作模式,如我安裝的httpd-2.2版本[[e

EF3:Entity Framework開發模式實現數據訪問

支持 代碼 sql blog flow cli guid 自動完成 main 前言 Entity Framework支持Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺

雲計算的服務模式:IaaS,PaaS和SaaS

雲服務 互聯網 src 部分 stand googl 而且 vnc rackspace   雲服務”現在已經成了一個家喻戶曉的詞了。如果你不知道PaaS, IaaS 和SaaS的區別,那麽也沒啥,因為很多人確實不知道。  “雲”其實是互聯網的一個隱喻,“雲計算”其實就是使用

PHP常用的設計模式

寫代碼 comment 獲得 return interface 高級 對象 檢測 mys 本文為大家介紹常用的三種php設計模式:單例模式、工廠模式、觀察者模式,有需要的朋友可以參考下。 一、首先來看,單例模式 所謂單例模式,就是確保某個類只有一個實例,而且自行實例化並向整

Apache工作模式介紹與配置

Apache工作模式查看方法 查看Apache編譯安裝的參數 worker模式原理及配置方法 prefork模式原理及配置方法 event模式原理及配置方法 Apache三種工作模式介紹與配置一、Apache的三種工作模式介紹及相關查看方法1、Apache三種工作模式簡介Apache目前一

CentOS6.5下搭建ftp服務器(認證模式:匿名用戶、本地用戶、虛擬用戶)

所有者 start 生效 用戶權限 密碼 新建 over 使用 則無 CentOS 6.5下搭建ftp服務器 vsftpd(very secure ftp daemon,非常安全的FTP守護進程)是一款運行在Linux操作系統上的FTP服務程序,不僅完全開源而且免費,此外,

Vsftpd文件傳輸服務(認證模式:匿名開放 、本地用戶、虛擬用戶)

mkdir 作用 HA 客戶端 .so ces cad art r文件 FTP是一種在互聯網中進行中文件傳輸的協議,基於客戶端/服務器端模式,默認使用20、21號端口,其中端口20(數據端口)用於進行數據傳輸,端口21(命令端口)用於接受客戶端發出的相關FTP命令與參數。

常用的設計模式 PHP代碼

static bsp urn php代碼 ati for val pri single    // 工廠模式 interface Iuser { public function getUserName(); } class UserFactory {

Apache工作模式

技術分享 允許 domain ges 當前 ipv 適用於 ESS device Apache的三種工作模式分別是:prefork、worker、event。 1. prefork模式(默認模式) profork模式實現了一種非線程、預派生的Web服務器,用的是進程去處理

【RabbitMQ】4、Exchange模式——訂閱、路由、通配符模式

message final 支持 sim 使用 完全 自己的 print ued 前兩篇博客介紹了兩種隊列模式,這篇博客介紹訂閱、路由和通配符模式,之所以放在一起介紹,是因為這三種模式都是用了Exchange交換機,消息沒有直接發送到隊列,而是發送到了交換機,經過隊列綁定交

詳解 Java 中的代理模式

繼承 jvm 保存 3.2 指令集 throwable eth args 代理類 代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標