1. 程式人生 > >zookeeper安裝教程

zookeeper安裝教程

求和 地址 客戶 dfs 文件結構 過多 .sh 1=1 文件

Zookeeper基礎知識、體系結構、數據模型

? zookeeper是一個類似hdfs的樹形文件結構, zookeeper可以用來保證數據在(zk)集群之間的數據的事務性一致

? zookeeper有watch事件,是一次性觸發的,當watch監視的數據發生變化時,通知設置了該watch的client,即watcher

? zookeeper有三個角色: Learner, Follower, Observer

? zookeeper應用場景:

統一命名服務(Name Service)

配置管理(Configuration Management)

集群管理(Group Membership)

共享鎖(Locks)

隊列管理

1. 單機版

安裝步驟:

第一步:解壓縮壓縮包

tar -zxvf zookeeper-3.4.6.tar.gz

第二步:進入zookeeper-3.4.6目錄,創建data文件夾。

第三步:把zoo_sample.cfg改名為zoo.cfg

[root@localhost conf]# mv zoo_sample.cfg zoo.cfg

第四步:修改data屬性:dataDir=/usr/zookeeper-3.4.6/data

第五步:啟動zookeeper [root@localhost bin]# ./zkServer.sh start

關閉: [root@localhost bin]# ./zkServer.sh stop

查看狀態:[root@localhost bin]# ./zkServer.sh status

2. 偽集群版

2.1 結構:一共3個節點

2.2 解壓安裝包並在同一臺虛擬機上復制3份

tar -zxvf zookeeper-3.4.6.tar.gz –C /usr/local

mkdir /usr/local/solr-cloud

2.3 分別到每個zookeeper下修改配置文件

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg 修改三處

(1) dataDir=/usr/local/solr-cloud/zookeeper01/data

(2) 因為在同一臺服務器上裝3個zookeeper節點,所以要改客戶端連接zookeeper的端口號(zookeeper對外提供服務的端口):clientPort=2181

(3) 最後面加上節點列表,其中2881那一列指的是節點間內部通信的端口,3881那一列指的是投票選舉的端口:

server.1=192.168.1.123:2881:3881

server.2=192.168.1.123:2882:3882

server.3=192.168.1.123:2883:3883

2.4 服務器標識配置

mkdir /usr/local/solr-cloud/zookeeper01/data

在data目錄下創建一個文件myid: touch myid

填寫內容為1: vim myid (內容為服務器標識: 1)

2.5 啟動zookeeper集群

寫一個批處理可執行文件來啟動,免得麻煩

vim start_all_zookeeper.sh

在該文件中寫:

cd zookeeper01/bin

./zkServer.sh start

cd ../../

cd zookeeper02/bin

./zkServer.sh start

cd ../../

cd zookeeper03/bin

./zkServer.sh start

cd ../../

修改文件權限:chmod u+x start_all_zookeeper.sh

3. 集群版

3.1 結構:一共三個節點

(zk服務器集群規模不小於3個節點),要求服務器之間系統時間保持一致

3.2 解壓zk與環境變量配置

進行解壓: tar zookeeper-3.4.5.tar.gz

重命名: mv zookeeper-3.4.5 zookeeper

修改環境變量: vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

刷新: source /etc/profile

3.3 到zookeeper下修改配置文件

cd /usr/local/zookeeper/conf

mv zoo_sample.cfg zoo.cfg

vim zoo.cfg 修改兩處

(1)dataDir=/usr/local/zookeeper/data

(2)最後面添加

server.0=192.168.1.121:2888:3888

server.1=192.168.1.122:2888:3888

server.2=192.168.1.123:2888:3888

3.4 服務器標識配置:

在zookeeper下創建文件夾: mkdir data

在data下創建文件myid並填寫內容為0: vim myid (內容為服務器標識: 1)

復制/etc/profile文件 和zookeeper目錄到192.168.1.122和192.168.1.123把192.168.1.122、192.168.1.123中的myid文件裏的值修改為2和3

3.5 啟動zookeeper:

路徑: /usr/local/zookeeper/bin(由於上面配置了環境變量,因此這裏可以不在該路徑下啟動)
執行: zkServer.sh start(註意這裏3臺機器都要進行啟動)
狀態檢查: zkServer.sh status(在三個節點上檢驗zk的mode,一個leader和倆個follower)

3.6 操作zookeeper (shell)

zkCli.sh 進入zookeeper客戶端根據提示命令進行操作:
查找: ls / ls /zookeeper
創建並賦值: create /ygz hadoop
獲取: get /ygz
設值: set /ygz baihezhuo
可以看到zookeeper集群的數據一致性
創建節點有倆種類型:短暫(ephemeral)持久(persistent)

附:zoo.cfg詳解

tickTime: 基本事件單元,以毫秒為單位。這個時間是作為 Zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每隔 tickTime時間就會發送一個心跳。

dataDir: 存儲內存中數據庫快照的位置,顧名思義就是 Zookeeper保存數據的目錄,默認情況下, Zookeeper將寫數據的日誌文件也保存在這個目錄裏。
clientPort: 這個端口就是客戶端連接 Zookeeper 服務器的端口, Zookeeper會監聽這個端口,接受客戶端的訪問請求。
initLimit: 這個配置項是用來配置 Zookeeper接受客戶端初始化連接時最長能忍受多少個心跳時間間隔數,當已經超過 10 個心跳的時間(也就是 tickTime)長度後Zookeeper 服務器還沒有收到客戶端的返回信息,那麽表明這個客戶端連接失敗。總的時間長度就是10*2000=20 秒。

syncLimit: 這個配置項標識 Leader 與 Follower之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime的時間長度,總的時間長度就是 5*2000=10 秒server.A = B:C:D :

A表示這個是第幾號服務器,
B 是這個服務器的 ip 地址;
C 表示的是這個服務器與集群中的 Leader服務器交換信息的端口;
D 表示的是萬一集群中的 Leader服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader

zookeeper安裝教程