(1)Zookeeper在linux環境中搭建集群
1.簡介
ZooKeeper是Apache軟件基金會的一個軟件項目,它為大型分佈式計算提供開源的分佈式配置服務、同步服務和命名註冊。
ZooKeeper的架構通過冗餘服務實現高可用性。
Zookeeper的設計目標是將那些複雜且容易出錯的分佈式一致性服務封裝起來,構成一個高效可靠的原語集,並以一系列簡單易用的接口提供給用戶使用。
一個典型的分佈式數據一致性的解決方案,分佈式應用程序可以基於它實現諸如數據發佈/訂閱、負載均衡、命名服務、分佈式協調/通知、集群管理、Master選舉、分佈式鎖和分佈式隊列等功能。
2.zookeeper數據結構
zookkeeper提供的名稱空間非常類似於標準文件系統,key-value的形式存儲。名稱key由斜線/分割的一系列路徑元素,zookeeper名稱空間中的每個節點都是由一個路徑標識。
2. 部署ZooKeeper集群
上面簡單介紹了ZooKeeper相關概念,下面我們來部署下ZooKeeper集群。
2.1三台linux虛擬機
IP |
master/slave |
192.168.142.129 |
slave |
192.168.142.130 |
master |
192.168.142.131 |
slave |
Java版本:java version “1.8.0_311″。
2.2下載源碼包並解壓
官網下載地址(這裡有坑,官網給了兩個安裝包,其中「apache-zookeeper-3.7.0.tar.gz 」是源碼,我們要下載「apache-zookeeper-3.7.0-bin.tar.gz」這個編譯後安裝包才對):
可以通過wget命令下載或者手動下載,安裝包存儲到linux服務器上/home/deng/packages目錄,再通過以下命令解壓安裝包:
cd /home/deng/packages mkdir /home/deng/zookeeper tar zxvf apache-zookeeper-3.7.0.tar.gz -C /home/deng/zookeeper
2.3修改環境變量
vi /etc/profile文件,在文件末尾添加以下環境變量配置:
# ZooKeeper環境變量 export ZOOKEEPER_HOME=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/ export PATH=$PATH:$ZOOKEEPER_HOME/bin
再運行以下命令使環境變量生效:
source /etc/profile
2.4重命名配置文件
初次使用ZooKeeper時,需要將$ZOOKEEPER_HOME/conf目錄下的zoo_sample.cfg重命名為zoo.cfg,zoo.cfg:
mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
2.5修改配置文件(指定數據和日誌存放目錄)
先創建數據跟日誌文件夾:
mkdir $ZOOKEEPER_HOME/data
mkdir $ZOOKEEPER_HOME/logs
編輯zoo.cfg配置文件:
vi $ZOOKEEPER_HOME/conf/zoo.cfg
修改如下:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data dataLogDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/logs clientPort=2181
因為我們部署是集群,所以多節點需要在配置文件中尾部增加如下內容:
# 集群配置 server.1=192.168.142.129:2888:3888 server.2=192.168.142.130:2888:3888 server.3=192.168.142.131:2888:3888
如圖所示:
2.6生成myid文件,用作標明當前機器
在zookeeper數據所在的目錄下(/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data)生成一個文件叫myid,其中寫上一個數字表明當前機器是哪一個編號的機器:
#192.168.142.129(slave) vi $ZOOKEEPER_HOME/data/myid 1 #192.168.142.130(master) vi $ZOOKEEPER_HOME/data/myid 2 #192.168.142.131(slave) vi $ZOOKEEPER_HOME/data/myid 3
2.7開啟防火牆端口訪問
zookeeper服務默認的端口號為2888和3888,所以需要在防火牆開啟允許訪問:
firewall-cmd --permanent --zone=public --add-port=2888/tcp firewall-cmd --permanent --zone=public --add-port=3888/tcp firewall-cmd --reload
2.8啟動Zookeeper
#切換目錄 cd /home/deng/zookeeper/apache-zookeeper-3.7.0-bin #啟動ZK服務 bin/zkServer.sh start #停止ZK服務 bin/zkServer.sh stop #重啟ZK服務 bin/zkServer.sh restart #查看ZK服務狀態 bin/zkServer.sh status
可以通過命令查看ZK服務狀態:
參考文獻:
Zookeeper-QuickStart