Zookeeper的安裝和配置十分簡單,既可以配置成單機模式,也可以配置成集群模式
下載zookeeper的安裝包之后,解壓到合適目錄。
單機模式
進入zookeeper目錄下的conf子目錄,創建zoo.cfg(conf/zoo_sample.cfg是默認配置文件)
tickTime=2000
dataDir=/Application/zookeeper/data
dataLogDir=/Application/zookeeper/logs
clientPort=4180
- tickTime: zookeeper中使用的基本時間單位,毫秒值
- dataDir: 數據目錄,可以是任意目錄
- dataLogDir: log目錄,同樣可以是任意目錄。如果沒有設置該參數,將使用和dataDir相同的設置
- clientPort: 監聽client連接的端口號
至此,zookeeper的單機模式已經配置好了。啟動server只需運行腳本:
$ bin/zkServer.sh start
Server啟動之后,就可以啟動client連接server了,執行腳本:
$ bin/zkCli.sh -server localhost:4180
偽集群模式
所謂偽集群,是指在單臺機器中啟動多個zookeeper進程,并組成一個集群。以啟動3個zookeeper進程為例
將zookeeper的目錄拷貝2份:
|--zookeeper0
|--zookeeper1
|--zookeeper2
更改zookeeper0/conf/zoo.cfg文件:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/Application/zookeeper0/data
dataLogDir=/Application/zookeeper0/logs
clientPort=4180
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
新增參數的含義:
- initLimit: 集群中的包含多臺server,其中一臺為leader,其余的server為follower。initLimit參數配置初始化連接時,follower和leader之間的最長心跳時間。此時該參數設置為5,說明時間限制為5倍tickTime,即5*2000=10000ms=10s
- syncLimit: 該參數配置leader和follower之間發送消息,請求和應答的最大時間長度。此時該參數設置為2,說明時間限制為2倍tickTime,即4000ms
- server.X=A:B:C 其中X是一個數字,表示這是第幾號server。A是該server所在的IP地址。B配置該server和集群中的leader交換消息所使用的端口。C配置選舉leader時所使用的端口。由于配置的是偽集群模式,所以各個server的B,C參數必須不同
參照zookeeper0/conf/zoo.cfg,配置zookeeper1/conf/zoo.cfg和zookeeper2/conf/zoo.cfg文件只需更改dataDir、dataLogDir、clientPort參數即可
在之前設置的dataDir中新建myid文件,寫入一個數字,該數字表示這是第幾號server,該數字必須和zoo.cfg文件中的server.X中的X一一對應:
/zookeeper0/data/myid文件中寫入0
/zookeeper1/data/myid文件中寫入1
/zookeeper2/data/myid文件中寫入2
分別進入三個zookeeper下的bin目錄,啟動server
$ bin/zkServer.sh start
任意選擇一個server目錄,啟動客戶端
$ bin/zkCli.sh -server localhost:4180
集群模式
集群模式的配置和偽集群基本一致
由于集群模式下,各server部署在不同的機器上,因此各server的conf/zoo.cfg文件可以完全一樣
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=4180
server.43=10.1.39.43:2888:3888
server.47=10.1.39.47:2888:3888
server.48=10.1.39.48:2888:3888
需要注意的是, 各server的dataDir目錄下的myid文件中的數字必須與對應的server.X的X相同