1. 程式人生 > 其它 >Zookeeper 叢集安裝配置

Zookeeper 叢集安裝配置

Zookeeper 是什麼?

Zookeeper是一個分散式協調服務的開源框架。主要用來解決分散式叢集中應用系統的一致性問題,例如怎樣避免同時操作同一資料造
成髒讀的問題。

  • ZooKeeper本質上是一個分散式的小檔案儲存系統。提供基於類似於檔案系統的目錄樹方式的資料儲存,並且可以對樹中的節點進行有效管理。
  • ZooKeeper提供給客戶端監控儲存在zk內部資料的功能,從而可以達到基於資料的叢集管理。諸如:統一命名服務(dubbo)、分散式配置管理(solr的配置集中管理)、分散式訊息佇列(sub/pub)、分散式鎖、分散式協調等功能。

Zookeeper 環境搭建

Zookeeper的搭建方式

Zookeeper 安裝方式有三種,單機模式和叢集模式以及偽叢集模式。

  • 單機模式:Zookeeper只執行在一臺伺服器上,適合測試環境;
  • 偽叢集模式:就是在一臺伺服器上執行多個 Zookeeper 例項;
  • 叢集模式:Zookeeper 運行於一個叢集上,適合生產環境,這個計算機叢集被稱為一個“集合體”

Zookeeper叢集搭建

下載安裝

Master 節點中
下載並解壓
首先我們下載穩定版本的zookeeper http://zookeeper.apache.org/releases.html

wget http://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz -P /opt/software

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/servers

cd /opt/servers
mv apache-zookeeper-3.7.0-bin zookeeper-3.7.0

修改配置並建立 data 和 log 目錄

# 建立 data 和 log 目錄
mkdir -p /opt/servers/zookeeper-3.7.0/data/log
# 進入配置目錄
cd /opt/servers/zookeeper-3.7.0/conf
# 複製一份配置模版並重命名
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改
dataDir=/opt/servers/zookeeper-3.7.0/data
# 新增
dataLogDir=/opt/servers/zookeeper-3.7.0/data/log
# 開啟註釋
#ZK提供了自動清理事務日誌和快照檔案的功能,這個引數指定了清理頻率,單位是小時
autopurge.purgeInterval=1

# 新增叢集配置
# server.伺服器ID=伺服器IP地址:伺服器之間通訊埠:伺服器之間投票選舉端
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

新增myid配置

1.在zookeeper的data目錄下建立一個myid檔案,內容為1,這個檔案就是記錄每個伺服器的ID

cd /opt/servers/zookeeper-3.7.0/data
echo 1 > myid

將Zookeeper分發到其他節點

cd /opt/servers
rsync-script zookeeper-3.7.0/

修改slave1和slave2的myid

# slave1 節點
echo 2 > /opt/servers/zookeeper-3.7.0/data/myid

# slave2 節點
echo 3 > /opt/servers/zookeeper-3.7.0/data/myid

啟動 Zk 例項

三個節點都要執行

/opt/servers/zookeeper-3.7.0/bin/zkServer.sh start

檢視Zk啟動情況

/opt/servers/zookeeper-3.7.0/bin/zkServer.sh status

群起 Zk 指令碼

因為每次都要在三臺機子上執行啟動命令,所以自己我們就自己寫一個啟動指令碼

cd ~ 
mkdir shells                                  
cd shells 
vim zk.sh

**將以下檔案寫如到 zk.sh 中

#!/bin/sh
echo "$1 zookeeper server..."
if(($#==0));then
echo "no param";
exit;
fi

# 此處寫上你的三臺
hosts="master slave1 slave2"

for host in $hosts
do
echo "$host server ${1}ing..."
ssh $host "source /etc/profile;/opt/servers/zookeeper-3.7.0/bin/zkServer.sh $1"
done

賦予執行許可權

chmod 777 zk.sh

啟動 / 停止 zookeeper 叢集

# 啟動
~/shells/zk.sh start
# 停止
~/shells/zk.sh stop
# 檢視服務狀態
~/shells/zk.sh status

啟動成功後所有機器上都有這個服務

jps