ZooKeeper運維部署的一些經驗
最近接觸dubbo+zookeeper的分散式系統,大致總結了一下ZooKeeper的整個部署流程。
什麼是ZooKeeper?
ZooKeeper是源代碼開放的分散式協調服務,由雅虎創建,是Google的開源實現。ZooKeeper是一個高性能的分散式數據一致性解決方案,他將那些複雜的、容易出錯的分散式一致性服務封裝起來,構成一個高效可靠的原語集,並提供一系列簡單易用的介面給用戶使用。
系統要求
ZooKeeper是用Java編寫,運行在Java環境上,因此,在部署zk的機器上要安裝Java運行環境。為了正常運行zk,需要JRE1.6或者以上的版本。對於集群模式下的ZooKeeper部署,ZooKeeper服務進程建議的最小進程數量為3個,而且不同的服務進程建議部署在不同的物理機器上面,以減少機器宕機帶來的風險,以實現ZooKeeper集群的高可用性。下載地址:http://mirrors.hust.edu.cn/apache/zookeeper/
工作原理
ZooKeeper分為伺服器端(Server)和客戶端(Client),客戶端可以連接到整個ZooKeeper服務的任意伺服器上。每一個Server代表一個安裝Zookeeper服務的機器,即是整個提供Zookeeper服務的集群。當ZooKeeper啟動時,將從實例中選舉一個Leader,Leader 負責處理數據更新等操作,一個更新操作成功的標誌是當且僅當大多數Server在內存中成功修改數據。
安裝步驟
解壓zookeeper-3.4.9.tar.gz到硬碟的根目錄下,然後複製zoo.cfg到…zookeeper-3.4.9conf目錄下,並修改如下參數(ZooKooper日誌)。這個路徑可自行定義,修改好之後,把對應的物理路徑文件夾建好。
最後啟動zookeeper,切換到…zookeeper-3.4.9inzkServer目錄,右擊管理員啟動zookeeper。
出現如圖任意情況,說明zookeeper部署成功。
註冊ZooKeeper服務
1、下載prunsrv,下載地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/
2、複製prunsrv.exe和prunmgr.exe至zookeeper安裝目錄下的bin目錄下。其中,prunsrv.exe是做服務的執行程序;prunmgr.exe是監控服務配置及運行的程序。
3、添加兩個環境變數,把服務名稱和安裝目錄註冊進環境變數。
4、在zookeeper-3.4.9in添加zkServerStop.cmd 文件,內容如下:
@echo off
setlocal
TASKLIST/svc|findstr/c:"%ZOOKEEPER_SERVICE%">
%ZOOKEEPER_HOME%zookeeper_svc.pid
FOR /F "tokens=2 delims= " %%GIN (%ZOOKEEPER_HOME%zookeeper_svc.pid) DO (
@set zkPID=%%G
)
taskkill /PID %zkPID% /T /F
del %ZOOKEEPER_HOME%/zookeeper_svc.pid
endlocal
5、新建一個批處理安裝文件:install.bat,內容如下:
prunsrv.exe"//IS//%ZOOKEEPER_SERVICE%" ^
--DisplayName="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
--Description="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
--Startup=auto --StartMode=exe ^
--StartPath=%ZOOKEEPER_HOME% ^
--StartImage=%ZOOKEEPER_HOME%inzkServer.cmd ^
--StopPath=%ZOOKEEPER_HOME%^
--StopImage=%ZOOKEEPER_HOME%inzkServerStop.cmd ^
--StopMode=exe --StopTimeout=5 ^
--LogPath=%ZOOKEEPER_HOME% --LogPrefix=zookeeper-wrapper ^
--PidFile=zookeeper.pid --LogLevel=Info --StdOutput=auto --StdError=auto
6、管理員身份運行install.bat。
7、服務列表中啟動ZooKeeper服務。
※為什麼要用離軸拋物面鏡聚焦
※如果幣市崩盤了,會發生什麼事情?
TAG:全球大搜羅 |