ZooKeeper:win7上安装单机及伪分布式安装
zookeeper是一個為分布式應用所設計的分布式的、開源的調度服務,它主要用來解決分布式應用中經常遇到的一些數據管理問題,簡化分布式應用,協調及其管理的難度,提高性能的分布式服務。
本章的目的:如何安裝zookeeper(在win7環境下),zookeeper下載https://mirrors.cnnic.cn/apache/zookeeper/。這里下載的版本是3.4.8.
zoomkeeper本身是可以單節點模式安裝運行,不過一般為了確保zookeeper的穩定性和可用性,都會采用分布式部署,也進而保證了分布式應用的可靠性。它在分布式zookepper集群中,會基于選舉算法來實現一個leader,多個follower。
參考文章:http://blog.csdn.net/lovesummerforever/article/details/48975703
單節點安裝:
1)下載zookeeper-3.4.8.tar.gz,并解壓到目錄:D:\Work\zookeeper\zookeeper-3.4.8下
2)進入conf目錄下把zoo_sample.cfg文件重名為:zoo.cfg,并修改配置為如下:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\Work\\zookeeper\\data # log config dataLogDir=D:\\Work\\zookeeper\\log # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=13)啟動zookeeper服務:
進入目錄:D:\Work\zookeeper\zookeeper-3.4.8\bin,執行zkServer.cmd,這樣就啟動了zookeeper服務了。
--啟動打印信息 D:\Work\zookeeper\zookeeper-3.4.8\bin>zkServer.cmdD:\Work\zookeeper\zookeeper-3.4.8\bin>call "D:\Program Files\Java\jdk1.8.0_111"\bin\java "-Dzookeeper.log.dir=D:\Work\zookeeper\zookeeper-3.4.8\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Work\zookeeper\zookeeper-3.4.8\bin\..\build\classes;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\build\lib\*;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\*;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\lib\*;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\Work\zookeeper\zookeeper-3.4.8\bin\..\conf\zoo.cfg" 2017-09-09 21:02:58,180 [myid:] - INFO [main:QuorumPeerConfig@103] - Reading configuration from: D:\Work\zookeeper\zookeeper-3.4.8\bin\..\conf\zoo.cfg 2017-09-09 21:02:58,204 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3 2017-09-09 21:02:58,205 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0 2017-09-09 21:02:58,205 [myid:] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled. 2017-09-09 21:02:58,211 [myid:] - WARN [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running in standalone mode 2017-09-09 21:02:58,445 [myid:] - INFO [main:QuorumPeerConfig@103] - Reading configuration from: D:\Work\zookeeper\zookeeper-3.4.8\bin\..\conf\zoo.cfg 2017-09-09 21:02:58,446 [myid:] - INFO [main:ZooKeeperServerMain@95] - Starting server 2017-09-09 21:02:58,769 [myid:] - INFO [main:Environment@100] - Server environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT 2017-09-09 21:02:58,772 [myid:] - INFO [main:Environment@100] - Server environment:host.name=192.168.233.1 2017-09-09 21:02:58,777 [myid:] - INFO [main:Environment@100] - Server environment:java.version=1.8.0_111 2017-09-09 21:02:58,778 [myid:] - INFO [main:Environment@100] - Server environment:java.vendor=Oracle Corporation 2017-09-09 21:02:58,780 [myid:] - INFO [main:Environment@100] - Server environment:java.home=D:\Program Files\Java\jdk1.8.0_111\jre 2017-09-09 21:02:58,782 [myid:] - INFO [main:Environment@100] - Server environment:java.class.path=D:\Work\zookeeper\zookeeper-3.4.8\bin\..\build\classes;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\build\lib\*;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\zookeeper-3.4.8.jar;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\lib\jline-0.9.94.jar;D:\Work\zookeeper\zookeeper-3.4.8\bin\..\lib\log4j-1.2.16.jar;。。。2017-09-09 21:02:58,784 [myid:] - INFO [main:Environment@100] - Server environment:java.library.path=D:\Program Files\Java\jdk1.8.0_111\bin;D:\Program Files\Java\jdk1.8.0_111\bin;D:\Program Files\Java\jdk1.8.0_111\jre\bin; . 2017-09-09 21:02:58,789 [myid:] - INFO [main:Environment@100] - Server environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\ 2017-09-09 21:02:58,791 [myid:] - INFO [main:Environment@100] - Server environment:java.compiler=<NA> 2017-09-09 21:02:58,800 [myid:] - INFO [main:Environment@100] - Server environment:os.name=Windows 7 2017-09-09 21:02:58,801 [myid:] - INFO [main:Environment@100] - Server environment:os.arch=amd64 2017-09-09 21:02:58,804 [myid:] - INFO [main:Environment@100] - Server environment:os.version=6.1 2017-09-09 21:02:58,811 [myid:] - INFO [main:Environment@100] - Server environment:user.name=Administrator 2017-09-09 21:02:58,813 [myid:] - INFO [main:Environment@100] - Server environment:user.home=C:\Users\Administrator 2017-09-09 21:02:58,816 [myid:] - INFO [main:Environment@100] - Server environment:user.dir=D:\Work\zookeeper\zookeeper-3.4.8\bin 2017-09-09 21:02:58,849 [myid:] - INFO [main:ZooKeeperServer@787] - tickTime set to 2000 2017-09-09 21:02:58,851 [myid:] - INFO [main:ZooKeeperServer@796] - minSessionTimeout set to -1 2017-09-09 21:02:58,852 [myid:] - INFO [main:ZooKeeperServer@805] - maxSessionTimeout set to -1 2017-09-09 21:03:00,548 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181--當客戶端啟動后,就立即打印出來以下信息: 2017-09-09 21:05:23,463 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted socket connection from /127.0.0.1:33988 2017-09-09 21:05:23,483 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@900] - Client attempting to establish new session at /127.0.0.1:33988 2017-09-09 21:05:23,496 [myid:] - INFO [SyncThread:0:FileTxnLog@199] - Creating new log file: log.1 2017-09-09 21:05:23,542 [myid:] - INFO [SyncThread:0:ZooKeeperServer@645] - Established session 0x15e66bc75ec0000 with negotiated timeout 30000 for client /127.0.0.1:339884)啟動客戶端
進入目錄:D:\Work\zookeeper\zookeeper-3.4.8\bin,執行zkCli.cmd -server 127.0.0.1:2181,這樣就啟動了zookeeper服務了。
D:\Work\zookeeper\zookeeper-3.4.8\bin>zkCli.cmd -server 127.0.0.1:2181 Connecting to 127.0.0.1:2181 2017-09-09 21:05:21,934 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT 2017-09-09 21:05:21,942 [myid:] - INFO [main:Environment@100] - Client environment:host.name=192.168.233.1 2017-09-09 21:05:21,943 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_111 2017-09-09 21:05:21,947 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 2017-09-09 21:05:21,948 [myid:] - INFO [main:Environment@100] - Client environment:java.home=D:\Program Files\Java\jdk1.8.0_111\jre 2017-09-09 21:05:21,949 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=D:\Work\zookeeper\zookeeper-3.4.8\bin\..\build\classes;D:\Work\zookeeper\zookeeper-3.4.8\bin\..。。。。; . 2017-09-09 21:05:21,960 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\ 2017-09-09 21:05:21,963 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA> 2017-09-09 21:05:21,965 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Windows 7 2017-09-09 21:05:21,967 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64 2017-09-09 21:05:21,969 [myid:] - INFO [main:Environment@100] - Client environment:os.version=6.1 2017-09-09 21:05:21,973 [myid:] - INFO [main:Environment@100] - Client environment:user.name=Administrator 2017-09-09 21:05:21,975 [myid:] - INFO [main:Environment@100] - Client environment:user.home=C:\Users\Administrator 2017-09-09 21:05:21,977 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=D:\Work\zookeeper\zookeeper-3.4.8\bin 2017-09-09 21:05:21,983 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7aec35a Welcome to ZooKeeper! 2017-09-09 21:05:23,459 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 2017-09-09 21:05:23,464 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session JLine support is enabled [zk: 127.0.0.1:2181(CONNECTING) 0] 2017-09-09 21:05:23,548 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1299] - Session establishmentcomplete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x15e66bc75ec0000, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null這樣就安裝完成了單節點zookeeper服務。
?偽分布式安裝:
偽分布式安裝就是在同一臺pc上安裝,安裝時使用同一個zookeeper包,多個配置文件分別配置為不同的端口。
1)將D:\Work\zookeeper\zookeeper-3.4.8\conf\下的zoo.cfg分別復制出文件zoo1.cfg,zoo2.cfg,zoo3.cfg三個文件,分別修改配置為:
zoo1.cfg
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\Work\\zookeeper\\data\\1 # log config dataLogDir=D:\\Work\\zookeeper\\log\\1 # the port at which the clients will connect clientPort=2181server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889zoo2.cfg
# do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\Work\\zookeeper\\data\\2 # log config dataLogDir=D:\\Work\\zookeeper\\log\\2 # the port at which the clients will connect clientPort=2182server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889zoo3.cfg
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\\Work\\zookeeper\\data\\3 # log config dataLogDir=D:\\Work\\zookeeper\\log\\3 # the port at which the clients will connect clientPort=2183server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889?備注:
假設把配置文件表示為:zoo{num}.cfg, server.{num}=ip/domain:Port1:Port2
其中num:表示數字表示第幾號服務器;ip/domain?:是服務器域名或者ip地址。
?Port1:表示這個服務器和集群中的Leader服務器交換信息的端口;
Port2:表示萬一集群中的Leader服務器掛了,需要一個端口重新進行選舉,選出一個新的Leader,這個端口就是用來執行選舉時服務器相互通信的端口。
? ? ? ??由于我們是偽集群,所以ip或者域名是一樣的,所以要分配不同的端口號
2)創建目錄D:\Work\zookeeper\data\1,D:\Work\zookeeper\data\2,D:\Work\zookeeper\data\3
分別在三個文件下創建myid文件,文件內容依次為:1,2,3
3)進入D:\Work\zookeeper\zookeeper-3.4.8\bin下復制文件zkServer.cmd為zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd
zkServer-1.cmd內容修改為如下:
setlocal call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain set ZOOCFG=D:\\Work\\zookeeper\\zookeeper-3.4.8\\conf\\zoo1.cfgecho on call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocalzkServer-2.cmd內容修改為如下:
setlocal call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain set ZOOCFG=D:\\Work\\zookeeper\\zookeeper-3.4.8\\conf\\zoo2.cfgecho on call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocalzkServer-3.cmd內容修改為如下:
setlocal call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain set ZOOCFG=D:\\Work\\zookeeper\\zookeeper-3.4.8\\conf\\zoo3.cfgecho on call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocal4)分別啟動zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd
進入目錄:D:\Work\zookeeper\zookeeper-3.4.8\bin,分布執行zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd,啟動偽分布式zookeeper集群,啟動過程中如果前兩個啟動的服務戶出現異常情況為正常,直到3個zkServer-x.cmd都啟動完后就不會出現異常情況。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的ZooKeeper:win7上安装单机及伪分布式安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linq入门博客系列地址http://w
- 下一篇: 02-Unity深入浅出(二)