28.zookeeper單機(Standalones模式)和集羣搭建筆記

zookeeper單機(Standalones模式)和集羣搭建:
前奏:
(1).zookeeper也能夠在windows下使用,和linux同樣能夠單機也能夠集羣,具體就是解壓zookeeper-3.4.6.tar.gz,而後進入conf目錄修改配置文件zoo_sample.cfg,複製一份並更名zoo.cfg(這是默認名稱)
編輯zoo.cfg裏面的dataDir=/tmp/zookeeper(把這個路徑換成windows帶盤符的路徑,單機版就改這麼一點,集羣版參考下面的Linux環境下集羣,原理同樣.)
(2).win上啓動zookeeper,進入bin目錄雙擊zkServer.cmd便可(不要關閉控制檯),啓動客戶端鏈接zookeeper,雙擊zkCli.cmd,而後回車便可(看到[zk: localhost:2181(CONNECTED) 0]表示成功),輸入ls / 查看zookeeper裏面內容,具體命令下面Linux環境下搭建時講.
解壓目錄結構:
正式在Linux(centOS)上搭建zookeeper單機和集羣版(僞):
1.準備軟件:zookeeper-3.4.6.tar.gz,jdk-8u60-linux-i586.tar.gz(jdk6以上均可以,32/64位本身根據Linux系統決定)
2.單機安裝(#以後是命令,命令後面命令含義)
#mkdir /java/建目錄
#tar -zxvf jdk-8u60-linux-i586.tar.gz -C /java/把jdk加壓到/java目錄
#tar -zxvf zookeeper-3.4.6.tar.gz -C /java/把zookeeper也解壓到/java目錄
 
配置java環境變量(全局的);固然你能夠本身修改用戶的環境變量,在本身機器上玩不講究這些,用公司服務器就要按要求來.
#vim /etc/profile修改配置文件
在文件最後添加兩行:
JAVA_HOME=/java/jdk1.8.0_60
export  PATH=$JAVA_HOME/bin:$PATH
保存退出(vi命令不熟悉百度)
#source /etc/profile從新加載剛修改的配置文件
#java -version查看java環境變量是否成功
 
修改zookeeper配置文件
#cd /java/zk1/zookeeper-3.4.6/進入zookeeper解壓目錄
#ll 查看解壓目錄下文件和目錄結構(也能夠使用ls -al命令)
#cd conf/進入配置文件存放目錄
#ls -al 查看配置文件有哪些
#cp zoo_sample.cfg zoo.cfg 把這個配置文件示例複製一份並命名爲zoo.cfg(默認名稱,能夠本身取,本身取名zk.cfg在啓動時須要指定配置文件位置和名稱)
如今配置文件基本不須要修改了,可是能夠看看配置文件內容
#vim zoo.cfg查看或編輯配置文件(只要5個參數)
tickTime=2000
這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每隔tickTime 時間就會發送一個心跳。 
 
initLimit=10
這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader 的 Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 5*2000=10 秒。 
 
syncLimit=5
這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒。
 
dataDir=/tmp/zookeeper
顧名思義就是 Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
clientPort=2181這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
 
3.啓動zookeeper服務端
#cd ..退到上級目錄,能夠看到(conf的同級目錄bin)
#cd bin/進入bin目錄
#./zkServer.sh start ../conf/zoo.cfg啓動zookeeper服務端(若是配置文件名稱就是zoo.cfg能夠直接寫./zkServer.sh start)
啓動信息(sh bin/zkServer.sh restart重啓)
JMX enabled by default
Using config: ../conf/zoo.cfg
Starting zookeeper ... STARTED
#jps查看java進程(zookeeper基於java平臺算java進程)
進程中顯示
3109 Jps
3099 QuorumPeerMain這就是zookeeper進程(啓動成功)
4.連zookeeper客戶端
#./zkCli.shstart啓動客戶端鏈接本機zookeeper(集羣鏈接方式需指定server[./zkCli.sh -server 192.168.101.10:2181])
zookeeper命令
help查看zookeeper幫助
ls /查看zookeeper下有哪些東西
ls2 /查看當前節點數據並能看到更新次數等數據
create /zk "zz"建立zk節點,關聯字符串"zz"
get /zk查看節點內容(數據大小,建立時間,版本之類的信息)
set /zk abc設置節點內容(若是有數據會被覆蓋)
delete /zk刪除節點
quit退出客戶端
5.zookeeper集羣搭建
1.和單機同樣解壓一份
2.僞集羣搭建(和真集羣沒多大區別,只是在一臺機器上啓動3個zookeeper實例)
zookeeper內部有個選舉機制,因此zookeeper集羣須要計數臺服務器(最少3臺,3,5,7,9......)
3.一臺機器經過該端口實現同時啓動3個實例
建立3個zookeeper目錄
#mkdir -p /java/zk1在java目錄下建立zk1目錄
#mkdir -p /java/zk2在java目錄下建立zk2目錄
#mkdir -p /java/zk3在java目錄下建立zk3目錄
把單機的zookeeper複製三份放入剛建的3個目錄
#cp -r zookeeper-3.4.6/ zk1
#cp -r zookeeper-3.4.6/ zk2
#cp -r zookeeper-3.4.6/ zk3
 
建立3個zookeeper臨時文件存放目錄
#mkdir -p /java/data1在java目錄下建立data1目錄
#mkdir -p /java/data2在java目錄下建立data2目錄
#mkdir -p /java/data3在java目錄下建立data3目錄
echo "1">/java/data1/myid在目錄新建myid文件分別寫入對應id(1,2,3給zookeeper作一個標識)
echo "2">/java/data2/myid
echo "3">/java/data3/myid
4.修改zookeeper配置文件(支持集羣)
#cd /java/zk1/zookeeper-3.4.6/conf/進入zk1配置文件目錄
vim zoo.cfg修改配置文件
dataDir=/java/data1修改臨時文件目錄
clientPort=2181修改端口(3個不同就行)
***添加幾行***
server.1=192.168.101.10:2888:3888ip是本機ip,僞集羣端口3臺不同(若是是3臺機器,ip爲每一個機器ip,端口2888:3888能夠都是這個),server.1和myid文件內容id一致
server.2=192.168.101.10:2889:3889
server.3=192.168.101.10:2890:3890
同理修改另兩個zookeeper配置文件
dataDir分別指向咱們本身建的3個data目錄data1,data2,data3
clientPort三個zookeeper在一臺機器上,端口必須不一樣,搭建在三臺服務器上能夠都是2181
都須要添加後面幾行,指定集羣其餘機器ip和端口
5.集羣測試
啓動三臺zookeeper
#cd /java/zk1/zookeeper-3.4.6/bin 進入各自的bin目錄執行以下命令
#./zkServer.sh start ../conf/zoo.cfg啓動服務
#jps
三臺都啓動後就會出現3個zookeeper進程
3188 QuorumPeerMain
3099 QuorumPeerMain
3227 Jps
3135 QuorumPeerMain
 
怎麼知道誰是leader,誰是follower?
在各自的bin下執行以下命令
#./zkServer.sh status查看服務狀態
顯示信息(follower):
JMX enabled by default
Using config: ../conf/zoo.cfg
Mode: follower
顯示信息(leader):
JMX enabled by default
Using config: ../conf/zoo.cfg
Mode: leader
#./zkServer.sh restart重啓
#./zkServer.sh stop中止zookeeper服務
6.客戶端鏈接集羣
./zkCli.sh -server 192.168.101.10:2181在bin目錄下執行(鏈接具體的zookeeper)
7.java接口測試zookeeper
請看測試代碼zookeeper-test.rar(若是看不懂控制檯信息,請System.out)
 
 
3分鐘搞定
第二次搭建zookeeper集羣時的思想(實現更簡單):
僞集羣一份zookeeper,多份配置文件:
單機和集羣全在一臺機器上同時運行;
configuration.xsl
log4j.properties
zoo1.cfg
zoo2.cfg        123是集羣
zoo3.cfg
zoo.cfg默認單機
zoo_sample.cfg自帶
 
 
cd /opt/zookeeper-3.4.6/mkdir zk1
mkdir zk2
mkdir zk3
 
echo "1">zk1/myid
echo "2">zk2/myid
echo "3">zk3/myid
 
修改配置文件夾(照葫蘆畫瓢) :斜體部分
  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/opt/zookeeper-3.4.6/zk1
  13. # the port at which the clients will connect
  14. clientPort=2182
  15. server.1=192.168.20.205:2888:3888
  16. server.2=192.168.20.205:2889:3889
  17. server.1=192.168.20.205:2890:3890
  18. # the maximum number of client connections.
  19. # increase this if you need to handle more clients
  20. #maxClientCnxns=60
  21. #
  22. # Be sure to read the maintenance section of the
  23. # administrator guide before turning on autopurge.
  24. #
  25. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  26. #
  27. # The number of snapshots to retain in dataDir
  28. #autopurge.snapRetainCount=3
  29. # Purge task interval in hours
  30. # Set to "0" to disable auto purge feature
  31. #autopurge.purgeInterval=1
#啓動集羣,指定配置文件:
./zkServer.sh start ../conf/zoo1.cfg 
./zkServer.sh start ../conf/zoo2.cfg 
./zkServer.sh start ../conf/zoo3.cfg
 
#查看集羣啓動狀態,指定配置文件夾:
./zkServer.sh status ../conf/zoo1.cfg 
./zkServer.sh  status   ../conf/zoo2.cfg 
./zkServer.sh  status   ../conf/zoo3.cfg 
 
#客戶端鏈接集羣:
./zkCli.sh -server 192.168.20.205:2182
./zkCli.sh -server 192.168.20.205:2183
./zkCli.sh -server 192.168.20.205:2184
 
#啓動單機版
./zkServer.sh start
./zkServer.sh  status
 
#客戶端鏈接單機:(默認使用zoo.cfg配置文件)
./zkCli.sh
 
 
 
 
 
 





附件列表

相關文章
相關標籤/搜索