大資料規整-10-zookeeper單機叢集安裝和使用

皮皮冰燃發表於2020-12-17

從華科大的映象地址進行下載
http://mirrors.hust.edu.cn/apache

ZooKeeper的叢集模式下,多個Zookeeper伺服器在工作前會選舉出一個Leader,在接下來的工作中這個被選舉出來的Leader死了,而剩下的Zookeeper伺服器會知道這個Leader死掉了,在活著的Zookeeper叢集中會繼續選出一個Leader,選舉出Leader的目的是為了可以在分散式的環境中保證資料的一致性。
確認叢集伺服器的數量
由於ZooKeeper叢集中,會有一個Leader負責管理和協調其他叢集伺服器,因此伺服器的數量通常都是單數,例如3,5,7…等,這樣2n+1的數量的伺服器就可以允許最多n臺伺服器的失效。

1 zookeeper單機叢集模式

1.1 指令碼install_zookeeper.sh

(1)配置,主要更改zookeeper的資料存放地址和日誌地址
install_zookeeper.sh

#! /bin/bash
## author:zb
## date:2020.10.24
## 需要提前定義好的資訊
myidvalue="1"
hostname=`cat /etc/hostname`

echo '開始安裝zookeeper'

echo '(1)解壓'
tar -xzvf zookeeper-3.4.8.tar.gz -C /usr/local

echo '(2)配置環境變數ZOOKEEPER_HOME'
ZOOKEEPER_HOME='/usr/local/zookeeper-3.4.8'
echo "export ZOOKEEPER_HOME=${ZOOKEEPER_HOME}" >> /root/.bashrc
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /root/.bashrc
source /root/.bashrc

echo '(3)建立資料和日誌目錄'
mkdir -p ${ZOOKEEPER_HOME}/data
mkdir -p ${ZOOKEEPER_HOME}/datalog

echo '(4)建立myid檔案'
cd ${ZOOKEEPER_HOME}/data
touch myid
echo ${myidvalue} >> myid

echo '(5)修改配置檔案zoo.cfg'
cd ${ZOOKEEPER_HOME}/conf
echo "tickTime=2000" >> zoo.cfg
echo "initLimit=10" >> zoo.cfg
echo "syncLimit=5" >> zoo.cfg
echo "dataDir=${ZOOKEEPER_HOME}/data" >> zoo.cfg
echo "dataLogDir=${ZOOKEEPER_HOME}/datalog" >> zoo.cfg
echo "clientPort=2181" >> zoo.cfg
echo "server.1=${hostname}:2888:3888" >> zoo.cfg

注意寫入的配置檔案zoo.cfg的內容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.8/data
dataLogDir=/usr/local/zookeeper-3.4.8/datalog
clientPort=2181
server.1=pda1:2888:3888

注意建立的配置檔案myid中的內容如下:

1

除了修改 zoo.cfg 配置檔案,叢集模式下還要配置一個檔案 myid,這個檔案在 dataDir 目錄下,這個檔案裡面就只有一個資料就是 A 的值,Zookeeper 啟動時會讀取這個檔案,拿到裡面的資料與 zoo.cfg 裡面的配置資訊比較從而判斷到底是哪個server。注意:myid檔案要自己建立,在dataDir目錄下。

1.2 引數說明

(1)tickTime:這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會傳送一個心跳。

(2)dataDir:顧名思義就是 Zookeeper 儲存資料的目錄,預設情況下,Zookeeper 將寫資料的日誌檔案也儲存在這個目錄裡。
clientPort:這個埠就是客戶端連線 Zookeeper 伺服器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求。

(3)initLimit:這個配置項是用來配置Zookeeper接受客戶端初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間長度後Zookeeper伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是52000=10秒(即tickTimeinitLimit=10秒)。這裡所說的客戶端不是使用者連線Zookeeper伺服器的客戶端,而是Zookeeper伺服器叢集中連線到Leader的Follower伺服器

(4)syncLimit:這個配置項標識Leader與Follower之間傳送訊息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是2*2000=4秒。

(5)server.A=B:C:D配置項
A:這是一個數字,表示這是第幾號伺服器
B:A伺服器的IP地址
C:通訊埠,即A伺服器與叢集中的 Leader 伺服器交換資訊的埠
D:選舉通訊埠,表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

2 啟動

zkServer.sh start
zkServer.sh status檢視服務狀態
在這裡插入圖片描述啟動之後檢視狀態,雖然是按照叢集的模式配置的,但是因為只有一個節點的緣故,導致模式顯示為standalone。

3 客戶端連線

#zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 2] create /zk “test”
[zk: 127.0.0.1:2181(CONNECTED) 3] get /zk獲取節點zk所包含的資訊
[zk: 127.0.0.1:2181(CONNECTED) 1] quit退出客戶端

相關文章