zookeeper安裝教程
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安裝教程