zookeeper系列之:獨立模式部署zookeeper服務
一、簡述
獨立模式是部署zookeeper服務的三種模式中最簡單和最基礎的模式,只需一臺機器即可,獨立模式僅適用於學習,開發和生產都不建議使用獨立模式。本文介紹以獨立模式部署zookeeper服務器的全過程,並提供一些驗證它正在運行的簡單命令。
二、先決條件
1、一臺機器,本文使用服務器為CentOS 7.3。
2、zookeeper在java虛擬機(JVM)上運行,要求JDK1.6或更高版本,所以需要安裝JDK並配置環境變量,JDK的安裝網絡上有很多教程,此處就不再贅述,本文使用JDK版本為JDK1.8。
三、下載zookeeper
下載zookeeper,一般我選擇到zookeeper檔案館中下載,既然是zookeeper檔案館,那zookeeper的各種版本,應有盡有,此處獻上連接:http://zookeeper.apache.org/releases.html。此處使用的是zookeeper-3.4.0
四、獨立模式部署zookeeper服務
1、新建目錄:在跟目錄下新建目錄/data/zookeeper。
2、上傳文件:上傳zookeeper-3.4.0.tar.gz到/data/zookeeper目錄下。
3、解壓:解壓縮包到當前目錄下,tar xzf zookeeper-3.4.0.tar.gz。
4、配置zookeeper環境變量:編輯/etc/profile文件,在文件末尾添加下列代碼:
1 export ZOOKEEPER_HOME=/data/zookeeper/zookeeper-3.4.0 2 export PATH=$PATH:$ZOOKEEPER_HOME/bin
如下圖所示:
保存文件,執行命令source /etc/profile使命令立即生效。
5、配置zookeeper
在啟動zookeeper服務之前,我們需要創建一個配置文件,用於配置zookeeper服務。這個文件習慣上命名為zoo.cfg,在解壓後的zookeeper文件下的conf目錄下可以找到zoo.cfg文件的模板文件zoo_sample.cfg,如下圖所示:
使用命令cp zoo_sample.cfg zoo.cfg復制zoo_sample.cfg文件並重命名為zoo.cfg,如下圖所示:
編輯zoo.cfg文件,修改dataDir屬性值為/data/zookeeper/zdata,如下圖所示,該屬性主要是配置zookeeper產生的數據存放的目錄。也可以為其他的目錄,前提是目錄已經存在,如果不存在,則新建。此處/data/zookeeper/zdata目錄我已經提前建好。
註釋掉屬性initLimit和syncLimit。
仔細觀察可以發現此處僅僅設置了3個屬性,分別為tickTime=2000、dataDir=/data/zookeeper/zdata、clientPort=2181。tickTime和clientPort保持默認即可,這是獨立模式下zookeeper的最低要求。附錄中會附上這3個屬性的詳細解析。
6、啟動zookeeper:由於配置了zookeeper系統環境變量,所以可以在任意路徑下執行zkServer.sh start 命令來啟動zookeeper。當然,如果沒有配置環境變量的話,只能到/data/zookeeper/zookeeper-3.4.0/bin下通過命令./zkServer.sh start來啟動zookeeper服務。如成功下圖所示:
五、驗證
驗證zookeeper服務是否啟動(或服務是否正常),其實很簡單。使用nc發送ruok命令到監聽端口,即可檢查zookeeper服務是否正在運行。命令如下:
echo ruok | nc localhost 2181檢查zookeeper服務是否運行
ruok(必須配置zookeeper環境變量後此命令才有效)命令即 Are you OK?,即詢問zookeeper服務是否安好,如果安好,也就是zookeeper服務正在運行,則打印imok(I am ok),如下圖所示:
六、客戶端連接zookeeper服務
在任意路徑下執行命令zkCli.sh -server localhost:2181連接zookeeper,如果沒有配置環境變量,需要到/data/zookeeper/zookeeper-3.4.0/bin路徑下執行./zkCli.sh -server localhost:2181,如下圖所示:
連接成功之後輸入命令ls /可以看到zookeeper服務默認已經創建了一個zookeeper節點,如下圖所示:
至此,獨立模式下部署zookeeper服務成功,接下來可以操作zookeeper啦!在下一篇博文中會介紹zookeeper的簡單操作。
附錄:上述配置文件中各變量詳解
1、tickTime屬性指定了zookeeper中的基本事件單元,以毫秒為單位。例如秒是人類的基本事件單元,人類計時以1秒、2秒、3秒.........,而zookeeper則使用我們給它設置的時間單元來計時。
2、dataDir屬性指定了zookeeper產生的數據存儲的位置,建議不要使用默認位置,該屬性值代表的路徑必須存在,zookeeper啟動時找不到該路徑會拋出異常。
3、clientPort屬性指定了zookeeper用於監聽客戶端的端口
由於能力有限,如有不足和錯誤之處,還望不吝指出!
zookeeper系列之:獨立模式部署zookeeper服務